K-means算法原理

K-means, 聚类(clustering) 属于非监督学习 (unsupervised learning),无类别标记。Clustering 中的经典算法,数据挖掘十大经典算法之一,其运算速度比较快,而且简单。但是最终的结果和初始点的选择有关,容易陷入局部最优,且需要知道K的值。

K-means算法

 1. 算法接受参数 k ;然后将事先输入的n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一
       聚类中的对象相似度较高;而不同聚类中的对象相似度较小。
 2.算法思想:
       以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心     
       的值,直至得到最好的聚类结果
 3.算法描述:

      (1)适当选择c个类的初始中心;
      (2)在第k次迭代中,对任意一个样本,求其到c各中心的距离,将该样本归到距离最短的中心所在     
              的类;
      (3)利用均值等方法更新该类的中心值;
      (4)对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。

算法流程

      输入:k, data[n];
      (1) 选择k个初始中心点,例如c[0]=data[0],…c[k-1]=data[k-1];
      (2) 对于data[0]….data[n], 分别与c[0]…c[k-1]比较,假定与c[i]差值最少,就标记为i;
      (3) 对于所有标记为i点,重新计算c[i]={ 所有标记为i的data[j]之和}/标记为i的个数;
      (4) 重复(2)(3),直到所有c[i]值的变化小于给定阈值。

举例

K-means算法原理_第1张图片
假设我们现在总共有四个点,和两个初始中心点(以红星标记)
四个点坐标:A(1,1);B(2,1);C(4,3);D(5,4)
中心点坐标:C1(1,1) ;C2(2,1)

这里写图片描述

D°表示中心点到各个点的距离。

由于A点到中心点C1最近,而BCD三点到中心点C2比到C1进,所以:
A点归为第一类,BCD归为第二类。
这里写图片描述

根据归类重新计算中心点。只有A点属于第一类,BCD属于第二类,我们对每一类所有的点求均值
所以:
C1=A=(1,1)
这里写图片描述
下图是更新过后的
K-means算法原理_第2张图片
C1不变,C2的位置已经发生了变化。然后我们重复上面的步骤
这里写图片描述
此时由于A点B点到C1点的距离小于到C2的距离,所以AB点归为一类;C点D点到C2点的距离小于到C1点的距离,所以CD点归为一类
这里写图片描述
重新计算中心点C1和C2。
这里写图片描述
更新后的图如下:
K-means算法原理_第3张图片
再次重复上面的步骤
这里写图片描述
此时A点和B点到C1的距离还是小于到C2的距离,C点和D点到C2的距离还是小于到C1的距离归类没有任何的变化,所以算法终止,聚类结束。
这里写图片描述

你可能感兴趣的:(机器学习)