机器学习第9章——聚类
9.聚类
9.1 聚类任务
-
在“无监督学习”任务中研究最多、应用最广.
-
聚类目标:将数据集中的样本划分为若干个通常不相交的子集(“簇”,cluster)
-
聚类既可以作为一个单独过程(用于找寻数据内在的分布结构),也可作为分类等其他学习任务的前驱过程。
-
形式化描述
- 假定样本集
D = { x 1 , x 2 , . . . , x m } D=\{x_1,x_2,...,x_m\} D={x1,x2,...,xm}
包含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维的特征向量,聚类算法将样本集D划分成k个不相交的簇
{ C l ∣ l = 1 , 2 , . . . k } D = ⋃ l = 1 k C l , 且 C l , ⋂ l , ≠ l C l = ∅ \{C_l|l=1,2,...k\}\\ D=\bigcup_{l=1}^k C_l,且C_{l^,}\bigcap_{l^,\neq l}C_l=\emptyset {Cl∣l=1,2,...k}D=l=1⋃kCl,且Cl,l,=l⋂Cl=∅
相应地,用
λ ∈ { 1 , 2 , . . . , k } \lambda∈\{1,2,...,k\} λ∈{1,2,...,k}
表示样本
x j x_j xj
的“簇标记”(cluster label),即
x j ∈ C λ j x_j\in C_{\lambda_j} xj∈Cλj
于是,聚类的结果可用包含m个元素的簇标记向量
λ = { λ 1 ; λ 2 ; . . . ; λ m } \lambda=\{\lambda_1;\lambda_2;...;\lambda_m\} λ={λ1;λ2;...;λm}
表示。
- 假定样本集
9.2 性能度量
- 聚类性能度量,即聚类“有效性指标”
- 直观上,我们希望“物以类聚”,即同簇的样本尽可能彼此相似,不同簇的样本尽可能不同。换言之,聚类结果的“簇内相似度”高,且“簇间相似度”低,这样的聚类效果较好。
- 聚类性能度量指标
- 外部指标:将聚类结果与某个“参考模型”进行比较。
- 内部指标:直接考察聚类结果而不用任何参考模型。
数据集
D
=
{
x
1
,
x
2
,
.
.
.
,
x
m
}
D=\{x_1,x_2,...,x_m\}
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
k
∗
}
C=\{C_1^*,C_2^*,...,C_k^*\}
C={C1∗,C2∗,...,Ck∗}
相应地
令
λ
与
λ
∗
分别表示与
C
和
C
∗
对应的簇标记向量
令\lambda与\lambda^*分别表示与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
}
a=|SS|,SS=\{(x_i,x_j)|\lambda_i=\lambda_j,\lambda_i^*=\lambda_j^*,i<j\}\\ b=|SD|,SD=\{(x_i,x_j)|\lambda_i=\lambda_j,\lambda_i^*\neq\lambda_j^*,i<j\}\\ c=|DS|,DS=\{(x_i,x_j)|\lambda_i\neq\lambda_j,\lambda_i^*=\lambda_j^*,i<j\}\\ d=|DD|,DD=\{(x_i,x_j)|\lambda_i\neq\lambda_j,\lambda_i^*\neq\lambda_j^*,i<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}
以下图10个样本点为例
-
符合SS的点有
( x 1 , x 2 ) , ( x 1 , x 6 ) , ( x 2 , x 6 ) , ( x 3 , x 7 ) , ( x 5 , x 8 ) , ( x 5 , x 9 ) , ( x 5 , x 10 ) , ( x 8 , x 9 ) , ( x 8 , x 10 ) , ( x 9 , x 10 ) (x_1,x_2),(x_1,x_6),(x_2,x_6),(x_3,x_7),\\ (x_5,x_8),(x_5,x_9),(x_5,x_{10}),(x_8,x_9),\\ (x_8,x_{10}),(x_9,x_{10}) (x1,x2),(x1,x6),(x2,x6),(x3,x7),(x5,x8),(x5,x9),(x5,x10),(x8,x9),(x8,x10),(x9,x10)
所以
a = ∣ S S ∣ = 10 a=|SS|=10 a=∣SS∣=10 -
符合SD的点有
( x 1 , x 3 ) , ( x 1 , x 7 ) , ( x 2 , x 3 ) , ( x 2 , x 7 ) , ( x 3 , x 6 ) , ( x 6 , x 7 ) , ( x 4 , x 5 ) , ( x 4 , x 8 ) , ( x 4 , x 9 ) , ( x 4 , x 10 ) (x_1,x_3),(x_1,x_7),(x_2,x_3),(x_2,x_7),(x_3,x_6),(x_6,x_7),\\ (x_4,x_5),(x_4,x_8),(x_4,x_9),(x_4,x_{10}) (x1,x3),(x1,x7),(x2,x3),(x2,x7),(x3,x6),(x6,x7),(x4,x5),(x4,x8),(x4,x9),(x4,x10)
所以
b = ∣ S D ∣ = 10 b=|SD|=10 b=∣SD∣=10 -
符合DS的点有
( x 1 , x 4 ) , ( x 2 , x 4 ) , ( x 4 , x 6 ) , ( x 3 , x 5 ) , ( x 3 , x 8 ) , ( x 3 , x 9 ) , ( x 3 , x 10 ) , ( x 5 , x 7 ) , ( x 7 , x 8 ) , ( x 7 , x 9 ) , ( x 7 , x 10 ) , (x_1,x_4),(x_2,x_4),(x_4,x_6),\\ (x_3,x_5),(x_3,x_8),(x_3,x_9),(x_3,x_{10}),\\ (x_5,x_7),(x_7,x_8),(x_7,x_9),(x_7,x_{10}), (x1,x4),(x2,x4),(x4,x6),(x3,x5),(x3,x8),(x3,x9),(x3,x10),(x5,x7),(x7,x8),(x7,x9),(x7,x10),
所以
c = ∣ D S ∣ = 11 c=|DS|=11 c=∣DS∣=11 -
符合DD的点有
( x 1 , x 5 ) , ( x 1 , x 8 ) , ( x 1 , x 9 ) , ( x 1 , x 10 ) , ( x 2 , x 5 ) , ( x 2 , x 8 ) , ( x 2 , x 9 ) , ( x 2 , x 10 ) , ( x 5 , x 6 ) , ( x 6 , x 8 ) , ( x 6 , x 9 ) , ( x 6 , x 10 ) ( x 3 , x 4 ) , ( x 4 , x 7 ) (x_1,x_5),(x_1,x_8),(x_1,x_9),(x_1,x_{10}),\\ (x_2,x_5),(x_2,x_8),(x_2,x_9),(x_2,x_{10}),\\ (x_5,x_6),(x_6,x_8),(x_6,x_9),(x_6,x_{10})\\ (x_3,x_4),(x_4,x_7) (x1,x5),(x1,x8),(x1,x9),(x1,x10),(x2,x5),(x2,x8),(x2,x9),(x2,x10),(x5,x6),(x6,x8),(x6,x9),(x6,x10)(x3,x4),(x4,x7)
所以
d = ∣ D D ∣ = 14 d=|DD|=14 d=∣DD∣=14 -
总的有
a + b + c + d = m ( m − 1 ) 2 = 10 × 9 2 = 45 a+b+c+d=\frac{m(m-1)}{2}=\frac{10\times 9}{2}=45 a+b+c+d=2m(m−1)=210×9=45 -
基于上述所求值可计算外部指标(需要借助数据真实的标签)
-
Jaccard指数(JC)
J C = a a + b + c JC=\frac{a}{a+b+c} JC=a+b+ca -
FM指数(FMI)
F M I = a a + b ⋅ a a + c FMI=\sqrt{\frac{a}{a+b}\cdot\frac{a}{a+c}} FMI=a+ba⋅a+ca -
Rand指数(RI)
R I = 2 ( a + d ) m ( m − 1 ) RI=\frac{2(a+d)}{m(m-1)} RI=m(m−1)2(a+d)
-
-
考虑聚类结果的簇划分
C = { C 1 , C 2 , . . . , C k } C=\{C_1,C_2,...,C_k\} C={C1,C2,...,Ck}-
定义簇C内样本间的平均距离
a v g ( C ) = 2 ∣ C ∣ ( ∣ C ∣ − 1 ) ∑ 1 ≤ i ≤ j ≤ ∣ C ∣ d i s t ( x i , x j ) avg(C)=\frac{2}{|C|(|C|-1)} \sum_{1\leq i\leq j \leq|C|}dist(x_i,x_j) avg(C)=∣C∣(∣C∣−1)21≤i≤j≤∣C∣∑dist(xi,xj) -
簇C内样本间的最远距离
d i a m ( C ) = m a x 1 ≤ i ≤ j ≤ ∣ C ∣ d i s t ( x i , x j ) diam(C)=max_{1\leq i\leq j\leq|C|}dist(x_i,x_j) diam(C)=max1≤i≤j≤∣C∣dist(xi,xj) -
两个簇的最近样本间的距离
d m i n ( C i , C j ) = m i n 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)=minxi∈Ci,xj∈Cjdist(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)
-
-
基于上述所求值可计算内部指标(不需要借助数据真实的标签,比较常用,毕竟真实的标签可遇不可求)
-
DB指数(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=\frac{1}{k}\sum_{i=1}^k\max_{j\neq i}\bigg(\frac{avg(C_i)+avg(C_j)}{d_{cen}(\mu_i,\mu_j)}\bigg) DBI=k1i=1∑kj=imax(dcen(μi,μj)avg(Ci)+avg(Cj))越小越好 \color{red}{越小越好} 越小越好
-
Dunn指数(DI)
D I = min 1 ≤ i ≤ k { max j ≠ i ( d m i n ( C i , C j ) max 1 ≤ l ≤ k d i a m ( C l ) ) } DI=\min_{1\leq i\leq k}\{\max_{j\neq i}\bigg(\frac{d_{min}(C_i,C_j)}{\max_{1\leq l\leq k}diam(C_l)}\bigg)\} DI=1≤i≤kmin{j=imax(max1≤l≤kdiam(Cl)dmin(Ci,Cj))}越大越好 \color{red}{越大越好} 越大越好
-
9.3 距离计算
-
距离度量的性质
-
非负性
d i s t ( x i , x j ) > 0 dist(x_i,x_j)>0 dist(xi,xj)>0 -
同一性:
d i s t ( x i , x j ) = 0 当且仅当 i = j dist(x_i,x_j)=0当且仅当i= j dist(xi,xj)=0当且仅当i=j -
对称性
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)\leq dist(x_i,x_k)+dist(x_k,x_j) dist(xi,xj)≤dist(xi,xk)+dist(xk,xj)
-
-
常用距离
-
闵可夫斯基距离
d i s t ( x i , x j ) = ( ∑ u = 1 n ∣ x i u − x j u ∣ p ) 1 p dist(x_i,x_j)=\bigg(\sum_{u=1}^n|x_{iu}-x_{ju}|^p\bigg)^{\frac{1}{p}} dist(xi,xj)=(u=1∑n∣xiu−xju∣p)p1-
例如
age height weight 小明 14 172 50 小红 13 164 48 小明记为样本 x 1 , 小红记为样本 x 2 小明记为样本x_1,小红记为样本x_2 小明记为样本x1,小红记为样本x2
d i s t ( x 1 , x 2 ) = ( ( 14 − 13 ) p + ( 172 − 164 ) p + ( 50 − 48 ) p ) 1 p dist(x_1,x_2)=\big((14-13)^p+(172-164)^p+(50-48)^p\big)^{\frac{1}{p}} dist(x1,x2)=((14−13)p+(172−164)p+(50−48)p)p1
-
p=1:曼哈顿距离(街区距离)
-
p=2:欧氏距离
-
属性介绍
- 连续属性:在定义域上有无穷多个可能的取值
- 离散属性:在定义域上是有限个可能的取值
- 有序属性:例如定义域为{1,2,3}的离散属性,“1”与“2”比较接近、与“3”比较远,称为“有序属性”。
- 无序属性:例如定义域为{飞机,火车,轮船}这样的离散属性,不能直接在属性值上进行计算,称为“无序属性”。
-
显然闵可夫斯基距离属于有序属性
-
-
VDM(处理无序属性)
-
令
m u , a m_{u,a} mu,a
表示属性a上取值为u的样本数,
m u , a , i m_{u,a,i} mu,a,i
表示在第i个样本簇中在属性a上取值为u的样本数,k为样本簇数,则属性u上两个离散值a与b之间的VDM距离为
V D M p ( a , b ) = ∑ i = 1 k ∣ m u , a , i m u , a − m u , b , i m u , b ∣ p VDM_p(a,b)=\sum_{i=1}^k\bigg|\frac{m_{u,a,i}}{m_{u,a}}-\frac{m_{u,b,i}}{m_{u,b}}\bigg|^p VDMp(a,b)=i=1∑k mu,amu,a,i−mu,bmu,b,i p -
例如
age height weight mode 小明 14 172 50 飞机 小红 13 164 48 汽车 小白 15 170 49 火车 … 经过统计,班级50个人中,15个人喜欢坐飞机,15个人喜欢坐汽车,20个人喜欢坐火车
记
坐火车为 a , 坐汽车为 b 坐火车为a,坐汽车为b 坐火车为a,坐汽车为b
所以
V D M p ( a , b ) = ∣ 15 20 − 15 15 ∣ p + ∣ 5 20 − 0 15 ∣ p VDM_p(a,b)=|\frac{15}{20}-\frac{15}{15}|^p+|\frac{5}{20}-\frac{0}{15}|^p VDMp(a,b)=∣2015−1515∣p+∣205−150∣p
-
-
MinkovDM(处理混合属性)
M i n k o v D M p ( x i , x j ) = ( ∑ u = 1 n c ∣ x i u − x j u ∣ p + ∑ u = n c + 1 n V D M p ( x i u , x j u ) ) 1 p MinkovDM_p(x_i,x_j)=\bigg(\sum_{u=1}^{n_c}|x_{iu}-x_{ju}|^p+\sum_{u=n_c+1}^nVDM_p(x_{iu},x_{ju})\bigg)^{\frac{1}{p}} MinkovDMp(xi,xj)=(u=1∑nc∣xiu−xju∣p+u=nc+1∑nVDMp(xiu,xju))p1 -
加权距离(样本中不同属性的重要性不同时)
d i s t ( x i , x j ) = ( ω 1 ⋅ ∣ x i 1 − x j 1 ∣ p + . . . + ω n ⋅ ∣ x i n − x j n ∣ p ) 1 p dist(x_i,x_j)=\big(\omega_1\cdot|x_{i1}-x_{j1}|^p+...+\omega_n\cdot|x_{in}-x_{jn}|^p\big)^{\frac{1}{p}} dist(xi,xj)=(ω1⋅∣xi1−xj1∣p+...+ωn⋅∣xin−xjn∣p)p1
-
9.4 原型聚类
- 原型聚类
- 也称为“基于原型的聚类”,此类算法假设聚类结构能通过一组原型刻画。
- 算法过程
- 通常情况下,算法先对原型进行初始化,再对原型进行迭代更新求解。
- k均值算法、学习向量量化算法、高斯混合聚类算法。
9.4.1 k均值算法
给定数据集
D
=
{
x
1
,
x
2
,
.
.
.
,
x
m
}
D=\{x_1,x_2,...,x_m\}
D={x1,x2,...,xm}
k均值算法针对聚类所得簇划分
C
=
{
C
1
,
C
2
,
.
.
.
,
C
k
}
这里的
k
是需要事先指定的
(
需要分成
k
类
)
,所以此算法中,
k
的选取很重要
C=\{C_1,C_2,...,C_k\}\\ 这里的k是需要事先指定的(需要分成k类),所以此算法中,k的选取很重要
C={C1,C2,...,Ck}这里的k是需要事先指定的(需要分成k类),所以此算法中,k的选取很重要
最小化平方误差
E
=
∑
i
=
1
k
∑
x
∈
C
i
∣
∣
x
−
μ
i
∣
∣
2
2
μ
i
是簇
C
i
的均值向量
(
1
∣
C
i
∣
∑
x
∈
C
i
x
)
∑
x
∈
C
i
∣
∣
x
−
μ
i
∣
∣
2
2
为簇中的所有点距离中心点的距离和
E=\sum_{i=1}^k\sum_{x\in C_i}||x-\mu_i||^2_2\\ \mu_i是簇C_i的均值向量(\frac{1}{|C_i|}\sum_{x\in C_i}x)\\ \sum_{x\in C_i}||x-\mu_i||^2_2为簇中的所有点距离中心点的距离和
E=i=1∑kx∈Ci∑∣∣x−μi∣∣22μi是簇Ci的均值向量(∣Ci∣1x∈Ci∑x)x∈Ci∑∣∣x−μi∣∣22为簇中的所有点距离中心点的距离和
E值在一定程度上刻画了簇内样本围绕簇均值向量的紧密程度,E值越小,则簇内样本相似度越高。算法的整个过程就是在不断的调整“点该属于哪一个簇”,从而使得平方误差最小
例如,我们以西瓜数据集为例,因为需要划分成3类,所以随机选取了编号6、12、27作为均值向量
μ
1
=
(
0.403
;
0.237
)
、
μ
2
=
(
0.343
;
0.099
)
、
μ
1
=
(
0.532
;
0.472
)
\mu_1=(0.403;0.237)、\mu_2=(0.343;0.099)、\mu_1=(0.532;0.472)
μ1=(0.403;0.237)、μ2=(0.343;0.099)、μ1=(0.532;0.472)
接着对样本点进行划分,例如我们对编号1进行计算距离
d
11
=
(
0.697
−
0.403
)
2
+
(
0.460
−
0.237
)
2
=
0.369
(
样本
1
到簇
1
的距离
)
d
12
=
(
0.697
−
0.343
)
2
+
(
0.460
−
0.099
)
2
=
0.506
(
样本
1
到簇
2
的距离
)
d
13
=
(
0.697
−
0.532
)
2
+
(
0.460
−
0.472
)
2
=
0.166
(
样本
1
到簇
3
的距离
)
d_{11}=\sqrt{(0.697-0.403)^2+(0.460-0.237)^2}=0.369\quad(样本1到簇1的距离)\\ d_{12}=\sqrt{(0.697-0.343)^2+(0.460-0.099)^2}=0.506\quad(样本1到簇2的距离)\\ d_{13}=\sqrt{(0.697-0.532)^2+(0.460-0.472)^2}=0.166\quad(样本1到簇3的距离)
d11=(0.697−0.403)2+(0.460−0.237)2=0.369(样本1到簇1的距离)d12=(0.697−0.343)2+(0.460−0.099)2=0.506(样本1到簇2的距离)d13=(0.697−0.532)2+(0.460−0.472)2=0.166(样本1到簇3的距离)
所以样本1被划分到簇3中,以此类推,对所有样本进行划分,可以得到结果
C
1
=
{
x
5
,
x
6
,
x
7
,
x
8
,
x
9
,
x
10
,
x
13
,
x
14
,
x
15
,
x
17
,
x
18
,
x
19
,
x
20
,
x
23
}
C
2
=
{
x
11
,
x
12
,
x
16
}
C
3
=
{
x
1
,
x
2
,
x
3
,
x
4
,
x
21
,
x
22
,
x
24
,
x
25
,
x
26
,
x
27
,
x
28
,
x
29
,
x
30
}
C_1=\{x_5,x_6,x_7,x_8,x_9,x_{10},x_{13},x_{14},x_{15},x_{17},x_{18},x_{19},x_{20},x_{23}\}\\ C_2=\{x_{11},x_{12},x_{16}\}\\ C_3=\{x_1,x_2,x_3,x_4,x_{21},x_{22},x_{24},x_{25},x_{26},x_{27},x_{28},x_{29},x_{30}\}
C1={x5,x6,x7,x8,x9,x10,x13,x14,x15,x17,x18,x19,x20,x23}C2={x11,x12,x16}C3={x1,x2,x3,x4,x21,x22,x24,x25,x26,x27,x28,x29,x30}
这样三个簇里分别都有样本,可以求出新的均值向量
μ
1
,
=
(
0.473
;
0.214
)
、
μ
2
,
=
(
0.394
;
0.066
)
、
μ
3
,
=
(
0.623
;
0.388
)
\mu_1^,=(0.473;0.214)、\mu_2^,=(0.394;0.066)、\mu_3^,=(0.623;0.388)
μ1,=(0.473;0.214)、μ2,=(0.394;0.066)、μ3,=(0.623;0.388)
更新均值向量,把三个簇内的样本清空,重新再来一遍,又可以得到一次划分结果和一组新的均值向量,循环迭代,直到收敛或者规定次数后停止。下图是进行四次迭代的划分结果。
9.4.2 学习向量量化(LVQ)
与一般聚类算法不同的是,LVQ假设数据样本带有类别标记,学习过程中利用样本的这些监督信息来辅助聚类
给定样本集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
D=\{(x_1,y1),(x_2,y_2),..., (x_m,y_m)\}
D={(x1,y1),(x2,y2),...,(xm,ym)}
LVQ的目标是学得一组n维原型向量
{
p
1
,
p
2
,
.
.
.
,
p
q
}
\{p_1,p_2,...,p_q\}
{p1,p2,...,pq}
每个原型向量代表一个聚类簇。常用于发现类别的“子类”结构。
如果样本标记与预设标记一致,之间的距离变为
∣
∣
p
,
−
x
j
∣
∣
2
=
∣
∣
p
i
∗
+
η
⋅
(
x
j
−
p
i
∗
)
−
x
j
∣
∣
2
=
(
1
−
η
)
⋅
∣
∣
p
i
∗
−
x
j
∣
∣
2
||p^,-x_j||_2=||p_{i^*}+\eta\cdot(x_j-p_{i^*})-x_j||_2\\ =(1-\eta)\cdot||p_{i^*}-x_j||_2
∣∣p,−xj∣∣2=∣∣pi∗+η⋅(xj−pi∗)−xj∣∣2=(1−η)⋅∣∣pi∗−xj∣∣2
如果样本标记与预设标记不一致,之间的距离为
∣
∣
p
,
−
x
j
∣
∣
2
=
∣
∣
p
i
∗
−
η
⋅
(
x
j
−
p
i
∗
)
−
x
j
∣
∣
2
=
(
1
+
η
)
⋅
∣
∣
p
i
∗
−
x
j
∣
∣
2
||p^,-x_j||_2=||p_{i^*}-\eta\cdot(x_j-p_{i^*})-x_j||_2\\ =(1+\eta)\cdot||p_{i^*}-x_j||_2
∣∣p,−xj∣∣2=∣∣pi∗−η⋅(xj−pi∗)−xj∣∣2=(1+η)⋅∣∣pi∗−xj∣∣2
例如,我们以西瓜数据集为例
虽然瓜可以只分为两类(好瓜和坏瓜),但是学习向量量化算法可以划分为更具体的子类,所以我们可以想让它划分为5类,所以原型向量也有5个
p
1
,
p
2
,
p
3
,
p
4
,
p
5
p_1,p_2,p_3,p_4,p_5
p1,p2,p3,p4,p5
对应的类别标记为
c
1
,
c
2
,
c
2
,
c
1
,
c
1
c
1
:
好瓜
=
是
,
c
2
:
好瓜
=
否
c_1,c_2,c_2,c_1,c_1\\ c_1:好瓜=是,c_2:好瓜=否
c1,c2,c2,c1,c1c1:好瓜=是,c2:好瓜=否
所以初始化的原型向量1、4、5需要在“好瓜=是”的标记下随机选择样本;而初始化的原型向量2和3需要在“好瓜=否”的标记下随机选择样本。这里假定5个原型向量初始化为
x
5
=
(
0.556
,
0.215
)
,
x
12
=
(
0.343
,
0.099
)
,
x
18
=
(
0.359
,
0.188
)
,
x
23
=
(
0.483
,
0.312
)
,
x
29
=
(
0.725
,
0.445
)
x_5=(0.556,0.215),x_{12}=(0.343,0.099),x_{18}=(0.359,0.188),\\ x_{23}=(0.483,0.312),x_{29}=(0.725,0.445)
x5=(0.556,0.215),x12=(0.343,0.099),x18=(0.359,0.188),x23=(0.483,0.312),x29=(0.725,0.445)
然后进入第一轮的迭代,随机选择一个样本,假定选择的是
x
1
x_1
x1
这时候需要计算样本1到5个原型向量的距离,计算过程与k均值算法一样
d
11
=
(
0.697
−
0.556
)
2
+
(
0.460
−
0.215
)
2
=
0.283
(
x
1
到
p
1
的距离
)
d
12
=
(
0.697
−
0.343
)
2
+
(
0.460
−
0.099
)
2
=
0.506
(
x
1
到
p
2
的距离
)
d
13
=
(
0.697
−
0.359
)
2
+
(
0.460
−
0.188
)
2
=
0.434
(
x
1
到
p
3
的距离
)
d
14
=
(
0.697
−
0.483
)
2
+
(
0.460
−
0.312
)
2
=
0.260
(
x
1
到
p
4
的距离
)
d
15
=
(
0.697
−
0.725
)
2
+
(
0.460
−
0.445
)
2
=
0.032
(
x
1
到
p
5
的距离
)
d_{11}=\sqrt{(0.697-0.556)^2+(0.460-0.215)^2}=0.283\quad(x_1到p_1的距离)\\ d_{12}=\sqrt{(0.697-0.343)^2+(0.460-0.099)^2}=0.506\quad(x_1到p_2的距离)\\ d_{13}=\sqrt{(0.697-0.359)^2+(0.460-0.188)^2}=0.434\quad(x_1到p_3的距离)\\ d_{14}=\sqrt{(0.697-0.483)^2+(0.460-0.312)^2}=0.260\quad(x_1到p_4的距离)\\ d_{15}=\sqrt{(0.697-0.725)^2+(0.460-0.445)^2}=0.032\quad(x_1到p_5的距离)
d11=(0.697−0.556)2+(0.460−0.215)2=0.283(x1到p1的距离)d12=(0.697−0.343)2+(0.460−0.099)2=0.506(x1到p2的距离)d13=(0.697−0.359)2+(0.460−0.188)2=0.434(x1到p3的距离)d14=(0.697−0.483)2+(0.460−0.312)2=0.260(x1到p4的距离)d15=(0.697−0.725)2+(0.460−0.445)2=0.032(x1到p5的距离)
发现样本1与原型向量5距离最近,且二者具有相同类别标记(都是好瓜),假设学习率为
η
=
0.1
\eta=0.1
η=0.1
则原型向量5可以得到更新
p
5
,
=
p
5
+
η
(
x
1
−
p
5
)
=
(
0.725
,
0.445
)
+
0.1
⋅
(
(
0.697
,
0.460
)
−
(
0.725
,
0.445
)
)
=
(
0.722
,
0.442
)
p_5^,=p_5+\eta(x_1-p_5)\\ =(0.725,0.445)+0.1\cdot((0.697,0.460)-(0.725,0.445))\\ =(0.722,0.442)
p5,=p5+η(x1−p5)=(0.725,0.445)+0.1⋅((0.697,0.460)−(0.725,0.445))=(0.722,0.442)
经过50、100、200、400轮迭代后的结果如下
9.4.3 高斯混合聚类
与k均值、LVQ用原型向量来刻画聚类结构不同,高斯混合聚类采用概率模型来表达聚类原型
- 多元高斯分布的定义
对n维样本空间中的随机向量x,若服从高斯分布,其概率密度函数为
p ( x ) = 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 e − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) 也可记作 p ( x ∣ μ , Σ ) μ 是 n 维均值向量 , Σ 是 n × n 的协方差矩阵 p(x)=\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}}e^{-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)}\quad 也可记作p(x|\mu,\Sigma)\\ \mu是n维均值向量,\Sigma 是n\times n的协方差矩阵 p(x)=(2π)2n∣Σ∣211e−21(x−μ)TΣ−1(x−μ)也可记作p(x∣μ,Σ)μ是n维均值向量,Σ是n×n的协方差矩阵
-
高斯混合分布的定义
p ( x ) = ∑ i = 1 k p ( z j = i ) ⋅ p ( x j ∣ z j = i ) = ∑ i = 1 k α i ⋅ p ( x ∣ μ i , Σ i ) 全概率公式展开 k 个高斯分布共同构成一个 x 向量 其中 , μ i 与 Σ i 是第 i 个 高斯混合成分 的参数。 而 α i > 0 为相应的混合系数 , 且 ∑ i = 1 k α i = 1 p(x)=\sum_{i=1}^kp(z_j=i)\cdot p(x_j|z_j=i)=\sum_{i=1}^k\alpha_i\cdot p(x|\mu_i,\Sigma_i)\quad 全概率公式展开\\ k个高斯分布共同构成一个x向量\\ 其中,\mu_i与\Sigma_i是第i个\color{red}{高斯混合成分}\color{black}{的参数。}\\ 而\alpha_i>0为相应的混合系数,且\sum_{i=1}^k\alpha_i=1 p(x)=i=1∑kp(zj=i)⋅p(xj∣zj=i)=i=1∑kαi⋅p(x∣μi,Σi)全概率公式展开k个高斯分布共同构成一个x向量其中,μi与Σi是第i个高斯混合成分的参数。而αi>0为相应的混合系数,且i=1∑kαi=1 -
假设样本的生成过程由高斯混合分布给出:
-
首先,根据
α 1 , α 2 , . . . , α k \alpha_1,\alpha_2,...,\alpha_k α1,α2,...,αk
定义的先验分布选择高斯混合成分,其中
α i \alpha_i αi
为选择第i个混合成分的概率 -
然后,根据被选择的混合成分的概率密度函数进行采样,从而生成相应的样本。
-
训练集
D
=
{
x
1
,
x
2
,
.
.
,
x
m
}
D=\{x_1,x_2,..,x_m\}
D={x1,x2,..,xm}
随机变量
z
j
∈
1
,
2
,
.
.
.
,
k
:
表示生成样本
x
j
的高斯混合成分
(
x
j
属于哪一个高斯分布
)
z_j\in{1,2,...,k}:表示生成样本x_j的高斯混合成分(x_j属于哪一个高斯分布)
zj∈1,2,...,k:表示生成样本xj的高斯混合成分(xj属于哪一个高斯分布)
属于第i个高斯分布的概率
第
i
个高斯分布的均值和协方差矩阵
:
μ
i
、
Σ
i
p
(
z
j
=
i
)
=
p
(
μ
i
,
Σ
i
)
=
α
i
第i个高斯分布的均值和协方差矩阵:\mu_i、\Sigma_i\\ p(z_j=i)=p(\mu_i,\Sigma_i)=\alpha_i
第i个高斯分布的均值和协方差矩阵:μi、Σip(zj=i)=p(μi,Σi)=αi
给定样本的情况下,属于第i个高斯分布的概率
p
(
z
j
=
i
∣
x
j
)
简记为
γ
j
i
=
p
(
z
j
=
i
)
⋅
p
(
x
j
∣
z
j
=
i
)
p
(
x
j
)
=
α
i
⋅
p
(
x
j
∣
μ
i
,
Σ
i
)
p
(
x
j
)
=
α
i
⋅
p
(
x
j
∣
μ
i
,
Σ
i
)
∑
l
=
1
k
p
(
z
j
=
l
)
p
(
x
j
∣
z
j
=
l
)
=
α
i
⋅
p
(
x
j
∣
μ
i
,
Σ
i
)
∑
l
=
1
k
α
l
⋅
p
(
x
j
∣
μ
l
,
Σ
l
)
p(z_j=i|x_j)\quad 简记为\gamma_{ji}\\ =\frac{p(z_j=i)\cdot p(x_j|z_j=i)}{p(x_j)} =\frac{\alpha_i\cdot p(x_j|\mu_i,\Sigma_i)}{p(x_j)}\\ =\frac{\alpha_i\cdot p(x_j|\mu_i,\Sigma_i)}{\sum_{l=1}^kp(z_j=l)p(x_j|z_j=l)} =\frac{\alpha_i\cdot p(x_j|\mu_i,\Sigma_i)}{\sum_{l=1}^k\alpha_l\cdot p(x_j|\mu_l,\Sigma_l)}\\
p(zj=i∣xj)简记为γji=p(xj)p(zj=i)⋅p(xj∣zj=i)=p(xj)αi⋅p(xj∣μi,Σi)=∑l=1kp(zj=l)p(xj∣zj=l)αi⋅p(xj∣μi,Σi)=∑l=1kαl⋅p(xj∣μl,Σl)αi⋅p(xj∣μi,Σi)
这样在一个给定的样本中,可以求出它属于每一个高斯分布的概率,我们取最大的概率作为它划分进簇的标准
λ
j
=
arg
max
i
∈
{
1
,
2
,
.
.
.
,
k
}
γ
j
i
\lambda_j=\arg\max_{i\in\{1,2,...,k\}}\gamma_{ji}
λj=argi∈{1,2,...,k}maxγji
所以整个过程转化为,确定参数
α
i
,
μ
i
,
Σ
i
\alpha_i,\mu_i,\Sigma_i
αi,μi,Σi
-
极大似然估计求解
L L ( D ) = ln ( ∏ j = 1 k p ( x j ) ) = ∑ j = 1 m ln ( ∑ i = 1 k α i ⋅ p ( x j ∣ μ i , Σ i ) ) LL(D)=\ln\bigg(\prod_{j=1}^kp(x_j)\bigg)\\ =\sum_{j=1}^m\ln\bigg(\sum_{i=1}^k\alpha_i\cdot p(x_j|\mu_i,\Sigma_i)\bigg) LL(D)=ln(j=1∏kp(xj))=j=1∑mln(i=1∑kαi⋅p(xj∣μi,Σi))-
对均值求偏导,并令其等于零进行求解
∂ L L ( D ) ∂ μ i \frac{\partial\,LL(D)}{\partial\,\mu_i} ∂μi∂LL(D)
-
对协方差矩阵求偏导,并令其等于零进行求解
∂ L L ( D ) ∂ Σ i \frac{\partial\,LL(D)}{\partial\,\Sigma_i} ∂Σi∂LL(D)
-
接着需要用拉格朗日对
α i \alpha_i αi
求解,并且条件满足
α i ≥ 0 , ∑ i = 1 k α i = 1 \alpha_i\geq0,\sum_{i=1}^k\alpha_i=1 αi≥0,i=1∑kαi=1
所以拉格朗日形式如下
L L ( D ) + λ ( ∑ i = 1 k α i − 1 ) LL(D)+\lambda\big(\sum_{i=1}^k\alpha_i-1\big) LL(D)+λ(i=1∑kαi−1)
对其求导,并令其等于零进行求解
-
算法流程如下:
还是以西瓜数据集为例,假设我们要划分成三类,也就是高斯混合成分的个数
k
=
3
k=3
k=3
对模型参数进行初始化
-
属于类1、类2、类3的概率
α 1 = 1 3 、 α 2 = 1 3 、 α 3 = 1 3 \alpha_1=\frac{1}{3}、\alpha_2=\frac{1}{3}、\alpha_3=\frac{1}{3} α1=31、α2=31、α3=31 -
类1、类2、类3的均值(随机初始化)
μ 1 = x 6 = ( 0.403 ; 0.237 ) 、 μ 2 = x 22 = ( 0.714 ; 0.346 ) 、 μ 3 = x 27 = ( 0.532 ; 0.472 ) \mu_1=x_6=(0.403;0.237)、\mu_2=x_{22}=(0.714;0.346)、\mu_3=x_{27}=(0.532;0.472) μ1=x6=(0.403;0.237)、μ2=x22=(0.714;0.346)、μ3=x27=(0.532;0.472) -
类1、类2、类3的协方差矩阵(方阵且是对称阵)
维数为特征的个数,因为有密度和含糖率两个特征,所以矩阵为2×2
Σ 1 = Σ 2 = Σ 3 = ( 0.1 0 0 0.1 ) \Sigma_1=\Sigma_2=\Sigma_3=\begin{pmatrix} 0.1 & 0 \\ 0 & 0.1 \\ \end{pmatrix} Σ1=Σ2=Σ3=(0.1000.1)
以样本编号1为例,计算后验概率
γ
11
=
α
1
⋅
p
(
x
1
∣
μ
1
,
Σ
1
)
∑
l
=
1
3
α
l
⋅
p
(
x
1
∣
μ
l
,
Σ
l
)
\gamma_{11}=\frac{\alpha_1\cdot p(x_1|\mu_1,\Sigma_1)}{\sum_{l=1}^3\alpha_l\cdot p(x_1|\mu_l,\Sigma_l)}\\
γ11=∑l=13αl⋅p(x1∣μl,Σl)α1⋅p(x1∣μ1,Σ1)
分子 : α 1 ⋅ p ( x 1 ∣ μ 1 , Σ 1 ) = 1 3 1 ( 2 π ) 2 2 ∣ 0.1 0 0 0.1 ∣ 1 2 e − 1 2 ( ( 0.697 ; 0.460 ) − ( 0.403 ; 0.237 ) ) T ( 0.1 0 0 0.1 ) − 1 ( ( 0.697 ; 0.460 ) − ( 0.403 ; 0.237 ) ) = 1 3 1 2 π ⋅ 0.1 e − 1 2 ( 0.294 0.223 ) ( 10 0 0 10 ) ( 0.294 0.223 ) = 1 0.6 π e − 0.680825 分子:\\ \alpha_1\cdot p(x_1|\mu_1,\Sigma_1)=\frac{1}{3}\frac{1}{(2\pi)^{\frac{2}{2}}\begin{vmatrix} 0.1 & 0 \\ 0 & 0.1 \\ \end{vmatrix}^{\frac{1}{2}}}e^{-\frac{1}{2}\big((0.697;0.460)-(0.403;0.237)\big)^T\begin{pmatrix} 0.1 & 0 \\ 0 & 0.1 \\ \end{pmatrix}^{-1}\big((0.697;0.460)-(0.403;0.237)\big)}\\ =\frac{1}{3}\frac{1}{2\pi \cdot 0.1}e^{-\frac{1}{2}\begin{pmatrix} 0.294 & 0.223 \end{pmatrix}\begin{pmatrix} 10 & 0 \\ 0 & 10 \\ \end{pmatrix}\begin{pmatrix} 0.294\\0.223\end{pmatrix}}\\ =\frac{1}{0.6\pi}e^{-0.680825} 分子:α1⋅p(x1∣μ1,Σ1)=31(2π)22 0.1000.1 211e−21((0.697;0.460)−(0.403;0.237))T(0.1000.1)−1((0.697;0.460)−(0.403;0.237))=312π⋅0.11e−21(0.2940.223)(100010)(0.2940.223)=0.6π1e−0.680825
分母 : ∑ l = 1 3 α l ⋅ p ( x 1 ∣ μ l , Σ l ) = α 1 ⋅ p ( x 1 ∣ μ 1 , Σ 1 ) + α 2 ⋅ p ( x 1 ∣ μ 2 , Σ 2 ) + α 3 ⋅ p ( x 1 ∣ μ 3 , Σ 3 ) = 1 3 1 ( 2 π ) 2 2 ∣ 0.1 0 0 0.1 ∣ 1 2 e − 1 2 ( ( 0.697 ; 0.460 ) − ( 0.403 ; 0.237 ) ) T ( 0.1 0 0 0.1 ) − 1 ( ( 0.697 ; 0.460 ) − ( 0.403 ; 0.237 ) ) + 1 3 1 ( 2 π ) 2 2 ∣ 0.1 0 0 0.1 ∣ 1 2 e − 1 2 ( ( 0.697 ; 0.460 ) − ( 0.714 ; 0.346 ) ) T ( 0.1 0 0 0.1 ) − 1 ( ( 0.697 ; 0.460 ) − ( 0.714 ; 0.346 ) ) + 1 3 1 ( 2 π ) 2 2 ∣ 0.1 0 0 0.1 ∣ 1 2 e − 1 2 ( ( 0.697 ; 0.460 ) − ( 0.532 ; 0.472 ) ) T ( 0.1 0 0 0.1 ) − 1 ( ( 0.697 ; 0.460 ) − ( 0.532 ; 0.472 ) ) = 1 3 1 2 π ⋅ 0.1 e − 1 2 ( 0.294 0.223 ) ( 10 0 0 10 ) ( 0.294 0.223 ) + 1 3 1 2 π ⋅ 0.1 e − 1 2 ( − 0.017 0.114 ) ( 10 0 0 10 ) ( − 0.017 0.114 ) + 1 3 1 2 π ⋅ 0.1 e − 1 2 ( 0.165 − 0.012 ) ( 10 0 0 10 ) ( 0.165 − 0.012 ) = 1 0.6 π ( e − 0.680825 + e − 0.066425 + e − 0.136845 ) 分母:\\ \sum_{l=1}^3\alpha_l\cdot p(x_1|\mu_l,\Sigma_l)=\alpha_1\cdot p(x_1|\mu_1,\Sigma_1)+\alpha_2\cdot p(x_1|\mu_2,\Sigma_2)+\alpha_3\cdot p(x_1|\mu_3,\Sigma_3)\\ =\frac{1}{3}\frac{1}{(2\pi)^{\frac{2}{2}}\begin{vmatrix} 0.1 & 0 \\ 0 & 0.1 \\ \end{vmatrix}^{\frac{1}{2}}}e^{-\frac{1}{2}\big((0.697;0.460)-(0.403;0.237)\big)^T\begin{pmatrix} 0.1 & 0 \\ 0 & 0.1 \\ \end{pmatrix}^{-1}\big((0.697;0.460)-(0.403;0.237)\big)}\\ +\frac{1}{3}\frac{1}{(2\pi)^{\frac{2}{2}}\begin{vmatrix} 0.1 & 0 \\ 0 & 0.1 \\ \end{vmatrix}^{\frac{1}{2}}}e^{-\frac{1}{2}\big((0.697;0.460)-(0.714;0.346)\big)^T\begin{pmatrix} 0.1 & 0 \\ 0 & 0.1 \\ \end{pmatrix}^{-1}\big((0.697;0.460)-(0.714;0.346)\big)}\\ +\frac{1}{3}\frac{1}{(2\pi)^{\frac{2}{2}}\begin{vmatrix} 0.1 & 0 \\ 0 & 0.1 \\ \end{vmatrix}^{\frac{1}{2}}}e^{-\frac{1}{2}\big((0.697;0.460)-(0.532;0.472)\big)^T\begin{pmatrix} 0.1 & 0 \\ 0 & 0.1 \\ \end{pmatrix}^{-1}\big((0.697;0.460)-(0.532;0.472)\big)}\\ =\frac{1}{3}\frac{1}{2\pi \cdot 0.1}e^{-\frac{1}{2}\begin{pmatrix} 0.294 & 0.223 \end{pmatrix}\begin{pmatrix} 10 & 0 \\ 0 & 10 \\ \end{pmatrix}\begin{pmatrix} 0.294\\0.223\end{pmatrix}}+\\ \frac{1}{3}\frac{1}{2\pi \cdot 0.1}e^{-\frac{1}{2}\begin{pmatrix} -0.017 & 0.114 \end{pmatrix}\begin{pmatrix} 10 & 0 \\ 0 & 10 \\ \end{pmatrix}\begin{pmatrix} -0.017\\ 0.114\end{pmatrix}}+\\ \frac{1}{3}\frac{1}{2\pi \cdot 0.1}e^{-\frac{1}{2}\begin{pmatrix} 0.165 & -0.012 \end{pmatrix}\begin{pmatrix} 10 & 0 \\ 0 & 10 \\ \end{pmatrix}\begin{pmatrix} 0.165\\-0.012 \end{pmatrix}}\\ =\frac{1}{0.6\pi}(e^{-0.680825}+e^{-0.066425}+e^{-0.136845}) 分母:l=1∑3αl⋅p(x1∣μl,Σl)=α1⋅p(x1∣μ1,Σ1)+α2⋅p(x1∣μ2,Σ2)+α3⋅p(x1∣μ3,Σ3)=31(2π)22 0.1000.1 211e−21((0.697;0.460)−(0.403;0.237))T(0.1000.1)−1((0.697;0.460)−(0.403;0.237))+31(2π)22 0.1000.1 211e−21((0.697;0.460)−(0.714;0.346))T(0.1000.1)−1((0.697;0.460)−(0.714;0.346))+31(2π)22 0.1000.1 211e−21((0.697;0.460)−(0.532;0.472))T(0.1000.1)−1((0.697;0.460)−(0.532;0.472))=312π⋅0.11e−21(0.2940.223)(100010)(0.2940.223)+312π⋅0.11e−21(−0.0170.114)(100010)(−0.0170.114)+312π⋅0.11e−21(0.165−0.012)(100010)(0.165−0.012)=0.6π1(e−0.680825+e−0.066425+e−0.136845)
γ 11 = 1 0.6 π e − 0.680825 1 0.6 π ( e − 0.680825 + e − 0.066425 + e − 0.136845 ) ≈ 0.219 \gamma_{11}=\frac{\frac{1}{0.6\pi}e^{-0.680825}}{\frac{1}{0.6\pi}(e^{-0.680825}+e^{-0.066425}+e^{-0.136845})}\approx0.219 γ11=0.6π1(e−0.680825+e−0.066425+e−0.136845)0.6π1e−0.680825≈0.219
γ 12 = α 1 ⋅ p ( x 1 ∣ μ 2 , Σ 2 ) ∑ l = 1 3 α l ⋅ p ( x 1 ∣ μ l , Σ l ) = 1 0.6 π e − 0.066425 1 0.6 π ( e − 0.680825 + e − 0.066425 + e − 0.136845 ) ≈ 0.404 \gamma_{12}=\frac{\alpha_1\cdot p(x_1|\mu_2,\Sigma_2)}{\sum_{l=1}^3\alpha_l\cdot p(x_1|\mu_l,\Sigma_l)}=\frac{\frac{1}{0.6\pi}e^{-0.066425}}{\frac{1}{0.6\pi}(e^{-0.680825}+e^{-0.066425}+e^{-0.136845})}\approx0.404\\ γ12=∑l=13αl⋅p(x1∣μl,Σl)α1⋅p(x1∣μ2,Σ2)=0.6π1(e−0.680825+e−0.066425+e−0.136845)0.6π1e−0.066425≈0.404
γ 13 = α 1 ⋅ p ( x 1 ∣ μ 2 , Σ 2 ) ∑ l = 1 3 α l ⋅ p ( x 1 ∣ μ l , Σ l ) = 1 0.6 π e − 0.136845 1 0.6 π ( e − 0.680825 + e − 0.066425 + e − 0.136845 ) ≈ 0.377 \gamma_{13}=\frac{\alpha_1\cdot p(x_1|\mu_2,\Sigma_2)}{\sum_{l=1}^3\alpha_l\cdot p(x_1|\mu_l,\Sigma_l)}=\frac{\frac{1}{0.6\pi}e^{-0.136845}}{\frac{1}{0.6\pi}(e^{-0.680825}+e^{-0.066425}+e^{-0.136845})}\approx0.377\\ γ13=∑l=13αl⋅p(x1∣μl,Σl)α1⋅p(x1∣μ2,Σ2)=0.6π1(e−0.680825+e−0.066425+e−0.136845)0.6π1e−0.136845≈0.377
得到后验概率后,计算新均值向量
μ
1
,
=
∑
j
=
1
m
γ
j
1
x
j
∑
j
=
1
m
γ
j
1
=
(
0.491
;
0.251
)
μ
2
,
=
∑
j
=
1
m
γ
j
2
x
j
∑
j
=
1
m
γ
j
2
=
(
0.571
;
0.281
)
μ
3
,
=
∑
j
=
1
m
γ
j
3
x
j
∑
j
=
1
m
γ
j
3
=
(
0.534
;
0.295
)
\mu_1^,=\frac{\sum_{j=1}^m\gamma_{j1}x_j}{\sum_{j=1}^m\gamma_{j1}}=(0.491;0.251)\\ \mu_2^,=\frac{\sum_{j=1}^m\gamma_{j2}x_j}{\sum_{j=1}^m\gamma_{j2}}=(0.571;0.281)\\ \mu_3^,=\frac{\sum_{j=1}^m\gamma_{j3}x_j}{\sum_{j=1}^m\gamma_{j3}}=(0.534;0.295)\\
μ1,=∑j=1mγj1∑j=1mγj1xj=(0.491;0.251)μ2,=∑j=1mγj2∑j=1mγj2xj=(0.571;0.281)μ3,=∑j=1mγj3∑j=1mγj3xj=(0.534;0.295)
计算新协方差矩阵
Σ
1
,
=
∑
j
=
1
m
γ
j
1
(
x
j
−
μ
1
)
(
x
j
−
μ
1
)
T
∑
j
=
1
m
γ
j
1
=
(
0.025
0.004
0.004
0.016
)
\Sigma_1^,=\frac{\sum_{j=1}^m\gamma_{j1}(x_j-\mu_1)(x_j-\mu_1)^T}{\sum_{j=1}^m\gamma_{j1}}=\begin{pmatrix} 0.025 & 0.004 \\ 0.004 & 0.016 \\ \end{pmatrix}
Σ1,=∑j=1mγj1∑j=1mγj1(xj−μ1)(xj−μ1)T=(0.0250.0040.0040.016)
Σ 2 , = ∑ j = 1 m γ j 2 ( x j − μ 2 ) ( x j − μ 2 ) T ∑ j = 1 m γ j 2 = ( 0.023 0.004 0.004 0.017 ) \Sigma_2^,=\frac{\sum_{j=1}^m\gamma_{j2}(x_j-\mu_2)(x_j-\mu_2)^T}{\sum_{j=1}^m\gamma_{j2}}=\begin{pmatrix} 0.023 & 0.004 \\ 0.004 & 0.017 \\ \end{pmatrix} Σ2,=∑j=1mγj2∑j=1mγj2(xj−μ2)(xj−μ2)T=(0.0230.0040.0040.017)
Σ 3 , = ∑ j = 1 m γ j 3 ( x j − μ 3 ) ( x j − μ 3 ) T ∑ j = 1 m γ j 3 = ( 0.024 0.005 0.005 0.016 ) \Sigma_3^,=\frac{\sum_{j=1}^m\gamma_{j3}(x_j-\mu_3)(x_j-\mu_3)^T}{\sum_{j=1}^m\gamma_{j3}}=\begin{pmatrix} 0.024 & 0.005 \\ 0.005 & 0.016 \\ \end{pmatrix} Σ3,=∑j=1mγj3∑j=1mγj3(xj−μ3)(xj−μ3)T=(0.0240.0050.0050.016)
计算新混合系数(此例中m=30,因为有30个样本)
α
1
,
=
∑
j
=
1
m
γ
j
1
m
=
0.361
\alpha_1^,=\frac{\sum_{j=1}^m\gamma_{j1}}{m}=0.361
α1,=m∑j=1mγj1=0.361
α 2 , = ∑ j = 1 m γ j 2 m = 0.323 \alpha_2^,=\frac{\sum_{j=1}^m\gamma_{j2}}{m}=0.323 α2,=m∑j=1mγj2=0.323
α 3 , = ∑ j = 1 m γ j 3 m = 0.316 \alpha_3^,=\frac{\sum_{j=1}^m\gamma_{j3}}{m}=0.316 α3,=m∑j=1mγj3=0.316
之后进行不断循环迭代,直到收敛或者规定次数后停止。下图是进行5轮、10轮、20轮、50轮迭代的划分结果。
9.5 密度聚类
- 密度聚类的定义
- 密度聚类也称为“基于密度的聚类”。
- 此类算法假设聚类结构能通过样本分布的紧密程度来确定。
- 通常情况下,密度聚类算法从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇来获得最终的聚类结果。
DBSCAN算法
- 是基于一组“邻域”参数
( ϵ , M i n P t s ) (\epsilon,MinPts) (ϵ,MinPts)
来刻画样本分布的紧密程度。
D = { x 1 , x 2 , . . , x n } D=\{x_1,x_2,..,x_n\} D={x1,x2,..,xn}
-
基本概念:
-
ϵ 领域 : 对样本 x j ∈ D ,其 ϵ 邻域包含样本集 D 中与 x j 的距离不大于 ϵ 的样本 \epsilon领域:对样本x_j\in D,其\epsilon邻域包含样本集D中与x_j的距离不大于\epsilon的样本 ϵ领域:对样本xj∈D,其ϵ邻域包含样本集D中与xj的距离不大于ϵ的样本
-
核心对象:若
样本 x j 的 ϵ 邻域 样本x_j的\epsilon邻域 样本xj的ϵ邻域
至少包含MinPts个样本,则该样本点为一个核心对象 -
密度直达:
若样本 x j 位于样本 x i 的 ϵ 邻域中,且 x i 是一个核心对象,则称样本 x j 由 x i 密度直达 若样本x_j位于样本x_i的\epsilon邻域中,且x_i是一个核心对象,则称样本x_j由x_i密度直达 若样本xj位于样本xi的ϵ邻域中,且xi是一个核心对象,则称样本xj由xi密度直达 -
密度可达:
对样本 x i 与 x j , 若存在样本序列 p 1 , p 2 , . . . , p n , 其中 p 1 = x i , p n = x j , 且 p i + 1 由 p i 密度直达,则该 x j 由 x i 密度可达 ; 对样本x_i与x_j,若存在样本序列p_1,p_2,...,p_n,其中p_1=x_i,p_n=x_j,且p_{i+1}由p_i密度直达,则该x_j由x_i密度可达; 对样本xi与xj,若存在样本序列p1,p2,...,pn,其中p1=xi,pn=xj,且pi+1由pi密度直达,则该xj由xi密度可达; -
密度相连:
对样本 x i 与 x j , 若存在 x k 使得 x i 与 x j 均由 x k 密度可达,则称该两样本密度相连。 对样本x_i与x_j,若存在x_k使得x_i与x_j均由x_k密度可达,则称该两样本密度相连。 对样本xi与xj,若存在xk使得xi与xj均由xk密度可达,则称该两样本密度相连。
-
-
“簇”的定义
- 由密度可达关系导出的最大密度相连样本集合。
-
“簇”的形式化描述
-
给定邻域参数
( ϵ , M i n P t s ) (\epsilon,MinPts) (ϵ,MinPts)
簇是满足以下性质的非空样本子集:-
连接性:
x i ∈ C , x j ∈ C → x i 与 x j 密度相连 x_i\in C,x_j\in C→x_i与x_j密度相连 xi∈C,xj∈C→xi与xj密度相连 -
最大性:
x i ∈ C , x i 与 x j 密度可达 → x j ∈ C x_i\in C,x_i与x_j密度可达→x_j\in C xi∈C,xi与xj密度可达→xj∈C
-
-
实际上,若x为核心对象,由x密度可达的所有样本组成的集合记为
X = { x ′ ∈ D ∣ x ′ 由 x 密度可达 } X=\{x'\in D|x'由x密度可达\} X={x′∈D∣x′由x密度可达}
则X为满足连接性与最大性的簇。
-
下图是西瓜数据集通过DBSCAN算法的聚类结果
-
优点
-
这种算法能够发现并排除噪声点的干扰
-
也比较稳定,多次的执行,结果大概率是一样的,就像图的广度优先遍历一样,最后形成的簇是固定的
-
算法执行速度快,因为属于一次性遍历结点。
-
-
缺点
-
需要不断调节参数
( ϵ , M i n P t s ) (\epsilon,MinPts) (ϵ,MinPts) -
不适用样本不均匀的情况
-
样本较多的情况下,收敛时间会延长
-
9.6 层次聚类
-
层次聚类在不同层次对数据集进行划分,从而形成树形的聚类结构。数据集划分既可采用“自底向上”的聚合策略,也可采用“自顶向下”的分拆策略。
-
AGNES算法(自底向上的层次聚类算法)
- 首先,将样本中的每一个样本看做一个初始聚类簇,然后在算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复,直到达到预设的聚类簇的个数。
-
两个聚类簇
C i 和 C j C_i和C_j Ci和Cj
的距离,可以有3种度量方式-
最小距离(单链接):
d m i n ( C i , C j ) = min x ∈ C i , z ∈ C j d i s t ( x , z d_{min}(C_i,C_j)=\min_{x\in C_i,z\in C_j}dist(x, z dmin(Ci,Cj)=x∈Ci,z∈Cjmindist(x,z -
最大距离(全链接):
d m a x ( C i , C j ) = max x ∈ C i , z ∈ C j d i s t ( x , z ) d_{max}(C_i,C_j)=\max_{x\in C_i,z\in C_j}dist(x,z) dmax(Ci,Cj)=x∈Ci,z∈Cjmaxdist(x,z) -
平均距离(均链接):
d a v g ( C i , C j ) = 1 ∣ C i ∣ ∣ C j ∣ ∑ x ∈ C i ∑ z ∈ C j d i s t ( x , z ) d_{avg}(C_i,C_j)=\frac{1}{|C_i||C_j|}\sum_{x\in C_i}\sum_{z\in C_j}dist(x,z) davg(Ci,Cj)=∣Ci∣∣Cj∣1x∈Ci∑z∈Cj∑dist(x,z)
-
AGNES算法如下:
现以一个具体例子为例,模拟AGNES算法流程
-
把5个样本分为5个簇
C 1 = { x 1 } 、 C 2 = { x 2 } 、 C 3 = { x 3 } 、 C 4 = { x 4 } 、 C 5 = { x 5 } C_1=\{x_1\}、C_2=\{x_2\}、C_3=\{x_3\}、C_4=\{x_4\}、C_5=\{x_5\} C1={x1}、C2={x2}、C3={x3}、C4={x4}、C5={x5} -
计算M距离矩阵(注意:是簇之间的距离)
1 2 3 4 5 1 0 1 √10 √20 3 2 1 0 √5 √17 2 3 √10 √5 0 √10 1 4 √20 √17 √10 0 √17 5 3 2 1 √17 0 -
设置当前聚类簇个数
q = 5 q=5 q=5 -
假设我们指定k=1(合并成一个簇),则接下来将开始合并
-
簇1和簇2距离最近(从编号小的开始扫描),则合并簇1和簇2,并将编号重新调整
C 1 = { x 1 , x 2 } 、 C 2 = { x 3 } 、 C 3 = { x 4 } 、 C 4 = { x 5 } C_1=\{x_1,x_2\}、C_2=\{x_3\}、C_3=\{x_4\}、C_4=\{x_5\} C1={x1,x2}、C2={x3}、C3={x4}、C4={x5}
-
矩阵M中需要将原先簇2的信息删除,并且需要将新的簇1信息进行更改
重新计算距离得到新的M矩阵
1 2 3 4 1 0 √5 √17 2 2 √5 0 √10 1 3 √17 √10 0 √17 4 2 1 √17 0 此时
q = 4 q=4 q=4 -
完成第一次的聚类,接着继续找到距离最近的两个簇,分别是簇2和簇4,进行合并,并对编号进行调整
C 1 = { x 1 , x 2 } 、 C 2 = { x 3 , x 5 } 、 C 3 = { x 4 } C_1=\{x_1,x_2\}、C_2=\{x_3,x_5\}、C_3=\{x_4\} C1={x1,x2}、C2={x3,x5}、C
-