vlambda博客
学习文章列表

聚类算法——k均值聚类

聚类算法之k均值聚类

不/念/过/去    不/畏/将/来


聚类算法

聚类算法——k均值聚类
聚类算法——k均值聚类
聚类算法——k均值聚类

俗话说:"物以类聚,人以群分",在自然科学和社会科学中,存在着大量的分类问题。所谓类,通俗地说,就是指相似元素的集合。

聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法,同时也是数据挖掘的一个重要算法。

聚类分析有很多种,但其基本原则都是:希望族(类)内的相似度尽可能高,族(类)间的相似度尽可能低(相异度尽可能高)。下面,我们重点介绍K均值聚类。



K均值聚类

K-Means算法也称K-均值聚类算法,是一种广泛使用的聚类算法,也是其他聚类算法的基础。

假定输入样本为S = X1,X2,···,Xm,则算法步骤为: 

1. 选择初始的k个类别中心μ1μ2…μk

2. 对于每个样本Xi,将其标记为距离类别中心最近的类别(距离计算一般采用欧式距离) 

3. 将每个类别中心更新为隶属该类别的所有样本的均值 

4. 重复最后两步,直到类别中心的变化小于某阈值。


终止条件一般有迭代次数,族中心变化率,最小平方误差MSE (Minimum Squared Error)等。


它的迭代过程如下: 

聚类算法——k均值聚类

算法缺陷:k个族心初始点需要提前设定好,但现实情况中,不同场景下的k个族质心往往相差很大,在k值不会太大,应用场景不明确是,可以通过迭代求解损失函数最小时对应的k值。不同的随机种子点得到的结果完全不同,看一下k=3得到的三种不同结果:

聚类算法——k均值聚类
聚类算法——k均值聚类

可以发现,即使k=3相同,但开始的情况不同,仍然有可能使得聚类不成功。第二张图就是聚类失败的例子。






文字编辑:数学建模宣传部何凤

图片来源:百度百科