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