您的位置:首页 > 其它

机器学习--K-means算法(聚类,无监督学习)

2015-12-15 10:35 323 查看
一、基本思想

  聚类属于无监督学习,以往的回归、朴素贝叶斯、SVM等都是有类别标签y的,也就是说样例中已经给出了样例的分类。而聚类的样本中却没有给定y,只有特征x,比如假设宇宙中的星星可以表示成三维空间中的点集

。聚类的目的是找到每个样本x潜在的类别y,并将同类别y的样本x放在一起。比如上面的星星,聚类后结果是一个个星团,星团里面的点相互距离比较近,星团间的星星距离就比较远了。

二、算法步骤

K-means算法是将样本聚类成k个簇(cluster),具体算法描述如下:
1、 随机选取k个聚类质心点(cluster centroids)为


2、 重复下面过程直到收敛 {
               对于每一个样例i,计算其应该属于的类
               


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


}
三、代码实现(matlab)
四、k-means 和EM 的关系思考

K-means来说就是我们一开始不知道每个样例

对应隐含变量也就是最佳类别

。最开始可以随便指定一个

给它,然后为了让P(x,y)最大(这里是要让J最小),我们求出在给定c情况下,J最小时的

(前面提到的其他未知参数),然而此时发现,可以有更好的

(质心与样例

距离最小的类别)指定给样例

,那么

得到重新调整,上述过程就开始重复了,直到没有更好的

指定。这样从K-means里我们可以看出它其实就是EM的体现,E步是确定隐含类别变量

,M步更新其他参数

来使J最小化。这里的隐含类别变量指定方法比较特殊,属于硬指定,从k个类别中硬选出一个给样例,而不是对每个类别赋予不同的概率。总体思想还是一个迭代优化过程,有目标函数,也有参数变量,只是多了个隐含变量,确定其他参数估计隐含变量,再确定隐含变量估计其他参数,直至目标函数最优。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: