赞
踩
所谓聚类算法是指将一堆没有标签的数据自动划分成几类的方法,属于无监督学习方法,这个方法要保证同一类的数据有相似的特征,根据样本之间的距离或者说是相似性(亲疏性),把越相似、差异越小的样本聚成一类(簇),最后形成多个簇,使同一个簇内部的样本相似度高,不同簇之间差异性高。
聚类算法有很多种(几十种),K-Means是聚类算法中的最常用的一种,算法最大的特点是简单,好理解,运算速度快。
下面来介绍一下k-means聚类算法的基本流程:
给定一个集合,集合中包含所有需要聚类的样本
- 首先输入k的值,即我们希望将数据集经过聚类得到k个分组。
- 从数据集中随机选择k个数据点作为初始的簇中心(质心,Centroid)
- 对于集合中的每一个样本(除簇中心外的所有样本),计算其与每一个簇中心的距离(距离的含义有很多,后面再详细介绍),离哪个簇中心距离近,就先将该样本分为该簇。
- 一轮迭代之后,此时集合中每个样本都属于某一个簇了。
- 然后需要对每一个簇重新计算簇中心(通过算法选出新的质心),
5.1 如果新的簇中心与旧的簇中心之间的距离小于某一个设置的阈值(表明重新计算的质心位置变化不大,趋于稳定,或者说收敛),可以认为我们进行的聚类已经达到期望的结果,算法终止。
5.2 如果新的簇中心与旧的簇中心之间的距离大于设置的阈值,则需要继续迭代步骤3-5.
例子
使用一个简单的例子,来更好的理解k-means聚类算法。
现在有6个点
{
p
1
,
p
2
,
p
3
,
p
4
,
p
5
,
p
6
}
\{p_1, p_2, p_3, p_4, p_5, p_6\}
{p1,p2,p3,p4,p5,p6}(这6个点即为我们的样本集合),从图上看应该分成两类,前三个点一类儿,后三个点是另一类。
现在按照算法的步骤执行K-Means算法,体会一下过程,同时看看结果是不是和预期一致。
首先随机选出两个点作为初始的簇中心:假设选出的两个点为
p
1
,
p
2
p_1, p_2
p1,p2
然后就需要计算集合中其他点距离这两个簇中心的距离,计算结果如下表。从表中可以看出,此时
p
3
,
p
4
,
p
5
,
p
6
p_3, p_4, p_5, p_6
p3,p4,p5,p6四个点都是距离
p
2
p_2
p2更近一些。那么此时两个簇分别为:簇1:
{
p
1
}
\{p_1\}
{p1},簇2:
{
p
2
,
p
3
,
p
4
,
p
5
,
p
6
}
\{p_2,p_3, p_4, p_5, p_6\}
{p2,p3,p4,p5,p6}
接下来就需要重新计算簇中心。簇1不需要计算,簇中心还是
p
1
p_1
p1,簇2有五个点,(计算新的簇中心的方法是每个点X坐标的平均值和Y坐标的平均值组成的新的点,为新的簇中心,也就是说这个新的簇中心是“虚拟的”)。因此,簇2选出新簇中心的坐标为:
p
2
′
p_2'
p2′:((1+3+8+9+10)/5,(2+1+8+10+7)/5)=(6.2,5.6)。 综合两组,新簇中心为
p
1
:
(
0
,
0
)
,
p
2
′
:
(
6.2
,
5.6
)
p_1:(0,0),p_2':(6.2,5.6)
p1:(0,0),p2′:(6.2,5.6)。
再次计算各个样本到簇中心的距离 ,如下表。此时
p
2
,
p
3
p_2, p_3
p2,p3距离簇中心
p
1
p_1
p1更近,而
p
4
,
p
5
,
p
6
p_4, p_5,p_6
p4,p5,p6距离簇中心
p
2
′
p_2'
p2′更近。则此时的簇1:
{
p
1
,
p
2
,
p
3
}
\{p_1, p_2, p_3\}
{p1,p2,p3},簇2:
{
p
4
,
p
5
,
p
6
}
\{p_4, p_5, p_6\}
{p4,p5,p6}
接着更新两个簇的簇中心:新簇中心为
p
1
′
:
(
1.33
,
1
)
,
p
2
′
′
:
(
9
,
8.33
)
p_1':(1.33,1),p_2'':(9,8.33)
p1′:(1.33,1),p2′′:(9,8.33)。
再次计算各个样本到簇中心的距离 ,如下表。这次聚类的结果和上次没有任何变化了,说明已经收敛,聚类结束,聚类结果和我们最开始设想的结果完全一致。
从上面的例子中可以看出k-means聚类算法的细节问题:
Single-pass clustering,中文名一般译作“单遍聚类”,它是一种简洁且高效的文本聚类算法。它不需要向k-means那样迭代每一个样本的状态,计算速度非常快。在文本主题聚类中,Single-pass聚类算法比K-means来的更为有效。Single-pass聚类算法不需要指定类目数量,可以通过设定相似度阈值来限定聚类数量。
Single-pass聚类算法同时是一种增量聚类算法(Incremental Clustering Algorithm),每个文档只需要流过算法一次,它可以很好的应用于话题监测与追踪、在线事件监测等社交媒体大数据领域,特别适合流式数据(Streaming Data),比如微博的帖子信息,因此适合对实时性要求较高的文本聚类场景。
处理步骤
Single-pass算法顺序处理文本,以第一篇文档为种子,建立一个新主题。之后再进行新进入文档与已有主题的相似度,将该文档加入到与它相似度最大的、且大于一定阈值的主题中。如果与所有已有话题相似度都小于阈值,则以该文档为聚类种子,建立新的主题类别。其算法流程如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。