zoukankan      html  css  js  c++  java
  • 【机器学习】K均值算法(I)

    K均值算法是一类非监督学习类,其可以通过观察样本的离散性来对样本进行分类。

    例如,在对如下图所示的样本中进行聚类,则执行如下步骤

    1:随机选取3个点作为聚类中心。

    2:簇分配:遍历所有样本然后依据每个点到最近距离进行分类。(在图 中用不同颜色标出)

    3:移动聚类中心到各个分类样本的平均中心。

    然后再次根据新的聚类中心划分分类簇,原理同步骤2,再执行步骤3 不断循环,直到聚类中心保持不变。

    最后结果:

    如果用μ1 μ2---μ k来表示聚类中心,用c 1 c 2---c m 用来存储第i个实例数据最近的聚类中心索引,k-均值算法如下:

    repeat{

    for i = 1 to m

    c i := index(from1 to K)索引中最接近x(i)的聚类.

    for k = 1 to K

    μ k := 所有该聚类点的几何平均值 

    }

    算法分为两个部分,第一个for循环是赋值的步骤,即就是对于每一个样例i,计算其应该属于的类。

    第二个for循环是聚类中心的移动,即对于每一个类k,重新计算该类的质心。

    K均值算法也可以很便利的用在讲数据分组,即使没有很明显区分的情况下。

    优化目标:

    k均值最小化问题,是要最小化所有的数据点与其说关联的聚类中心点之和,因此K均值函数又称畸变函数。

    如图所示的畸变函数中,μc(i)代表x(i)最近的聚类中心点。我们的优化目标便是找到是的代价函数最小的c1 c2 ...c m和μ1 μ2 ...μk

    回顾刚才所给出的K均值迭代算法,我们知道,第一循环用于减小c i 引起的代价,二第二个循环的作用是用于减小μ i引起的代价。迭代过程中一定是每一次迭代都在减小代价函数,不然便会出现错误。

  • 相关阅读:
    解析网页源码方式
    vue踩坑--细节决定成败
    fallowing-travelvue
    学会不怕
    eslint代码规范检测
    三次握手+四次挥手
    小白的学习笔记
    es6数组
    css知识整理
    JavaScript之事件循环,宏任务与微任务
  • 原文地址:https://www.cnblogs.com/KID-XiaoYuan/p/7368049.html
Copyright © 2011-2022 走看看