一、聚类任务
在 “无监督学习”(unsupervised learning) 中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。研究最多、应用最广的是 “聚类”(clustering)
- 聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个 “簇”(cluster)。聚类过程仅能自动形成簇结构,簇所对应的概念语义需由使用者来把握和命名。
- “簇标记”(cluster label)
- 聚类即能作为一个单独过程,用于找寻数据内在的分布结构,也可作为分类等其他学习任务的前驱过程。在一些商业应用中需对新用户的类型进行判别,但定义“用户类型”对商家来说却可能不太容易,此时往往可先对用户数据进行聚类,根据聚类结果对每个簇定义为一个类,然后再基于这些类训练分类模型,用于判别新用户的类型
性能度量
- 聚类性能度量亦称聚类 “有效性指标”(validity index)。与监督学习中的性能度量作用相似,对聚类结果,我们需通过某种性能度量来评估其好坏;另一方面,若明确了最终将要使用的性能度量,则可直接将其作为聚类过程的优化目标,从而更好地得到符合要求的聚类结果。
- “物以类聚”,即同一簇的样本尽可能彼此相似,不同簇的样本尽可能不同。换言之,聚类结果的 “簇内相似度”(intra-cluster similarity) 高且 “簇间相似度”(inter-cluster similarity) 低。
- 聚类性能度量大致有两类。一类是将聚类结果与某个 “参考模型”(reference model) 进行比较,称为
“外部指标”(external index) ;另一类是直接参考聚类结果而不利用任何参考模型,称为 “内部指标”(internal index)
对数据集
D
=
{
x
1
,
x
2
,
⋯
,
x
m
}
D = \{\pmb x_1,\pmb x_2,\cdots,\pmb x_m\}
D={xxx1,xxx2,⋯,xxxm},假定通过聚类给出的簇划分为
C
=
{
C
1
,
C
2
,
⋯
,
C
k
}
C = \{C_1,C_2,\cdots,C_k\}
C={C1,C2,⋯,Ck},参考模型给出的簇划分为
C
∗
=
{
C
1
∗
,
C
2
∗
,
⋯
,
C
s
∗
}
C^* = \{C_1^*,C_2^*,\cdots,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
}
,
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
}
,
\begin{aligned} & a =|SS|,\quad SS = \{(\pmb x_i,\pmb x_j)|(\lambda_i =\lambda_j,\lambda_i^* =\lambda_j^*,i<j \},\\ & b =|SD|,\quad SD = \{(\pmb x_i,\pmb x_j)|(\lambda_i =\lambda_j,\lambda_i^* \ne\lambda_j^*,i<j \},\\ & c =|DS|,\quad DS = \{(\pmb x_i,\pmb x_j)|(\lambda_i \ne\lambda_j,\lambda_i^* =\lambda_j^*,i<j \},\\ & d =|DD|,\quad DD = \{(\pmb x_i,\pmb x_j)|(\lambda_i \ne\lambda_j,\lambda_i^* \ne\lambda_j^*,i<j \},\\ \end{aligned}
a=∣SS∣,SS={(xxxi,xxxj)∣(λi=λj,λi∗=λj∗,i<j},b=∣SD∣,SD={(xxxi,xxxj)∣(λi=λj,λi∗=λj∗,i<j},c=∣DS∣,DS={(xxxi,xxxj)∣(λi=λj,λi∗=λj∗,i<j},d=∣DD∣,DD={(xxxi,xxxj)∣(λi=λj,λi∗=λj∗,i<j},
可导出下面这些常用的聚类性能度量外部指标:
- Jaccard系数(Jaccard Coefficient,简称JC)
JC = a a + b + c \operatorname{JC} = \frac{a}{a+b+c} JC=a+b+ca - FM指数(Fowlkes and Mallows Index,简称FMI)
FMI = a a + b ⋅ a a + c \operatorname{FMI} = \sqrt{\frac{a}{a+b}\cdot\frac{a}{a+c}} FMI=a+ba⋅a+ca - Rand指数(Rand Index,简称RI)
RI = 2 ( a + d ) m ( m − 1 ) \operatorname{RI} = \frac{2(a+d)}{m(m-1)} RI=m(m−1)2(a+d)
显然,上述性能度量的结果值均在[0,1]区间,值越大越好。
考虑聚类结果的簇划分 C = { C 1 , C 2 , ⋯ , C k } C = \{C_1,C_2,\cdots,C_k\} C={C1,C2,⋯,Ck},定义
avg ( C ) = 2 ∣ C ∣ ( ∣ C ∣ − 1 ) ∑ 1 ≤ i < j ≤ ∣ C ∣ dist ( x i , x j ) , diam ( C ) = max 1 ≤ i < j ≤ ∣ C ∣ dist ( x i , x j ) , d min ( C i , C j ) = min x i ∈ C i , x j ∈ C j dist ( x i , x j ) , d cen ( C i , C j ) = dist ( μ i , μ j ) , \begin{aligned} \operatorname{avg}(C) &= \frac{2}{|C|(|C|-1)}\sum_{1\le i <j\le |C|}\operatorname{dist}(\pmb x_i,\pmb x_j),\\ \operatorname{diam}(C) &=\operatorname{max}_{1\le i <j\le |C|}\operatorname{dist}(\pmb x_i,\pmb x_j),\\ d_{\operatorname{min}}(C_i,C_j) &= \operatorname{min}_{x_i\in C_i,x_j\in C_j}\operatorname{dist}(\pmb x_i,\pmb x_j),\\ d_{\operatorname{cen}}(C_i,C_j) & = \operatorname{dist}(\pmb \mu_i,\pmb \mu_j), \end{aligned} avg(C)diam(C)dmin(Ci,Cj)dcen(Ci,Cj)=∣C∣(∣C∣−1)21≤i<j≤∣C∣∑dist(xxxi,xxxj),=max1≤i<j≤∣C∣dist(xxxi,xxxj),=minxi∈Ci,xj∈Cjdist(xxxi,xxxj),=dist(μμμi,μμμj),
其中, dist ( ⋅ , ⋅ ) \operatorname{dist}(\cdot,\cdot) dist(⋅,⋅)用于计算两个样本之间的距离; μ \pmb \mu μμμ代表簇C的中点点 μ = 1 ∣ C ∣ ∑ 1 ≤ i ≤ ∣ C ∣ x i \pmb \mu = \frac{1}{|C|}\sum_{1\le i\le |C|}\pmb x_i μμμ=∣C∣1∑1≤i≤∣C∣xxxi,显然avg©对应于簇C内样本间的平均距离,diam©对应于簇C内样本间的最远距离, d min ( C i , C j ) d_ {\operatorname{min}}(C_i,C_j) dmin(Ci,Cj)对应于簇 C i C_i Ci和 C j C_j Cj最近样本间的距离, d cen ( C i , C j ) d_ {\operatorname{cen}}(C_i,C_j) dcen(Ci,Cj)对应于簇 C i C_i Ci和 C j C_j Cj中心点间的距离
可导出下面这些常用的聚类性能度量内部指标: - DB指数(Davies-Bouldin Index,简称DBI)
DBI = 1 k ∑ i = 1 k max j ≠ i ( avg ( C i ) + avg ( C j ) d cen ( C i , C j ) ) \operatorname{DBI} = \frac{1}{k}\sum_{i=1}^k\underset{j\ne i}{\operatorname{max}}(\frac{\operatorname{avg}(C_i)+\operatorname{avg}(C_j)}{d_{\operatorname{cen}}(C_i,C_j) }) DBI=k1i=1∑kj=imax(dcen(Ci,Cj)avg(Ci)+avg(Cj)) - Dunn指数(Dunn Index ,简称DI)
DI = mix 1 ≤ i ( avg ( C i ) + avg ( C j ) d cen ( C i , C j ) ) \operatorname{DI} = \underset{1\le i}{\operatorname{mix}}(\frac{\operatorname{avg}(C_i)+\operatorname{avg}(C_j)}{d_{\operatorname{cen}}(C_i,C_j) }) DI=1≤imix(dcen(Ci,Cj)avg(Ci)+avg(Cj))
显然,DBI的值越小越好,而DI则相反,越大越好
三、距离计算
对函数
dist
(
⋅
,
⋅
)
\operatorname{dist}(\cdot,\cdot)
dist(⋅,⋅),若它是一个“距离度量”(distance measure),则需满足一些基本性质:
非
负
性
:
dist
(
x
i
,
x
j
)
≥
0
;
同
一
性
:
dist
(
x
i
,
x
j
)
=
0
,
当
且
仅
当
x
i
=
x
j
对
称
性
:
dist
(
x
i
,
x
j
)
=
dist
(
x
j
,
x
i
)
;
直
递
性
:
dist
(
x
i
,
x
j
)
≤
dist
(
x
i
,
x
k
)
+
dist
(
x
k
,
x
j
)
;
\begin{aligned} &非负性:\operatorname{dist}(\pmb x_i,\pmb x_j)\ge 0;\\ &同一性:\operatorname{dist}(\pmb x_i,\pmb x_j)= 0,当且仅当\pmb x_i=\pmb x_j\\ &对称性:\operatorname{dist}(\pmb x_i,\pmb x_j)=\operatorname{dist}(\pmb x_j,\pmb x_i);\\ &直递性:\operatorname{dist}(\pmb x_i,\pmb x_j)\le\operatorname{dist}(\pmb x_i,\pmb x_k)+\operatorname{dist}(\pmb x_k,\pmb x_j);\\ \end{aligned}
非负性:dist(xxxi,xxxj)≥0;同一性:dist(xxxi,xxxj)=0,当且仅当xxxi=xxxj对称性:dist(xxxi,xxxj)=dist(xxxj,xxxi);直递性:dist(xxxi,xxxj)≤dist(xxxi,xxxk)+dist(xxxk,xxxj);
给定样本
x
i
=
(
x
i
1
;
x
i
2
;
⋯
;
x
i
n
)
\pmb x_i = (x_{i1};x_{i2};\cdots;x_{in})
xxxi=(xi1;xi2;⋯;xin)与
x
j
=
(
x
j
1
;
x
j
2
;
⋯
;
x
j
n
)
\pmb x_j = (x_{j1};x_{j2};\cdots;x_{jn})
xxxj=(xj1;xj2;⋯;xjn),最常用的是“闵可夫斯基距离”(Minkowski distance)
d
i
s
t
m
k
(
x
i
,
x
j
)
=
(
∑
u
=
1
n
∣
x
i
u
−
x
j
u
∣
p
)
1
p
\operatorname{dist_{mk}}(\pmb x_i, \pmb x_j)=(\sum_{u=1}^n|x_{iu} - x_{ju}|^p)^{\frac{1}{p}}
distmk(xxxi,xxxj)=(u=1∑n∣xiu−xju∣p)p1
对
p
≥
1
p\ge 1
p≥1显然满足距离度量基本性质
当 p=2时,闵可夫斯基距离即欧式距离(Euclidean distance)
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
)
\operatorname{dist_{ed}}(\pmb x_i, \pmb x_j)=||\pmb x_i - \pmb x_j||_2=\sqrt{(\sum_{u=1}^n|x_{iu} - x_{ju}|^2)}
disted(xxxi,xxxj)=∣∣xxxi−xxxj∣∣2=(u=1∑n∣xiu−xju∣2)
当p=1时,闵可夫斯基距离即曼哈顿距离(Manhattan distance)
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
∣
)
\operatorname{dist_{man}}(\pmb x_i, \pmb x_j)=||\pmb x_i - \pmb x_j||_1=(\sum_{u=1}^n|x_{iu} - x_{ju}|)
distman(xxxi,xxxj)=∣∣xxxi−xxxj∣∣1=(u=1∑n∣xiu−xju∣)
我们常将属性划分为 “连续属性”(continuous attribute) 和 “离散属性”(categorical attribute)。然而,在讨论距离计算时,属性上是否定义了“序”关系更为重要。“有序属性”(ordinal attribute),“无序属性”(non-attribute)。显然,闵可夫斯基距离可用于有序属性
对于无序属性可采用 VDM(Value Difference Metric)。令
m
u
,
a
m_{u,a}
mu,a表示属性u上取值为a的样本数,
m
u
,
a
,
i
m_{u,a,i}
mu,a,i表示第i个样本簇中在属性u上取值为a的样本数,k为样本簇数,则属性u上两个离散值a与b之间的VDM距离为
VDM
p
(
a
,
b
)
=
∑
i
=
1
k
∣
m
u
,
a
,
i
m
u
,
a
−
m
u
,
b
,
i
m
u
,
b
∣
p
\operatorname{VDM}_p(a,b) = \sum_{i=1}^k|\frac{m_{u,a,i}}{m_u,a}-\frac{m_{u,b,i}}{m_u,b}|^p
VDMp(a,b)=i=1∑k∣mu,amu,a,i−mu,bmu,b,i∣p
于是,将闵可夫斯基距离和VDM结合即可处理混合属性。假定有
n
c
n_c
nc个有序属性、
n
−
n
c
n-n_c
n−nc个无序属性,不失一般性,令有序属性排列在无序属性之前,则
MinkovDM
p
(
x
i
,
x
j
)
=
(
∑
u
=
1
n
c
∣
x
i
u
−
x
j
u
∣
p
+
∑
u
=
n
c
+
1
n
VDM
p
(
x
i
u
,
x
j
u
)
)
1
p
\operatorname{MinkovDM}_p(\pmb x_i,\pmb x_j) = (\sum_{u=1}^{n_c}|x_{iu}-x_{ju}|^p + \sum_{u=n_c+1}^n \operatorname{VDM}_p(x_{iu},x_{ju}))^{\frac{1}{p}}
MinkovDMp(xxxi,xxxj)=(u=1∑nc∣xiu−xju∣p+u=nc+1∑nVDMp(xiu,xju))p1
当样本空间中不同属性的重要性不同时,可使用“加权距离”(weighted distance)。以加权闵可夫斯基距离为例:
d
i
s
t
w
m
k
(
x
i
,
x
j
)
=
(
w
1
⋅
∣
x
i
1
−
x
j
1
∣
p
+
⋯
+
w
n
⋅
∣
x
i
n
−
x
j
n
∣
p
)
\operatorname{dist_{wmk}}(\pmb x_i,\pmb x_j)=(w_1\cdot|x_{i1}-x_{j1}|^p+\cdots+w_n\cdot|x_{in}-x_{jn}|^p)
distwmk(xxxi,xxxj)=(w1⋅∣xi1−xj1∣p+⋯+wn⋅∣xin−xjn∣p)
- “非度量距离”(non-metric distance)
本节介绍的距离计算式都是事先定义好的,但在不少现实任务中,有必要基于数据样本来确定合适的距离计算式,这可通过 **“距离度量学习”(distance metric learning)**来实现
四、原型聚类
- 原型聚类亦称 “基于原型的聚类”(prototype-based clustering) 此类算法假设聚类结构能通过一组原型刻画,在现实聚类任务中极为常用。通常情形下,算法先对原型进行初始化,然后对原型进行迭代更新求解。采用不同的原型表示,不同的求解方式,将产生不同的算法
1.k均值算法
- “k均值”(k-means) 算法针对聚类所得簇划分
C
=
{
C
1
,
C
2
,
⋯
,
C
k
}
C = \{C_1,C_2,\cdots,C_k\}
C={C1,C2,⋯,Ck}最小化平方误差
E = ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 2 E = \sum_{i=1}^k\sum_{x\in C_i}||\pmb x - \pmb \mu_i||_2^2 E=i=1∑kx∈Ci∑∣∣xxx−μμμi∣∣22
其中 μ i = 1 ∣ C i ∣ ∑ x ∈ C i x \pmb \mu_i = \frac{1}{|C_i|}\sum_{x\in C_i}\pmb x μμμi=∣Ci∣1∑x∈Cixxx是簇 C i C_i Ci的均值向量。直观来看,上式在一定程度上刻画了簇内样本围绕簇均值向量的紧密程度,E值越小则簇内样本相似度越高。
最小化上式并不容易,找到它的最优解需考察样本集D所有可能的簇划分,这是一个NP难问题。因此,k均值算法采用了贪心策略,通过迭代优化来近似求解上式,算法流程如下。
其中第1行对均值向量进行初始化,在第4-8行与第9-16行依次对当前簇划分及均值向量迭代更新,若迭代更新后聚类结果保持不变,则第18行将当前簇划分结果返回。
2.学习向量化
- 与k均值算法类似,“学习向量量化”(Learning Vector Quantization,简称LVQ) 也是试图找到一组原型向量来刻画聚类结构,但与一般聚类算法不同的是,LVQ假设数据样本带有类别标记,学习过程利用样本的这些监督信息来辅助聚类。
给定样本集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
m
,
y
m
)
}
D = \{(\pmb x_1,y_1),(\pmb x_2,y_2),\cdots,(\pmb x_m,y_m)\}
D={(xxx1,y1),(xxx2,y2),⋯,(xxxm,ym)},每个样本
x
j
\pmb x_j
xxxj是由n个属性描述的特征向量
(
x
j
1
;
x
j
2
;
⋯
;
x
j
n
)
,
y
j
∈
Y
(x_{j1};x_{j2};\cdots;x_{jn}),y_j\in \mathcal Y
(xj1;xj2;⋯;xjn),yj∈Y是样本
x
j
\pmb x_j
xxxj的类别标记。LVQ的目标是学得一组n维原型向量
{
p
1
,
p
2
,
⋯
,
p
q
}
\{\pmb p_1,\pmb p_2,\cdots,\pmb p_q\}
{ppp1,ppp2,⋯,pppq},每个原型向量代表一个聚类簇,簇标记
t
i
∈
Y
t_i\in \mathcal Y
ti∈Y.
算法第1行先对原型向量进行初始化,例如对第q个簇从标记为
t
q
t_q
tq的样本中随机选取一个作为原型向量。算法第2~12行对原型向量进行迭代优化。在每一轮迭代中,算法随机选取一个有标记的训练样本,找出与其距离最近的原型向量,并根据两者的类别标记是否一致来对原型向量进行相应的更新。
显然,LVQ的关键是第6-10行,即如何更新原型向量。直观上看,对样本
x
j
\pmb x_j
xxxj,若最近的原型向量
p
i
∗
\pmb p_i^*
pppi∗与
x
j
\pmb x_j
xxxj的类别标记相同,则
p
i
∗
\pmb p_i^*
pppi∗向
x
j
\pmb x_j
xxxj的方向靠拢,此时新原型向量为
p
′
=
p
i
∗
+
η
⋅
(
x
j
−
p
i
∗
)
\pmb p' = \pmb p_i^* + \eta\cdot(\pmb x_j - \pmb p_i^*)
ppp′=pppi∗+η⋅(xxxj−pppi∗)
p
′
\pmb p'
ppp′与
x
j
\pmb x_j
xxxj之间的距离为
∣
∣
p
′
−
x
j
∣
∣
2
=
∣
∣
p
i
∗
+
η
⋅
(
x
j
−
p
i
∗
)
∣
∣
2
=
(
1
−
η
)
⋅
∣
∣
p
i
∗
−
x
j
∣
∣
2
\begin{aligned} ||\pmb p' - \pmb x_j||_2 &= ||\pmb p_i^* + \eta\cdot(\pmb x_j - \pmb p_i^*)||_2\\ & = (1-\eta)\cdot||\pmb p_i^* - \pmb x_j||_2 \end{aligned}
∣∣ppp′−xxxj∣∣2=∣∣pppi∗+η⋅(xxxj−pppi∗)∣∣2=(1−η)⋅∣∣pppi∗−xxxj∣∣2
令学习率
η
∈
(
0
,
1
)
\eta\in(0,1)
η∈(0,1),则原型向量
p
i
∗
\pmb p_i^*
pppi∗在更新为
p
′
\pmb p'
ppp′之后将更接近
x
j
\pmb x_j
xxxj.
类似的,若
p
i
∗
\pmb p_i^*
pppi∗与
x
j
\pmb x_j
xxxj的类别标记不同,则更新后的原型向量与
x
j
\pmb x_j
xxxj之间的距离将增大为
(
1
+
η
)
⋅
∣
∣
p
i
∗
−
x
j
∣
∣
2
(1+\eta)\cdot||\pmb p_i^* - \pmb x_j||_2
(1+η)⋅∣∣pppi∗−xxxj∣∣2,从而远离
x
j
\pmb x_j
xxxj
在学得一组原型向量
{
p
1
,
p
2
,
⋯
,
p
q
}
\{\pmb p_1,\pmb p_2,\cdots,\pmb p_q\}
{ppp1,ppp2,⋯,pppq}后,即可实现对样本空间
χ
\chi
χ的簇划分。对任意样本
x
\pmb x
xxx,它将划入与其距离最近的原型向量所代表的簇中;换言之,每个原型向量
p
i
\pmb p_i
pppi定义了与之相关的一个区域
R
i
R_i
Ri,该区域中每个样本与
p
i
\pmb p_i
pppi的距离不大于它与其他原型向量
p
i
′
(
i
≠
i
′
)
\pmb p_{i'}(i\ne i')
pppi′(i=i′)的距离,即
R
i
=
{
x
∈
χ
∣
∣
∣
x
−
p
i
∣
∣
2
≤
∣
∣
x
−
p
i
′
∣
∣
2
,
i
′
≠
i
}
R_i = \{\pmb x \in \chi |\quad ||\pmb x - \pmb p_i||_2 \le ||\pmb x - \pmb p_{i'}||_2,i'\ne i\}
Ri={xxx∈χ∣∣∣xxx−pppi∣∣2≤∣∣xxx−pppi′∣∣2,i′=i}
由此形成对样本空间
χ
\chi
χ的簇划分
{
R
1
,
R
2
,
⋯
,
R
q
}
\{R_1,R_2,\cdots,R_q\}
{R1,R2,⋯,Rq},该划分通常称为“Voronoi剖分”(Voronoi tessellation)
3.高斯混合聚类
- 与k均值、LVQ用原型向量来刻画聚类结构不同,高斯混合(Mixture-of-Gaussian)聚类采用概率模型来表达聚类原型
- (多元)高斯分布的定义
对n维样本空间 χ \chi χ中的随机向量 x \pmb x xxx,若 x \pmb x xxx服从高斯分布,其概率密度函数为
p ( x ) = 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 e − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) , p(\pmb x) = \frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}}e^{-\frac{1}{2}(x - \mu)^T \Sigma^{-1}(x - \mu)}, p(xxx)=(2π)2n∣Σ∣211e−21(x−μ)TΣ−1(x−μ),
其中 μ \pmb \mu μμμ是n为均值向量, Σ \Sigma Σ是 n × n n\times n n×n的协方差矩阵,高斯分布完全由均值向量 μ \pmb \mu μμμ 和协方差矩阵 Σ \Sigma Σ这两个参数确定。为了明确高斯分布与相应参数的依赖关系,将概率密度函数记为 p ( x ∣ μ , Σ ) p(\pmb x| \pmb \mu, \pmb \Sigma) p(xxx∣μμμ,ΣΣΣ)
我们可定义高斯混合分布
p M ( x ) = ∑ i = 1 k α i ⋅ p ( x ∣ μ i , Σ i ) p_{\mathcal M}(\pmb x) = \sum_{i=1}^k \alpha_i \cdot p(\pmb x| \pmb \mu_i, \pmb \Sigma_i) pM(xxx)=i=1∑kαi⋅p(xxx∣μμμi,ΣΣΣi)
该分布共由k个混合成分组成,每个混合成分对应一个高斯分布。其中 μ i \pmb \mu_i μμμi与 Σ i \pmb \Sigma_i ΣΣΣi是第i个高斯混合成分的参数,而 α i ≥ 0 \alpha_i \ge 0 αi≥0为相应的 “混合系数”(mixture coefficient), ∑ i = 1 k α 1 = 1 \sum_{i=1}^k \alpha_1 = 1 ∑i=1kα1=1
假设样本的生成过程由高斯混合分布给出:首先,根据 α 1 , α 2 , ⋯ , α k \alpha_1,\alpha_2,\cdots,\alpha_k α1,α2,⋯,αk定义的先验分布选择高斯混合成分,其中 α i \alpha_i αi为选择第i个混合成分的概率;然后,根据被选择的混合成分的概率密度函数进行采样,从而生成相应的样本。
若训练集 D = { x 1 , x 2 , ⋯ , x m } D = \{\pmb x_1,\pmb x_2,\cdots,\pmb x_m\} D={xxx1,xxx2,⋯,xxxm}由上述过程生成,令随机变量 z j ∈ { 1 , 2 , ⋯ , k } z_j\in \{1,2,\cdots,k\} zj∈{1,2,⋯,k}表示生成样本 x j \pmb x_j xxxj的高斯混合成分,其取值未知。显然, z j z_j zj的先验概率 P ( z j = i ) P(z_j = i) P(zj=i)对应于 α i ( i = 1 , 2 , ⋯ , k ) \alpha_i(i=1,2,\cdots,k) αi(i=1,2,⋯,k).根据贝叶斯定理, z j z_j zj的后验概率分布对应于
p M ( z j = i ∣ x j ) = P ( z j = i ) ⋅ p M ( x j ∣ z j = i ) p M ( x j ) = α i ⋅ p ( x j ∣ μ i , Σ i ) ∑ l = 1 k α l ⋅ p ( x j ∣ μ l , Σ l ) \begin{aligned} p_{\mathcal M}(z_j = i|\pmb x_j) &= \frac{P(z_j = i)\cdot p_{\mathcal M}(\pmb x_j|z_j = i)}{p_{\mathcal M}(\pmb x_j)}\\ & = \frac{\alpha_i \cdot p(\pmb x_j|\pmb \mu_i,\pmb \Sigma_i)}{ \sum_{l=1}^k \alpha_l \cdot p(\pmb x_j| \pmb \mu_l, \pmb \Sigma_l)} \end{aligned} pM(zj=i∣xxxj)=pM(xxxj)P(zj=i)⋅pM(xxxj∣zj=i)=∑l=1kαl⋅p(xxxj∣μμμl,ΣΣΣl)αi⋅p(xxxj∣μμμi,ΣΣΣi)
换言之, p M ( z j = i ∣ x j ) p_{\mathcal M}(z_j = i|\pmb x_j) pM(zj=i∣xxxj)给出了样本 x j \pmb x_j xxxj由第i个高斯混合成分生成的后验概率。为方便叙述,将其简记为 γ j i ( i = 1 , 2 , ⋯ , k ) \gamma_{ji}(i = 1,2,\cdots,k) γji(i=1,2,⋯,k)
当高斯混合分布已知时,高斯混合聚类将样本集D划分为k个簇 C = { C 1 , C 2 , ⋯ , C k } \mathcal C = \{C_1,C_2,\cdots,C_k\} C={C1,C2,⋯,Ck},每个样本 x j \pmb x_j xxxj的簇标记 λ j \lambda_j λj如下确定:
λ j = argmax i ∈ { 1 , 2 , ⋯ , k } γ j i \lambda_j = \underset{i\in\{1,2,\cdots,k\}}{\operatorname{argmax}}\gamma_{ji} λj=i∈{1,2,⋯,k}argmaxγji
因此,从原型聚类的角度来看,高斯混合聚类是采用概率模型(高斯分布)对原型进行刻画,簇划分则由原型对应后验概率确定
如何求解高斯混合模型参数呢?显然,给定数据集D,可采用极大似然估计,即最大化(对数)似然
L L ( D ) = ln ( ∏ j = 1 m p M ( x ) ) = ∑ j = 1 m ln ( ∑ i = 1 k α i ⋅ p ( x j ∣ μ i , Σ i ) ) \begin{aligned} LL(D) &= \operatorname{ln}(\prod_{j=1}^m p_{\mathcal M}(\pmb x))\\ & = \sum_{j=1}^m \operatorname{ln}( \sum_{i=1}^k \alpha_i \cdot p(\pmb x_j| \pmb \mu_i, \pmb \Sigma_i)) \end{aligned} LL(D)=ln(j=1∏mpM(xxx))=j=1∑mln(i=1∑kαi⋅p(xxxj∣μμμi,ΣΣΣi))
常采用EM算法进行迭代优化求解。
极大似然估计推导过程暂略
μ i = ∑ j = 1 m γ j i x j ∑ j = 1 m γ j i Σ i = ∑ i = 1 m ( x j − μ i ) ( x j − μ i ) T ∑ j = 1 m γ j i α i = 1 m ∑ j = 1 m γ j i \begin{aligned} & \pmb \mu_i = \frac{\sum_{j=1}^m \gamma_{ji}x_j}{\sum_{j=1}^m \gamma_{ji}}\\ & \pmb \Sigma_i = \frac{\sum_{i=1}^m (x_j - \mu_i)(x_j - \mu_i)^T}{\sum_{j=1}^m \gamma_{ji}} \\ & \alpha_i = \frac{1}{m}\sum_{j=1}^m \gamma_{ji} \end{aligned} μμμi=∑j=1mγji∑j=1mγjixjΣΣΣi=∑j=1mγji∑i=1m(xj−μi)(xj−μi)Tαi=m1j=1∑mγji
高斯混合模型的EM算法:在每步迭代中,先根据当前参数来计算每个样本属于每个高斯成分的后验概率
γ
j
i
\gamma_{ji}
γji(E步),再根据推导公式更新模型参数(M步).
五、密度聚类
- 密度聚类亦称 “基于密度的聚类”(density-based cluster),此类算法假设聚类结构能通过样本的分布的紧密程度确定。通常,密度聚类算法从样本密度的角度来考察样本之间的可连续性,并基于可连接样本不断拓展聚类簇以获得最终的聚类结果 。
- DBSCAN是一种著名的密度聚类算法,它基于一组“邻域”(neightborhood)参数 ( ϵ , M i n P t s ) (\epsilon, MinPts) (ϵ,MinPts)来刻画样本分布的紧密程度。给定数据集 D = { x 1 , x 2 , ⋯ , x m } D = \{\pmb x_1,\pmb x_2,\cdots , \pmb x_m\} D={xxx1,xxx2,⋯,xxxm},定义下面这几个概念:
- ϵ \epsilon ϵ-领域:对 x j ∈ D \pmb x_j\in D xxxj∈D,其 ϵ \epsilon ϵ-领域包含样本集D中与 x j \pmb x_j xxxj不大于 ϵ \epsilon ϵ的样本,即 N ϵ ( x j ) = { x i ∈ D ∣ dist ( x i , x j ) ≤ ϵ } ; N_{\epsilon}(\pmb x_j) = \{\pmb x_i \in D | \operatorname{dist}(\pmb x_i, \pmb x_j)\le \epsilon\}; Nϵ(xxxj)={xxxi∈D∣dist(xxxi,xxxj)≤ϵ};
- 核心对象(core object):若 x j \pmb x_j xxxj的 ϵ \epsilon ϵ-领域至少包含 M i n P t s MinPts MinPts个样本,即 ∣ N ϵ ( x j ) ≥ M i n P t s ∣ |N_{\epsilon}(\pmb x_j)\ge MinPts| ∣Nϵ(xxxj)≥MinPts∣,则 x j \pmb x_j xxxj是一个核心对象
- 密度直达(directly density-reachable):若 x j \pmb x_j xxxj位于 x i \pmb x_i xxxi的 ϵ \epsilon ϵ-领域中,且 x i \pmb x_i xxxi是核心对象,则称 x j \pmb x_j xxxj由 x i \pmb x_i xxxi密度直达;
- 密度可达(density-reachable):对于 x i \pmb x_i xxxi与 x j \pmb x_j xxxj,若存在样本序列 p 1 , p 2 , ⋯ , p n \pmb p_1,\pmb p_2,\cdots,\pmb p_n ppp1,ppp2,⋯,pppn,其中 p 1 = x 1 , p n = p j \pmb p_1 =\pmb x_1,\pmb p_n =\pmb p_j ppp1=xxx1,pppn=pppj且 p i + 1 \pmb p_{i+1} pppi+1由 p i \pmb p_{i} pppi密度密度直达,则称 x j \pmb x_j xxxj由 x i \pmb x_i xxxi密度可达
- 密度相连(density-connected):对于
x
i
\pmb x_i
xxxi与
x
j
\pmb x_j
xxxj,若存在
x
k
\pmb x_k
xxxk使得
x
i
\pmb x_i
xxxi和
x
j
\pmb x_j
xxxj均由
x
k
\pmb x_k
xxxk密度可达,则称
x
i
\pmb x_i
xxxi与
x
j
\pmb x_j
xxxj密度相连
基于这些概念,DBSCAN将“簇”定义为:由密度可达关系导出的最大的密度相连样本集合。形式化地说,给定邻域参数 ( ϵ , M i n P t s ) (\epsilon,MinPts) (ϵ,MinPts),簇 C ⊆ D C\subseteq D C⊆D是满足以下性质的飞空样本子集:
连 接 性 ( c o n n e c t i v i t y ) : x i ∈ C , x j ∈ C ⇒ x i 与 x j 密 度 相 连 最 大 性 ( m a x i m a l i t y ) : x i ∈ C , x j 由 x i 密 度 可 达 , ⇒ x j ∈ C \begin{aligned} & 连接性(connectivity):\pmb x_i \in C,\pmb x_j \in C \Rightarrow \pmb x_i 与 \pmb x_j 密度相连\\ & 最大性(maximality):\pmb x_i \in C,\pmb x_j由\pmb x_i 密度可达 ,\Rightarrow \pmb x_j \in C \end{aligned} 连接性(connectivity):xxxi∈C,xxxj∈C⇒xxxi与xxxj密度相连最大性(maximality):xxxi∈C,xxxj由xxxi密度可达,⇒xxxj∈C
DBSCAN算法先任选数据集中的一个核心对象为“种子”(seed),再由此出发确定相应的聚类簇。
算法先根据给定的领域参数 ( ϵ , M i n P t s ) (\epsilon,MinPts) (ϵ,MinPts)找出所有核心对象;然后以任一核心对象为出发点,找出由密度可达的样本生成聚类簇,直到所有核心对象均被访问过。
六、层次聚类
- 层次聚类(hierarchical clustering) 试图在不同层次对数据集进行划分,从而形成树形的聚类结构。数据集的划分可采用“自底向上”的聚合策略,也可采用“自顶向下”的分拆策略
AGNES是一种采用自底向上聚合策略的层次聚类算法。它先将数据集中的每个样本看作一个初始聚类簇,然后在算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复,直至达到预设的聚类簇个数。这里的关键是如何计算聚类簇之间的距离。实际上,每个簇是一个样本集合,因此,只需要采用集合的某种距离即可。例如,给定聚类簇
C
i
C_i
Ci与
C
j
C_j
Cj,可通过下面的式子来计算距离:
最
小
距
离
:
d
min
(
C
i
,
C
j
)
=
min
x
∈
C
i
,
z
∈
C
j
dist
(
x
,
z
)
最
大
距
离
:
d
max
(
C
i
,
C
j
)
=
max
x
∈
C
i
,
z
∈
C
j
dist
(
x
,
z
)
平
均
距
离
:
d
avg
(
C
i
,
C
j
)
=
1
∣
C
i
∣
∣
C
i
∣
∑
x
∈
C
i
∑
x
∈
C
j
dist
(
x
,
z
)
\begin{aligned} & 最小距离:d_{\operatorname{min}}(C_i,C_j) = \underset{x\in C_i,z\in C_j}{\operatorname{min}}\operatorname{dist}(\pmb x, \pmb z)\\ & 最大距离:d_{\operatorname{max}}(C_i,C_j) = \underset{x\in C_i,z\in C_j}{\operatorname{max}}\operatorname{dist}(\pmb x, \pmb z)\\ & 平均距离:d_{\operatorname{avg}}(C_i,C_j) = \frac{1}{|C_i||C_i|}\sum_{x\in C_i}\sum_{x\in C_j}\operatorname{dist}(\pmb x, \pmb z)\\ \end{aligned}
最小距离:dmin(Ci,Cj)=x∈Ci,z∈Cjmindist(xxx,zzz)最大距离:dmax(Ci,Cj)=x∈Ci,z∈Cjmaxdist(xxx,zzz)平均距离:davg(Ci,Cj)=∣Ci∣∣Ci∣1x∈Ci∑x∈Cj∑dist(xxx,zzz)
当聚类簇距离由
d
min
d_{\operatorname{min}}
dmin、
d
max
d_{\operatorname{max}}
dmax或
d
avg
d_{\operatorname{avg}}
davg计算时,AGNES算法被相应地称为 “单链接”(single-linkage)、“全链接”(complete-linkage) 或 “均链接”(average-linkage) 算法