KMeans算法理论

来源:互联网 发布:网络女主播唱歌视频 编辑:程序博客网 时间:2024/06/05 07:17

(一)KMeans概念

聚类(clustering) 属于非监督学习 (unsupervised learning)无类别标记(class label)是区别于分类的最重要特征,数据集中没有关于样本应该分到哪个类别的标示,需要依据数据本身和特征进行训练,人为的设置分类个数这个超参数.

(二)基本思想是:

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



(三)算法描述:

    1)适当选择c个类的初始中心;

    2)在第k次迭代中,对任意一个样本,求其到c各中心的距离,将该样本归到距离最短的中心所在类;

    3)利用均值等方法更新该类的中心值;

    4)对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。



(四)目标函数

         其中每一个中心的均值计算公式如下:




       我们的目标是最小化上面的公式


在数据空间上随机取K个聚类点

每一次迭代包含两步:

1 簇的重新赋值 2中心点的更新

每一点被赋值给距离这个中心最近簇,簇中所以点的均值和中心点在加入新的元素后更新,知道中心点不再改变为止。



(五)案例

我们在 [2,3,,4,10,11,12,20,25,30]这几个数据中,聚两个类

初始化选择的是2    4作为聚类中心点




计算中心点






重新依据均值,选择到这两个均值最近的点


2 3  4划归为1类,这时候4是经过第一步的依据初始化2 4两个聚类中心点后在第二步被归为第一个类别了


下面可视化这个迭代过程:




最后形成的聚类簇是




簇中心点    7  25







tips 算法复杂度:

计算每一个点与K个簇之间的距离,在d维空间需要d次操作,所以计算簇 需要O(nkd),中心点重新计算需要O(nd)的时间,共处理n个d维点,假如执行t次迭代,则kmeans算法的总时间是O(tnkd),空间复杂度,一共需要进行O(t)次扫描。