白话机器学习算法(四)K-means

来源:互联网 发布:淘宝综合排名搜不到 编辑:程序博客网 时间:2024/05/16 19:53

http://blog.csdn.net/wangxin110000/article/details/22094675

K-means算法是一种无监督聚类算法,还是打个比方吧:

1):现在房间里有一群人,各自随机站在房间里,这时候有个上帝,随机挑选了房间里K个人当K个小组的领导;

2):选完领导,每个人开始站队了,找离自己最近的那个领导,表示自己是那一队的;

3):站完队,大家开始不满了,要求重新选领导,选谁?选这一小组的中心位置的人当领导!

4):由于领导换了,大家又要重新站队。

然后重新选领导,重新站队。。。。。。。

5):这样子直到每个小组选的领导跟上次选的领导没啥变化,说明再重选就没意义了。。。。算法收敛;


K-means并不一定能选出一个全局最优解,就像上面说的,作为个体来说,相对于“当前”情况,我没更好的选择,因为大家可能走到一个死胡同里了。。。。。

这种思想就是期望最大化的思想,以当前的聚类中心估计下一次聚类中心,至于最后为啥会收敛,可以参考EM的证明!

期望最大化可以是一个算法也可以是一种思想,这种思想在很多算法中都有应用,只是具体形式不同。


最终K-means的结果取决于初始k个点,以及k的大小,一般来说,我们可以随机选取,多试验几次,选取SSE  (SUM SQUARE ERROR)最小的那次作为结果,但是当数据很大的时候,我们不能这么做,因为太耗时间,应该用改进的K-means算法:比如先对数据采样进行一次层次聚类,得到若干个中心,作为初始点;

层次聚类听上去很简单,但是却应用非常广泛,他能保持小聚类块有很好的内聚性,这是很好的特性;


0 0
原创粉丝点击