当前位置: 首页 > 数据挖掘 > 正文

数据挖掘:Top 10 Algorithms in Data Mining(二)K-Means算法

关键字:
1 星2 星3 星4 星5 星 (2 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

先引用IDMer整理的图初步了解下K-means
k1
k2
K-means也被称为C-means,因为它的目标是要找到c个均值向量u1,u2,……uc。除上面提到的用处,k-means还常用于加速其它算法的收敛。聚类算法主要有两类:硬聚类和软聚类(FCM)。K-means属于前者。

K-means的两大难点是确定c的数值和避免算法的抖动(不稳定性)。对这两个问题都有大量的针对性的研究。

算法的伪代码为:

Begin initialize n,c,u1,u2,……uc
               Do 按照最近邻ui分类n个样本
                              重新计算ui
               Until ui 不再改变
      Return u1,u2,……uc
End

其复杂度为O(ndcT),d表示特征数量;T为迭代次数。实际应用中通常迭代次数都不会太多。

硬聚类k-means

在该算法中任意样本属于类别i的概率要么是1要么是0. 所以在计算过程中距离度量算法确定之后,只需要计算样本离哪类的聚类中心近就将该样本划分为哪类,即样本属于该类的概率为1,属于其它c-1类的概率都为0. 这样的规则使得计算简单。但最后的聚类结果容易出现局部最优。因此,在次基础上,模糊K-means被提出,我们通常我们称为FCM(Fuzzy C-Means)。

k3

K-means聚类2维数据的迭代轨迹,图中用Voronoi网格标出分类结果。Voronoi单元中心即为聚类中心

软聚类FCM

在FCM中每个样本属于某类别的概率不是绝对的1或0,而是介于[0~1]之间的一个值。样本属于所有类别的概率和为1. 该样本在当前迭代中属于哪类的概率最大就将该样本划分到哪类中。

FCM算法伪代码:

 
 begin initialize n,c,b, u1,u2,……uc, P(wi|xj),i=1,2……c;j=1,2,……n
                              归一化, P(wi|xj)
                              do 重新计算ui
                                             重新计算P(wi|xj)
                              until ui和P(wi|xj)变化很小
                return u1,u2,……uc
 End

常用的结束条件:

u1,u2,……uc的变化小于某个阈值
迭代次数T大于某个阈值。
由于对不熟悉的样本的收敛速度未知,通常两个条件都会设置。K-means通常也被归类为迭代优化算法。

归一化公式 :
c1
计算ui公式:

c2
计算P(wi|xj)公式:
c3
k4
关于FCM与k-means 性能的比较参考:http://www.eurojournals.com/ejsr_46_3_02.pdf

作为较早的基本算法,目前k-means和FCM都有较多实现。常用工具多有对其的支持,网上源码也较多。以matlab中FCM函数为100个随机树分2类的例子。
另外,开源项目Mahout对K-Means进行了分布式实现。通过MapReduce实现的分布式K-means支持更大数据量的聚类。

更多信息参考:

Wiki K-Means: http://en.wikipedia.org/wiki/K-means_clustering

Mahout学习——K-Means Clustering: http://www.cnblogs.com/vivounicorn/archive/2011/10/08/2201986.html

本文固定链接: http://www.chepoo.com/top-10-algorithms-in-data-mining-adaboost-2.html | IT技术精华网

数据挖掘:Top 10 Algorithms in Data Mining(二)K-Means算法:等您坐沙发呢!

发表评论