本文主要内容摘自:周志华,《机器学习》,清华大学出版社。
1、聚类任务
聚类试图将数据集中的样本划分为若干个通常是不相交的子集。形式化来说,假定样本集
D={x1,x2,…,xm}包含
m个无标记样本,每个样本
xi=(xi1;xi2;…,xin;)是一个
n维向量,则聚类算法将样本集
D划分为
k个不相交的簇
{Cl∣l=1,2,…,k},其中
Cl′∩l′≠lCl=Φ且
D=∪l=1kCl。相应地,我们用
λj∈{1,2,…,k}表示样本
xj的簇标记(cluster label),即
xj∈Cλj。于是,聚类的结果可用包含
m个元素的簇标记向量
λ=(λ1,λ2,…,λm)来表示。
下面先来讨论聚类算法涉及的两个基本问题–性能度量和距离计算。
2、性能度量
直观来说,聚类算法应该是簇内相似度(intra-cluster similarity)高,且簇间相似度(inter-cluster similarity)低。
聚类性能度量大致来说分为两类。第一类是将聚类结果与某个参考模型(reference model)进行比较,因而称为外部指标(external index);另一类是直接考查聚类结果而不利用任何参考模型,称为内部指标(internal index)。
2.1 外部指标
对数据集
D={xi,x2,…,xm},假定经过聚类给出的簇划分为
C={C1,C2,…,Ck},参考模型给出的簇划分为
C∗={C1∗,C2∗,…,Cs∗}。相应地,令
λ和
λ∗分别表示
C和
C∗对应的簇标记向量。我们将样本两两配对考虑,定义
a=∣SS∣,SS={(xi,xj)∣λi=λj,λi∗=λj∗,i≤j},b=∣SD∣,SD={(xi,xj)∣λi=λj,λi∗≠λj∗,i≤j},c=∣DS∣,DS={(xi,xj)∣λi≠λj,λi∗=λj∗,i≤j},d=∣DD∣,DD={(xi,xj)∣λi≠λj,λi∗≠λj∗,i≤j},其中,集合
SS包含了在
C中隶属于相同簇,在
C∗中也隶属于相同簇的样本对;集合
SD包含了在
C中隶属于相同簇,但在
C∗中隶属于不同簇的样本对;集合
DS包含了在
C中隶属于不同簇,在
C∗中隶属于相同簇的样本对;集合
DD包含了在
C中和
C∗中都隶属于不同簇的样本对。由于每个样本对
(xi,xj)(i≤j)都只能出现在一个集合中,因此有
a+b+c+d=Cm2=2m(m−1)。
常用聚类性能度量外部指标包括:
- Jaccard系数(Jaccard Coefficient, JC)
JC=b+c+da.
- FM指数(Fowlkes and Mallows Index, FM)
FMI=a+ba⋅a+ca
- Rand指数(Rand Index,RI)
RI=m(m−1)2(a+d).
显然,上述性能度量的结果都在[0,1]区间,值越大越好。
2.2 内部指标
对于簇划分${\mathcal C}={C_1,C_2,\ldots,C_k},定义
avg(C)diam(C)dmin(Ci,Cj)dcen(Ci,Cj)=∣C∣(∣C∣−1)21≤i<j≤∣C∣∑dist(xi,xj),=1≤i<j≤∣C∣maxdist(xi,xj),=xi∈Ci,xj∈Cjmindist(xi,xj),=dist(μi,μj),其中,
dist(⋅,⋅)用于计算两个样本之间的距离;
μ代表簇
C的中心点
μ=∣C∣1∑1≤i≤∣C∣xi。显然,
avg(C)对应于簇C内样本间的平均距离;
diam(C)对应于簇C内样本间的最远距离;
dmin(Ci,Cj)对应于簇
Ci与
Cj最近样本间的距离
dcen(Ci,Cj)对应于簇
Ci与
Cj中心点间的距离。
常用聚类性能度量内部指标包括:
- DB指数(Davies-Bouldin Index, DBI)
DBI=k1i=1∑kj≠imax[dcen(Ci,Cj)avg(Ci)+avg(Cj)].
- Dunn指数(Dunn Index, DI)
DI=1≤i≤kmin{}
显然,DBI的值越小越好,而DI则相反,值越大越好。
3、距离计算