攻城狮凌风

Kmeans

1.基本思想

    聚类属于无监督学习,以往的回归、朴素贝叶斯、SVM等都是有类别标签y的,也就是说样例中已经给出了样例的分类。而聚类的样本中却没有给定y,只有特征x,比如假设宇宙中的星星可以表示成三维空间中的点集clip_image002[10]。聚类的目的是找到每个样本x潜在的类别y,并将同类别y的样本x放在一起。比如上面的星星,聚类后结果是一个个星团,星团里面的点相互距离比较近,星团间的星星距离就比较远了。

     在聚类问题中,给我们的训练样本是clip_image004,每个clip_image006,没有了y。

     K-means算法是将样本聚类成k个簇(cluster),具体算法描述如下:

1、 随机选取k个聚类质心点(cluster centroids)为clip_image008[6]

2、初始分类

         对于每一个样例i,计算其应该属于的类

               clip_image009


3、 重复下面过程直到收敛 {

               重新分配:对于样例i,假设将其分给其它集合。判断集合时最小的代价情况,将样例i分   给新集合

               质心重计算。对于每一个类j,重新计算该类的质心

               clip_image010[6]

}



2.性能分析

        算法本质是面向非凸代价函数优化下的贪婪下降求解算法,仅仅能获得局部最优解。聚类思想比较简单明了,并且聚类效果也还算可以,算是一种简单高效应用广泛。隐含假设,数据呈高斯球分布。可以实现对数据进行白化操作用以获得较好的效果。但是数据存在非凸形状的聚类时,只要找到数据间合适的偏差度量方法,仍然可以保证算法收敛。

       (1)算法简单,但是计算量很大。

       (2)离群点的影响较大。

      (3)不恰当的初始聚类中心机器影响结果。其初始类数较难判断。

      (4)开源库较多。Weka,SAS中对应算法为FastClus.








参考:

       1.K-means聚类算法


posted on 2015-09-04 16:36  攻城狮凌风  阅读(259)  评论(0编辑  收藏  举报

导航