[Machine Learning]聚类任务、性能度量、距离计算
Note:本文系笔者学习机器学习过程中的学习笔记,期间加有个人的见解,如有错误,欢迎评论区留言讨论,共同进步。
一、聚类任务
聚类,即根据数据的“相似性”将数据集中的样本划分成若干个通常是不相交的子集,每一个子集称为一个**“簇”(cluster)**;需注意,聚类过程仅能自动形成簇结构,簇所对应的概念语义需由使用者来把握和命名。
形式化地说,假定样本集 D = { x 1 , x 2 , . . . , x m } D{\rm{ = \{ }}{{\rm{x}}_1}{\rm{,}}{{\rm{x}}_2}{\rm{,}}...{\rm{,}}{{\rm{x}}_m}{\rm{\} }} D={x1,x2,...,xm}包含 m m m个无标记样本,每个样本 x i = ( x i 1 ; x i 2 ; . . . ; x i n ) {x_i} = ({x_{i1}};{x_{i2}};...;{x_{in}}) xi=(xi1;xi2;...;xin)是一个 n n n维特征向量,则聚类算法将文本集 D D D划分为 k k k个不相交的簇 { C l ∣ l = 1 , 2 , . . . , k } \{ {C_l}|l = 1,2,...,k\} {Cl∣l=1,2,...,k},其中 C l ′ ∩ l ′ ≠ l C l = ∅ {C_{l'}}{ \cap _{l' \ne l}}{C_l} = \emptyset Cl′∩l′̸=lCl=∅且 D = ∪ l = 1 k C l D{\rm{ = }} \cup _{l = 1}^k{C_l} D=∪l=1kCl.相应地,我们用 λ j ∈ { 1 , 2 , . . . , k } {\lambda _j} \in \{ 1,2,...,k\} λj∈{1,2,...,k}表示样本 x j {x_j} xj的**“簇标记”(cluster label)**,即 x j ∈ C λ j {x_j} \in {C_{{\lambda _j}}} xj∈Cλj.于是,聚类的结果可用包含 m m m个元素的簇标记向量 λ = ( λ 1 ; λ 2 ; . . . ; λ m ) \lambda = ({\lambda _1};{\lambda _2};...;{\lambda _m}) λ=(λ1;λ2;...;λm)表示。
评估两个不同样本之间的“相似性”(即性能度量),通常使用的方法就是计算两个样本之间的“距离”(即距离计算)。使用不同的方法计算样本之间的距离会关系到聚类结果的好坏。
二、性能度量
性能度量,即聚类的有效性指标(validity index)。根据聚类任务,我们希望得到的聚类结果是“簇内相似度”(intra-cluster similarity)高且“簇间相似度”(inter-cluster similarity)低。
2.1、“外部指标”(external index)
对于数据集
D
=
{
x
1
,
x
2
,
.
.
.
,
x
m
}
D{\rm{ = \{ }}{{\rm{x}}_1}{\rm{,}}{{\rm{x}}_2}{\rm{,}}...{\rm{,}}{{\rm{x}}_m}{\rm{\} }}
D={x1,x2,...,xm},假定通过聚类给出的簇划分为
C
=
{
C
1
,
C
2
,
.
.
.
,
C
k
}
C = \{ {C_1},{C_2},...,{C_k}\}
C={C1,C2,...,Ck},参考模型给出的簇划分为
C
∗
=
{
C
1
∗
,
C
2
∗
,
.
.
.
,
C
s
∗
}
{C^*} = \{ C_1^*,C_2^*,...,C_s^*\}
C∗={C1∗,C2∗,...,Cs∗}.相应地,令
λ
\lambda
λ与
λ
∗
{\lambda ^*}
λ∗分别表示与
C
C
C和
C
∗
{C^*}
C∗对应的簇标记向量.我们将样本两两配对考虑,定义
a
=
∣
S
S
∣
,
S
S
=
{
(
x
i
,
x
j
)
∣
λ
i
=
λ
j
,
λ
i
∗
=
λ
j
∗
,
i
<
j
}
,
a = \left| {SS} \right|,SS = \{ ({x_i},{x_j})|{\lambda _i} = {\lambda _j},\lambda _i^* = \lambda _j^*,i < j\} ,
a=∣SS∣,SS={(xi,xj)∣λi=λj,λi∗=λj∗,i<j},
b
=
∣
S
D
∣
,
S
D
=
{
(
x
i
,
x
j
)
∣
λ
i
=
λ
j
,
λ
i
∗
≠
λ
j
∗
,
i
<
j
}
,
b = \left| {SD} \right|,SD = \{ ({x_i},{x_j})|{\lambda _i} = {\lambda _j},\lambda _i^* \ne \lambda _j^*,i < j\} ,
b=∣SD∣,SD={(xi,xj)∣λi=λj,λi∗̸=λj∗,i<j},
c
=
∣
D
S
∣
,
D
S
=
{
(
x
i
,
x
j
)
∣
λ
i
≠
λ
j
,
λ
i
∗
=
λ
j
∗
,
i
<
j
}
,
c = \left| {DS} \right|,DS = \{ ({x_i},{x_j})|{\lambda _i} \ne {\lambda _j},\lambda _i^* = \lambda _j^*,i < j\} ,
c=∣DS∣,DS={(xi,xj)∣λi̸=λj,λi∗=λj∗,i<j},
d
=
∣
D
D
∣
,
D
D
=
{
(
x
i
,
x
j
)
∣
λ
i
≠
λ
j
,
λ
i
∗
≠
λ
j
∗
,
i
<
j
}
,
d = \left| {DD} \right|,DD = \{ ({x_i},{x_j})|{\lambda _i} \ne {\lambda _j},\lambda _i^* \ne \lambda _j^*,i < j\} ,
d=∣DD∣,DD={(xi,xj)∣λi̸=λj,λi∗̸=λj∗,i<j},注:由于每个样本对
(
x
i
,
x
j
)
(
i
<
j
)
({x_i},{x_j})(i<j)
(xi,xj)(i<j)仅能出现在一个集合中,因此有
a
+
b
+
c
+
d
=
m
(
m
−
1
)
/
2
a + b + c + d = m(m - 1)/2
a+b+c+d=m(m−1)/2成立。
一般地,我们有以下常用的聚类性能度量外部指标:
- J a c c a r d Jaccard Jaccard系数(Jaccard Coefficient,简称JC) J C = a a + b + c JC = {a \over {a + b + c}} JC=a+b+ca
- F M FM FM指数(Fowlkes and Mallows Index,简称FMI) F M I = a a + b ⋅ a a + c FMI = \sqrt {{a \over {a + b}} \cdot {a \over {a + c}}} FMI=a+ba⋅a+ca
-
R
a
n
d
Rand
Rand指数(Rand Index,简称RI)
R
I
=
2
(
a
+
d
)
m
(
m
−
1
)
RI = {{2(a + d)} \over {m(m - 1)}}
RI=m(m−1)2(a+d)
综上,上述性能度量的结果值均在 [ 0 , 1 ] [0,1] [0,1]区间,值越大越好。
2.2、“内部指标”(internal index)
对于聚类结果的簇划分
C
=
{
C
1
,
C
2
,
.
.
.
,
C
k
}
C = \{ {C_1},{C_2},...,{C_k}\}
C={C1,C2,...,Ck},定义
a
v
g
(
C
)
=
2
∣
C
∣
(
∣
C
∣
−
1
)
∑
1
≤
i
<
j
≤
∣
C
∣
d
i
s
t
(
x
i
,
x
j
)
avg(C) = {2 \over {\left| C \right|(\left| C \right| - 1)}}\sum\nolimits_{1 \le i < j \le \left| C \right|} {dist({x_i},{x_j})}
avg(C)=∣C∣(∣C∣−1)2∑1≤i<j≤∣C∣dist(xi,xj)
d
i
a
m
(
C
)
=
max
1
≤
i
<
j
≤
∣
C
∣
d
i
s
t
(
x
i
,
x
j
)
diam(C) = {\max _{1 \le i < j \le \left| C \right|}}dist({x_i},{x_j})
diam(C)=1≤i<j≤∣C∣maxdist(xi,xj)
d
min
(
C
i
,
C
j
)
=
min
x
i
∈
C
i
,
x
j
∈
C
j
d
i
s
t
(
x
i
,
x
j
)
{d_{\min }}({C_i},{C_j}) = {\min _{{x_i} \in {C_i},{x_j} \in {C_j}}}dist({x_i},{x_j})
dmin(Ci,Cj)=xi∈Ci,xj∈Cjmindist(xi,xj)
d
c
e
n
(
C
i
,
C
j
)
=
d
i
s
t
(
μ
i
,
μ
j
)
{d_{cen}}({C_i},{C_j}) = dist({\mu _i},{\mu _j})
dcen(Ci,Cj)=dist(μi,μj)
其中,
d
i
s
t
(
⋅
,
⋅
)
dist( \cdot , \cdot )
dist(⋅,⋅)计算两个样本之间的距离;
μ
\mu
μ代表簇
C
C
C的中心点
μ
=
1
∣
C
∣
∑
1
≤
i
≤
∣
C
∣
x
i
\mu = {1 \over {\left| C \right|}}\sum\nolimits_{1 \le i \le \left| C \right|} {{x_i}}
μ=∣C∣1∑1≤i≤∣C∣xi.显然,
a
v
g
(
C
)
avg(C)
avg(C)对应于簇
C
C
C内样本间的平均距离,
d
i
a
m
(
C
)
diam(C)
diam(C)对应于簇
C
C
C内样本间的最远距离,
d
min
(
C
i
,
C
j
)
{d_{\min }}({C_i},{C_j})
dmin(Ci,Cj)对应于簇
C
i
{C_i}
Ci与簇
C
j
{C_j}
Cj最近样本间的距离,
d
c
e
n
(
C
i
,
C
j
)
{d_{cen}}({C_i},{C_j})
dcen(Ci,Cj)对应于簇
C
i
{C_i}
Ci与簇
C
j
{C_j}
Cj中心点间的距离.
一般地,我们有如下常用聚类性能度量内部指标:
- D B DB 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 ( μ i , μ j ) ) DBI = {1 \over k}\sum\limits_{i = 1}^k {\mathop {\max }\limits_{j \ne i} \left( {{{avg({C_i}) + avg({C_j})} \over {{d_{cen}}({\mu _i},{\mu _j})}}} \right)} DBI=k1i=1∑kj̸=imax(dcen(μi,μj)avg(Ci)+avg(Cj))
-
D
u
n
n
Dunn
Dunn指数(Dunn Index,简称DI)
D
I
=
min
1
≤
i
≤
k
{
min
j
≠
k
(
d
min
(
C
i
,
C
j
)
max
1
≤
l
≤
k
d
i
a
m
(
C
l
)
)
}
DI = \mathop {\min }\limits_{1 \le i \le k} \{ \mathop {\min }\limits_{j \ne k} ({{{d_{\min }}({C_i},{C_j})} \over {{{\max }_{1 \le l \le k}}diam({C_l})}})\}
DI=1≤i≤kmin{j̸=kmin(max1≤l≤kdiam(Cl)dmin(Ci,Cj))}
综上, D B I DBI DBI值越小越好, D I DI DI值越大越好。
三、距离计算
3.1、距离度量
对于 d i s t ( ⋅ , ⋅ ) dist( \cdot , \cdot ) dist(⋅,⋅),其距离度量(distance measure)满足:
- 非负性: d i s t ( x i , x j ) ≥ 0 dist({x_i},{x_j}) \ge 0 dist(xi,xj)≥0
- 同一性: d i s t ( x i , x j ) = 0 dist({x_i},{x_j}) = 0 dist(xi,xj)=0,当且仅当 x i = x j {x_i}={x_j} xi=xj
- 对称性: d i s t ( x i , x j ) = d i s t ( x j , x i ) dist({x_i},{x_j}) = dist({x_j},{x_i}) dist(xi,xj)=dist(xj,xi)
- 直递性(三角不等式): d i s t ( x i , x j ) ≤ d i s t ( x i , x k ) + d i s t ( x k , x j ) dist({x_i},{x_j}) \le dist({x_i},{x_k}) + dist({x_k},{x_j}) dist(xi,xj)≤dist(xi,xk)+dist(xk,xj)
3.2、闵可夫斯基距离及其推广
对于给定样本
x
i
=
(
x
i
1
;
x
i
2
;
.
.
.
;
x
i
n
)
{x_i} = ({x_{i1}};{x_{i2}};...;{x_{in}})
xi=(xi1;xi2;...;xin)与
x
j
=
(
x
j
1
;
x
j
2
;
.
.
.
;
x
j
n
)
{x_j} = ({x_{j1}};{x_{j2}};...;{x_{jn}})
xj=(xj1;xj2;...;xjn),有闵可夫斯基距离(Minkowski distance):
d
i
s
t
m
k
(
x
i
,
x
j
)
=
(
∑
u
=
1
n
∣
x
i
u
−
x
j
u
∣
)
1
p
dis{t_{mk}}({x_i},{x_j}) = {\left( {\sum\limits_{u = 1}^n {\left| {{x_{iu}} - {x_{ju}}} \right|} } \right)^{{1 \over p}}}
distmk(xi,xj)=(u=1∑n∣xiu−xju∣)p1即
x
i
−
x
j
{x_{i}} - {x_{j}}
xi−xj的
L
p
{L_p}
Lp范数
∥
x
i
−
x
j
∥
2
{\left\| {{x_i} - {x_j}} \right\|_2}
∥xi−xj∥2;对
p
≥
1
p \ge 1
p≥1,显然满足距离度量的基本性质。
有如下推广:
p
=
2
p=2
p=2时为欧氏距离:
d
i
s
t
e
d
(
x
i
,
x
j
)
=
∥
x
i
−
x
j
∥
2
=
∑
u
=
1
n
∣
x
i
u
−
x
j
u
∣
2
dis{t_{ed}}({x_i},{x_j}) = {\left\| {{x_i} - {x_j}} \right\|_2} = \sqrt {\sum\limits_{u = 1}^n {{{\left| {{x_{iu}} - {x_{ju}}} \right|}^2}} }
disted(xi,xj)=∥xi−xj∥2=u=1∑n∣xiu−xju∣2
p
=
1
p=1
p=1时为曼哈顿距离:
d
i
s
t
m
a
n
(
x
i
,
x
j
)
=
∥
x
i
−
x
j
∥
1
=
∑
u
=
1
n
∣
x
i
u
−
x
j
u
∣
dis{t_{man}}({x_i},{x_j}) = {\left\| {{x_i} - {x_j}} \right\|_1} = \sum\limits_{u = 1}^n {\left| {{x_{iu}} - {x_{ju}}} \right|}
distman(xi,xj)=∥xi−xj∥1=u=1∑n∣xiu−xju∣
3.3、连续属性与离散属性
连续属性即“数值属性”,在定义域内有无穷多个取值,因其能直接在属性值上计算距离,故又称为“有序属性”;
离散属性即“列名属性”,在定义域上有有限个取值,因其不能直接在属性值上计算距离,故又称为“无序属性”。