数据挖掘基础(三): 聚类 -...
Transcript of 数据挖掘基础(三): 聚类 -...
《互联网数据挖掘》本科生课程
2014年11月5日
北京大学语言计算与互联网挖掘组http://www.icst.pku.edu.cn/lcwm
万小军
数据挖掘基础(三):聚类
概念
聚类:将数据自动聚集到不同类簇 同一类簇内数据相似,不同类簇间数据不相似
无监督学习• 没有标注数据
• 类簇未知
2
聚类器数据/文本
类簇1
类簇2
类簇n
….
应用
3
聚类应用 新闻聚类与话题检测
检索结果组织
网络社区发现
…
文本聚类技术
4
聚类质量 类簇之间的文档距离 最大化 类簇内部的文档距离 最小化
聚类算法 K-Means聚类 层次式聚类(Hierarchical clustering) 增量式单遍聚类 基于图分割的聚类 基于密度峰值的聚类
距离(或相似度)测度
文本聚类技术
5
距离测度 欧式距离(Euclidian distance (L2 norm))
L1范式(L1 norm)
基于余弦测度的距离
2
1
2 )(),( i
m
i
i yxyxL
m
i
ii yxyxL1
1 ),(
yx
yx
1
层次式聚类
6
自底向上的凝聚式聚类(Agglomerative clustering): 初始每个文档自成一个类簇
每次合并最相似/距离最近的两个类簇,形成一个新类簇,循环执行,直到满足终止条件• 终止条件为类簇数量或者相似度阈值
层次式聚类
7
凝聚式聚类-示例
层次式聚类
8
凝聚式聚类-结果为树形图
层次式聚类
9
凝聚式聚类-不同的计算类簇间距离/相似性的方法
single-link
(最小距离)complete-link
(最大距离)
Group-average
(平均距离)
层次式聚类
10
自顶向下的划分式聚类(Divisive clustering): 初始只有一个类簇,包括所有文档
每次从当前类簇中选择最大(或最不合理)的一个类簇,将其分割成两个(或多个)新的类簇,循环执行,直到满足终止条件• 类簇分割方法为采用其他聚类算法,比如K均值算法等
层次式聚类
11
Agglomerative vs. Divisive clustering
Step 0 Step 1 Step 2 Step 3 Step 4
b
d
c
e
aa b
d e
c d e
a b c d e
Step 4 Step 3 Step 2 Step 1 Step 0
agglomerative
divisive
K均值(K-means)聚类
12
一种基于划分的聚类算法
算法将文档集划分到k个类簇中 每个类簇有一个类簇中心, 称为centroid.
• 可基于该类簇文档向量的平均向量计算
k 由用户指定
K均值(K-means)聚类
13
算法执行以下几步:1) 随机选择k个种子点作为初始中心点/类簇中
心;
2) 将每个文档指派到与其最相似的中心点所在的类簇;
3) 根据当前类簇文档重新计算类簇中心点;
4) 如果不收敛或不满足终止条件, 继续执行步骤2);
K均值聚类例子(k=2)
14
Pick seeds
Reassign clusters
Compute centroids
xx
Reasssign clusters
xx xx Compute centroids
Reassign clusters
Converged!
K-means算法复杂度
15
时间复杂度为 O(tkn) n 为数据点个数
k 为聚类数目
t 为迭代次数
通常 k, t << n.
种子点(seed)的选择
16
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
0
0.5
1
1.5
2
2.5
3
x
y
Iteration 1
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
0
0.5
1
1.5
2
2.5
3
x
y
Iteration 2
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
0
0.5
1
1.5
2
2.5
3
x
y
Iteration 3
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
0
0.5
1
1.5
2
2.5
3
x
y
Iteration 4
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
0
0.5
1
1.5
2
2.5
3
x
y
Iteration 5
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
0
0.5
1
1.5
2
2.5
3
x
y
Iteration 6
种子点(seed)的选择
17
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
0
0.5
1
1.5
2
2.5
3
x
y
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
0
0.5
1
1.5
2
2.5
3
x
y
Sub-optimal Clustering
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
0
0.5
1
1.5
2
2.5
3
x
y
Optimal Clustering
Original Points
种子点(seed)的选择
18
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
0
0.5
1
1.5
2
2.5
3
x
y
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
0
0.5
1
1.5
2
2.5
3
x
y
Sub-optimal Clustering
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
0
0.5
1
1.5
2
2.5
3
x
y
Optimal Clustering
Original Points
结合K-means与凝聚式聚类
19
Buckshot算法
从原始n个数据点中随机取n 个数据点
针对这些样本数据点上运行凝聚式聚类
使用凝聚式聚类结果作为初始种子点
在原数据上基于初始种子点运行K-means
改善了种子点的选择
增量式单遍聚类
20
单遍聚类(Single-Pass) 增量式聚类,适合于高效处理动态文本数据流
将新文档与已有类簇逐一比对,如果与某个类簇的相似度值大于设定的阈值,那么将该文档归并到相应类簇中,否则基于该文档形成一个新的类簇• 数据流中第一个文档形成第一个类簇
增量式单遍聚类
21
基于图分割的聚类
22
计算文档对之间的相似度值,构建相似度图G=(V, E) 每个文档为图的一个节点
文档之间有边连接,边的权重W为文档相似度值
文档聚类问题转换成在图上进行顶点分割的问题
基于图分割的聚类
23
2个类簇
基于图分割的聚类
24
图分割目标为最小化cut值
基于图分割的聚类
25
切割准则
问题:只考虑了类簇之间的连接情况,没有考虑类簇内部的密度
基于图分割的聚类
26
改进办法: Normalized Cut
Vol(A): A中节点到图中所有节点的边的权重之和.
通过规范化能够取得更加均衡的图分割。
一种基于图分割准则的优化求解方法为谱聚类(spectral clustering),具体细节参考论文(Shi&Malik2000)
基于密度峰值的聚类(Science)
27
简单优美,可自动确定聚类数目,检测孤立点,可识别不同形状的聚类
假设:类簇中心被一些局部密度较低的点围绕,并且这些点距离其它有高局部密度的点的距离都比较大
基于密度峰值的聚类(Science)
28
定义 为每个数据点i计算两个值
• 局部密度
• 与更高局部密度点的最小距离
基于密度峰值的聚类(Science)
29
聚类过程 计算出所有数据点的局部密度值和到高局部密度点的
距离后,可以得到一张决策图
在决策图上挑选具有较大 以及较大 的样本点作为类簇中心
将其它样本点按照局部密度从高到底依次确定所属类簇,其类簇为领域内最近的高于该点局部密度的样本点所属的类簇
基于密度峰值的聚类(Science)
30
示例
聚类中心点:1, 10孤立点(outlier):26, 27, 28
聚类结果评估
基于人工标注的类簇进行评价
评价准则包括:F值、纯度(Purity)、规范化互信息(NMI)
F值计算 对每个人工标注的类簇i与每个系统生成的类簇j, 计算相
应的F值F(i,j)
总体F值为
31
聚类算法的选择
32
聚类算法的选择具有挑战性 每种算法都有各自的优势与不足,聚类效果通常依赖
于聚类算法、距离函数、具体的数据与应用
实际做法 运行使用不同距离函数的多个聚类算法,分析和比较
聚类结果
对聚类结果的解释要基于原始数据的意义以及聚类算法的特性
半监督聚类
33
除了待聚类的数据,还提供了少量先验知识 部分标注信息
• 例如为若干数据点标注了类簇
约束信息• 例如要求某两个数据点必须在同一类簇,或某两个数据点不能
在同一类簇
处理方法:改造现有聚类算法 以K-means算法为例
半监督聚类
34
Seeded points
Must-link
Cannot-link
提供了部分标签
提供了约束
半监督聚类
35
Seeded K-means 用户提供了Seeded points 利用提供的标注信息(seeded points)寻找初始类簇中
心,然后运行K-means Seeded points的标签可能会改变
半监督聚类
36
Seeded K-means
半监督聚类
37
Seeded K-means
xx
Initialize Means Using Labeled Data
半监督聚类
38
Seeded K-means
xx
Assign Points to Clusters
半监督聚类
39
Seeded K-means
xx
Re-estimate Means
半监督聚类
40
Seeded K-means
xx the label is changed
Assign points to clusters and Converge
半监督聚类
41
Constrained K-means 用户提供了Seeded points 利用提供的标注信息(seeded points)寻找初始类簇中
心,然后运行K-means Seeded points的标签不允许被改变
半监督聚类
42
COP K-means 用户提供了must-link与
cannot-link约束
初始化:类簇中心随机选择,但必须保证满足must-link约束,也就是must-link的两个数据点不能选择做为不同类簇的中心
算法:一个数据点必须在不违反任何约束的情况下归属到邻近的类簇
半监督聚类
43
COP K-means
xx
Must-link
Determineits label
Assign to the red class
半监督聚类
44
COP K-means
xx
Cannot-link
Assign to the red class
Determineits label
半监督聚类
45
COP K-means
Determineits label
xx
Cannot-link
The clustering algorithm fails
Must-link
检索结果聚类
46
应对查询有歧义、检索结果过多的问题 “苹果” 水果?公司?
对某查询的检索页面结果进行组织,将相似/相关的结果聚集到同一类簇,形成多个类簇,方便用户浏览检索结果 每个类簇需要有方便用户理解的标签
主要基于页面的标题与短摘要(snippet),而非整个页面
检索结果聚类-Clusty
47
检索结果聚类-Kartoo
48
检索结果聚类-Grokker
49
“Open Source”
检索结果聚类-笨笨猫
50
检索结果聚类
51
两类方法 先对snippet进行聚类,然后为每个类簇选择标签
先分析获取有意义的类簇标签,然后将检索结果划分到不同标签
基于后缀树的检索结果聚类
52
后缀树聚类(Suffix Tree Clustering, STC) 时间复杂度低,高效
容易获得每个类簇的关键词标签
允许一个文档属于多个类簇
O. Zamir and O. Etzioni. Web Document Clustering:
A Feasibility Demonstration
基于回归学习的检索结果聚类
53
先获得重要的短语代表类簇,然后再将检索结果跟类簇关联
同样允许一文档隶属多个类簇
从文档中抽取候选短语
基于学习的短语排序
文档与类簇关联
H. Zeng et al. Learning to cluster web search results
基于回归学习的检索结果聚类
54
候选短语 频率大于3的n-gram (n<=3)
短语重要性排序 看做回归问题
利用SVM-Light实现的支撑向量回归等多个回归方法
人工标注短语训练集,也即短语与其重要性分值
短语特征 Phrase Frequency/Inverted Document Frequency(TFIDF)
Phrase Length
Intra-Cluster Similarity
Cluster Entropy
Phrase Independence
课堂小作业
55
利用自底向上的凝聚式聚类(Agglomerative clustering)将下列输入数据聚为两个类簇,数据由二维特征向量表示,数据之间的距离采用欧式距离计算,类簇之间的距离采用数据点之间的平均距离计算,写出最终结果与中间结果。
d1=(1, 2)
d2=(2, 3)
d3=(3, 1)
d4=(4, 2)
d5=(3, 3)
Q&A