模式识别
目录
第一章 绪论
第二章 贝叶斯决策理论
第三章 概率密度函数的参数估计
第四章 非参数判别分类方法
第五章 聚类分析
第六章 特征提取与选择
- 本系列博客包含2,3,4,5,6章的内容
引言
这是我期末复习时候整理的笔记。我会把每一章单独发一篇博客,都搞到一起无法发布,提示字数太多没办法了。
- 教材:模式识别及MATLAB实现
- ISBN:
978-7-121-32127-6
第五章 聚类分析
题目1
聚类分析中,有哪些常见的表示样本相似性的方法?有哪些常用的类间距离定义方式?
解析
在聚类分析中,样本相似性的表示方法和类间距离的定义方式是关键。常见的样本相似性表示方法包括欧氏距离、曼哈顿距离、余弦相似度等。常用的类间距离定义方式包括最短距离法、最长距离法、组间平均链锁法、组内平均链锁法和重心法等。
重要概念
-
样本相似性表示方法:
- 欧氏距离:
d
(
x
,
y
)
=
∑
i
=
1
n
(
x
i
−
y
i
)
2
d(x, y) = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2}
d(x,y)=∑i=1n(xi−yi)2
- 适用场景:适合数值型特征,需保证特征量纲一致。
- 注意事项:对异常值敏感,需进行数据标准化或归一化。
- 曼哈顿距离:
d
(
x
,
y
)
=
∑
i
=
1
n
∣
x
i
−
y
i
∣
d(x, y) = \sum_{i=1}^{n} |x_i - y_i|
d(x,y)=∑i=1n∣xi−yi∣
- 适用场景:适合网格路径问题或特征独立分布的情况。
- 注意事项:对高维数据不稳定。
- 余弦相似度:
cosine similarity
(
x
,
y
)
=
x
⋅
y
∥
x
∥
∥
y
∥
\text{cosine similarity}(x, y) = \frac{x \cdot y}{\|x\| \|y\|}
cosine similarity(x,y)=∥x∥∥y∥x⋅y
- 适用场景:高维稀疏数据(如文本或推荐系统)。
- 注意事项:反映方向相似性,不考虑大小差异。
- 欧氏距离:
d
(
x
,
y
)
=
∑
i
=
1
n
(
x
i
−
y
i
)
2
d(x, y) = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2}
d(x,y)=∑i=1n(xi−yi)2
-
类间距离定义方式:
- 最短距离法:
d
(
C
1
,
C
2
)
=
min
x
∈
C
1
,
y
∈
C
2
d
(
x
,
y
)
d(C_1, C_2) = \min_{x \in C_1, y \in C_2} d(x, y)
d(C1,C2)=minx∈C1,y∈C2d(x,y)
- 适用场景:寻找密度较高的紧密聚类。
- 注意事项:可能产生“链状效应”。
- 最长距离法:
d
(
C
1
,
C
2
)
=
max
x
∈
C
1
,
y
∈
C
2
d
(
x
,
y
)
d(C_1, C_2) = \max_{x \in C_1, y \in C_2} d(x, y)
d(C1,C2)=maxx∈C1,y∈C2d(x,y)
- 适用场景:聚类间差异显著时使用。
- 注意事项:对噪声和异常值敏感。
- 组间平均链锁法:
d ( C 1 , C 2 ) = 1 ∣ C 1 ∣ ∣ C 2 ∣ ∑ x ∈ C 1 ∑ y ∈ C 2 d ( x , y ) d(C_1, C_2) = \frac{1}{|C_1||C_2|} \sum_{x \in C_1} \sum_{y \in C_2} d(x, y) d(C1,C2)=∣C1∣∣C2∣1x∈C1∑y∈C2∑d(x,y)- 适用场景:平衡聚类间所有样本的距离。
- 注意事项:对噪声较为鲁棒,但计算复杂度高。
- 组内平均链锁法:
d ( C 1 , C 2 ) = 1 ∣ C 1 ∣ + ∣ C 2 ∣ ( ∑ x ∈ C 1 ∑ y ∈ C 2 d ( x , y ) + ∑ x , y ∈ C 1 d ( x , y ) + ∑ x , y ∈ C 2 d ( x , y ) ) d(C_1, C_2) = \frac{1}{|C_1| + |C_2|} \left( \sum_{x \in C_1} \sum_{y \in C_2} d(x, y) + \sum_{x, y \in C_1} d(x, y) + \sum_{x, y \in C_2} d(x, y) \right) d(C1,C2)=∣C1∣+∣C2∣1 x∈C1∑y∈C2∑d(x,y)+x,y∈C1∑d(x,y)+x,y∈C2∑d(x,y) - 适用场景:综合类内和类间信息。
- 注意事项:计算复杂度进一步增加。
- 重心法:
d ( C 1 , C 2 ) = d ( x ˉ 1 , x ˉ 2 ) d(C_1, C_2) = d(\bar{x}_1, \bar{x}_2) d(C1,C2)=d(xˉ1,xˉ2)
其中 x ˉ 1 \bar{x}_1 xˉ1和 x ˉ 2 \bar{x}_2 xˉ2分别是 C 1 C_1 C1和 C 2 C_2 C2的重心。- 适用场景:类内分布相对均匀时效果较好。
- 注意事项:对不规则形状的簇可能失效。
- 最短距离法:
d
(
C
1
,
C
2
)
=
min
x
∈
C
1
,
y
∈
C
2
d
(
x
,
y
)
d(C_1, C_2) = \min_{x \in C_1, y \in C_2} d(x, y)
d(C1,C2)=minx∈C1,y∈C2d(x,y)
题目 2
给定待分样本 X = [ X p , X o , X u ] X = [X_p, X_o, X_u] X=[Xp,Xo,Xu], A = { w 1 , w 2 , … , w c } A = \{w_1, w_2, \dots, w_c\} A={w1,w2,…,wc},证明总体离散度矩阵 S t S_t St 是总的类内离散度矩阵 S w S_w Sw 与类间离散度矩阵 S b S_b Sb 之和,即 S t = S w + S b S_t = S_w + S_b St=Sw+Sb。
解析
证明:
令
ω
i
类的离散度矩阵为
S
i
=
∑
X
i
∈
ω
i
(
X
i
−
M
i
)
(
X
i
−
M
i
)
T
,
则
S
W
=
∑
i
=
1
c
s
i
S
b
=
∑
i
=
1
c
N
i
(
M
i
−
M
)
(
M
i
−
M
)
T
S
t
=
∑
i
=
1
N
(
X
i
−
M
)
(
X
i
−
M
)
T
\begin{gathered} &\text{令}\omega_{i}\text{类的离散度矩阵为}S_{i}=\sum_{X_{i}\in\omega_{i}}(X_{i}-M_{i})(X_{i}-&M_{i})^{T},\text{则} \\ &S_{W}=\sum_{i=1}^{c}s_{i} \\ &S_{b}=\sum_{i=1}^{c}N_{i}(M_{i}-M)(M_{i}-M)^{T} \\ &S_{t}=\sum_{i=1}^{N}(X_{i}-M)(X_{i}-M)^{T} &\end{gathered}
令ωi类的离散度矩阵为Si=Xi∈ωi∑(Xi−Mi)(Xi−SW=i=1∑csiSb=i=1∑cNi(Mi−M)(Mi−M)TSt=i=1∑N(Xi−M)(Xi−M)TMi)T,则
S t = ∑ i = 1 N N i ( X i − M ) ( X i − M ) T = ∑ i = 1 c ∑ X i ∈ ω i ( X i − M i + M i − M ) ( X i − M i + M i − M ) T = ∑ i = 1 c ∑ X i ∈ ω i ( X i − M i ) ( X i − M i ) T + ∑ i = 1 c ∑ X i ∈ ω i ( M i − M ) ( M i − M ) T + ∑ i = 1 c ∑ X i ∈ ω i 2 ( X i − M i ) ( M i − M ) T = ∑ i = 1 c S i + ∑ i = 1 c N i ( M i − M ) ( M i − M ) T + 0 = S w + S b \begin{aligned} S_{t} & =\sum_{i=1}^{N}N_{i}(X_{i}-M)(X_{i}-M)^{T} \\ & =\sum_{i=1}^{c}\sum_{X_{i}\in\omega_{i}}(X_{i}-M_{i}+M_{i}-M)(X_{i}-M_{i}+M_{i}-M)^{T} \\ & =\sum_{i=1}^{c}\sum_{X_{i}\in\omega_{i}}(X_{i}-M_{i})(X_{i}-M_{i})^{T} \\ & +\sum_{i=1}^{c}\sum_{X_{i}\in\omega_{i}}(M_{i}-M)(M_{i}-M)^{T} \\ & +\sum_{i=1}^{c}\sum_{X_{i}\in\omega_{i}}2(X_{i}-M_{i})(M_{i}-M)^{T} \\ & =\sum_{i=1}^{c}S_{i}+\sum_{i=1}^{c}N_{i}(M_{i}-M)(M_{i}-M)^{T}+0 \\ & =S_{w}+S_{b} \end{aligned} St=i=1∑NNi(Xi−M)(Xi−M)T=i=1∑cXi∈ωi∑(Xi−Mi+Mi−M)(Xi−Mi+Mi−M)T=i=1∑cXi∈ωi∑(Xi−Mi)(Xi−Mi)T+i=1∑cXi∈ωi∑(Mi−M)(Mi−M)T+i=1∑cXi∈ωi∑2(Xi−Mi)(Mi−M)T=i=1∑cSi+i=1∑cNi(Mi−M)(Mi−M)T+0=Sw+Sb
重要概念
-
这个问题使用的是线性判别分析(LDA)中的离散度矩阵概念。我们要证明总离散度矩阵 S t S_t St 是类内离散度矩阵 S w S_w Sw 与类间离散度矩阵 S b S_b Sb 之和。
- 类内离散度矩阵 ( S w S_w Sw): 它是各类样本点相对于该类均值的离散度。
- 类间离散度矩阵 ( S b S_b Sb): 它度量的是各类均值相对于总体均值的离散度。
- 总离散度矩阵 ( S t S_t St): 它表示所有样本点相对于总体均值的离散度。
通过展开 S t S_t St,分解为类内和类间两部分后,得到了 S t = S w + S b S_t = S_w + S_b St=Sw+Sb 的结论。这表明,整体的样本离散度可以分解为类内和类间离散度的和。
题目 3
解析
1. 初始化
选择初始聚类中心:
- C 1 = A 1 ( 2 , 10 ) C_1 = A_1(2,10) C1=A1(2,10)
- C 2 = A 2 ( 2 , 5 ) C_2 = A_2(2,5) C2=A2(2,5)
- C 3 = A 3 ( 8 , 4 ) C_3 = A_3(8,4) C3=A3(8,4)
2. 第一次迭代
计算每个数据点到三个聚类中心的欧氏距离,并将其分配到最近的簇。
计算距离
使用欧氏距离公式:
d
(
x
,
y
)
=
(
x
2
−
x
1
)
2
+
(
y
2
−
y
1
)
2
d(x, y) = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}
d(x,y)=(x2−x1)2+(y2−y1)2
-
A 1 ( 2 , 10 ) A_1(2,10) A1(2,10):
- d ( A 1 , C 1 ) = ( 2 − 2 ) 2 + ( 10 − 10 ) 2 = 0 d(A_1, C_1) = \sqrt{(2-2)^2 + (10-10)^2} = 0 d(A1,C1)=(2−2)2+(10−10)2=0
- d ( A 1 , C 2 ) = ( 2 − 2 ) 2 + ( 10 − 5 ) 2 = 5 d(A_1, C_2) = \sqrt{(2-2)^2 + (10-5)^2} = 5 d(A1,C2)=(2−2)2+(10−5)2=5
- d ( A 1 , C 3 ) = ( 2 − 8 ) 2 + ( 10 − 4 ) 2 = 36 + 36 = 72 ≈ 8.49 d(A_1, C_3) = \sqrt{(2-8)^2 + (10-4)^2} = \sqrt{36 + 36} = \sqrt{72} \approx 8.49 d(A1,C3)=(2−8)2+(10−4)2=36+36=72≈8.49
- 归类到簇1
-
A 2 ( 2 , 5 ) A_2(2,5) A2(2,5):
- d ( A 2 , C 1 ) = ( 2 − 2 ) 2 + ( 5 − 10 ) 2 = 5 d(A_2, C_1) = \sqrt{(2-2)^2 + (5-10)^2} = 5 d(A2,C1)=(2−2)2+(5−10)2=5
- d ( A 2 , C 2 ) = ( 2 − 2 ) 2 + ( 5 − 5 ) 2 = 0 d(A_2, C_2) = \sqrt{(2-2)^2 + (5-5)^2} = 0 d(A2,C2)=(2−2)2+(5−5)2=0
- d ( A 2 , C 3 ) = ( 2 − 8 ) 2 + ( 5 − 4 ) 2 = 36 + 1 = 37 ≈ 6.08 d(A_2, C_3) = \sqrt{(2-8)^2 + (5-4)^2} = \sqrt{36 + 1} = \sqrt{37} \approx 6.08 d(A2,C3)=(2−8)2+(5−4)2=36+1=37≈6.08
- 归类到簇2
-
A 3 ( 8 , 4 ) A_3(8,4) A3(8,4):
- d ( A 3 , C 1 ) = ( 8 − 2 ) 2 + ( 4 − 10 ) 2 = 36 + 36 = 72 ≈ 8.49 d(A_3, C_1) = \sqrt{(8-2)^2 + (4-10)^2} = \sqrt{36 + 36} = \sqrt{72} \approx 8.49 d(A3,C1)=(8−2)2+(4−10)2=36+36=72≈8.49
- d ( A 3 , C 2 ) = ( 8 − 2 ) 2 + ( 4 − 5 ) 2 = 36 + 1 = 37 ≈ 6.08 d(A_3, C_2) = \sqrt{(8-2)^2 + (4-5)^2} = \sqrt{36 + 1} = \sqrt{37} \approx 6.08 d(A3,C2)=(8−2)2+(4−5)2=36+1=37≈6.08
- d ( A 3 , C 3 ) = ( 8 − 8 ) 2 + ( 4 − 4 ) 2 = 0 d(A_3, C_3) = \sqrt{(8-8)^2 + (4-4)^2} = 0 d(A3,C3)=(8−8)2+(4−4)2=0
- 归类到簇3
-
B 1 ( 5 , 8 ) B_1(5,8) B1(5,8):
- d ( B 1 , C 1 ) = ( 5 − 2 ) 2 + ( 8 − 10 ) 2 = 9 + 4 = 13 ≈ 3.61 d(B_1, C_1) = \sqrt{(5-2)^2 + (8-10)^2} = \sqrt{9 + 4} = \sqrt{13} \approx 3.61 d(B1,C1)=(5−2)2+(8−10)2=9+4=13≈3.61
- d ( B 1 , C 2 ) = ( 5 − 2 ) 2 + ( 8 − 5 ) 2 = 9 + 9 = 18 ≈ 4.24 d(B_1, C_2) = \sqrt{(5-2)^2 + (8-5)^2} = \sqrt{9 + 9} = \sqrt{18} \approx 4.24 d(B1,C2)=(5−2)2+(8−5)2=9+9=18≈4.24
- d ( B 1 , C 3 ) = ( 5 − 8 ) 2 + ( 8 − 4 ) 2 = 9 + 16 = 25 = 5 d(B_1, C_3) = \sqrt{(5-8)^2 + (8-4)^2} = \sqrt{9 + 16} = \sqrt{25} = 5 d(B1,C3)=(5−8)2+(8−4)2=9+16=25=5
- 归类到簇1
-
B 2 ( 7 , 5 ) B_2(7,5) B2(7,5):
- d ( B 2 , C 1 ) = ( 7 − 2 ) 2 + ( 5 − 10 ) 2 = 25 + 25 = 50 ≈ 7.07 d(B_2, C_1) = \sqrt{(7-2)^2 + (5-10)^2} = \sqrt{25 + 25} = \sqrt{50} \approx 7.07 d(B2,C1)=(7−2)2+(5−10)2=25+25=50≈7.07
- d ( B 2 , C 2 ) = ( 7 − 2 ) 2 + ( 5 − 5 ) 2 = 25 + 0 = 5 d(B_2, C_2) = \sqrt{(7-2)^2 + (5-5)^2} = \sqrt{25 + 0} = 5 d(B2,C2)=(7−2)2+(5−5)2=25+0=5
- d ( B 2 , C 3 ) = ( 7 − 8 ) 2 + ( 5 − 4 ) 2 = 1 + 1 = 2 ≈ 1.41 d(B_2, C_3) = \sqrt{(7-8)^2 + (5-4)^2} = \sqrt{1 + 1} = \sqrt{2} \approx 1.41 d(B2,C3)=(7−8)2+(5−4)2=1+1=2≈1.41
- 归类到簇3
-
B 3 ( 6 , 4 ) B_3(6,4) B3(6,4):
- d ( B 3 , C 1 ) = ( 6 − 2 ) 2 + ( 4 − 10 ) 2 = 16 + 36 = 52 ≈ 7.21 d(B_3, C_1) = \sqrt{(6-2)^2 + (4-10)^2} = \sqrt{16 + 36} = \sqrt{52} \approx 7.21 d(B3,C1)=(6−2)2+(4−10)2=16+36=52≈7.21
- d ( B 3 , C 2 ) = ( 6 − 2 ) 2 + ( 4 − 5 ) 2 = 16 + 1 = 17 ≈ 4.12 d(B_3, C_2) = \sqrt{(6-2)^2 + (4-5)^2} = \sqrt{16 + 1} = \sqrt{17} \approx 4.12 d(B3,C2)=(6−2)2+(4−5)2=16+1=17≈4.12
- d ( B 3 , C 3 ) = ( 6 − 8 ) 2 + ( 4 − 4 ) 2 = 4 + 0 = 2 d(B_3, C_3) = \sqrt{(6-8)^2 + (4-4)^2} = \sqrt{4 + 0} = 2 d(B3,C3)=(6−8)2+(4−4)2=4+0=2
- 归类到簇3
-
C 1 ( 1 , 2 ) C_1(1,2) C1(1,2):
- d ( C 1 , C 1 ) = ( 1 − 2 ) 2 + ( 2 − 10 ) 2 = 1 + 64 = 65 ≈ 8.06 d(C_1, C_1) = \sqrt{(1-2)^2 + (2-10)^2} = \sqrt{1 + 64} = \sqrt{65} \approx 8.06 d(C1,C1)=(1−2)2+(2−10)2=1+64=65≈8.06
- d ( C 1 , C 2 ) = ( 1 − 2 ) 2 + ( 2 − 5 ) 2 = 1 + 9 = 10 ≈ 3.16 d(C_1, C_2) = \sqrt{(1-2)^2 + (2-5)^2} = \sqrt{1 + 9} = \sqrt{10} \approx 3.16 d(C1,C2)=(1−2)2+(2−5)2=1+9=10≈3.16
- d ( C 1 , C 3 ) = ( 1 − 8 ) 2 + ( 2 − 4 ) 2 = 49 + 4 = 53 ≈ 7.28 d(C_1, C_3) = \sqrt{(1-8)^2 + (2-4)^2} = \sqrt{49 + 4} = \sqrt{53} \approx 7.28 d(C1,C3)=(1−8)2+(2−4)2=49+4=53≈7.28
- 归类到簇2
-
C 2 ( 4 , 9 ) C_2(4,9) C2(4,9):
- d ( C 2 , C 1 ) = ( 4 − 2 ) 2 + ( 9 − 10 ) 2 = 4 + 1 = 5 ≈ 2.24 d(C_2, C_1) = \sqrt{(4-2)^2 + (9-10)^2} = \sqrt{4 + 1} = \sqrt{5} \approx 2.24 d(C2,C1)=(4−2)2+(9−10)2=4+1=5≈2.24
- d ( C 2 , C 2 ) = ( 4 − 2 ) 2 + ( 9 − 5 ) 2 = 4 + 16 = 20 ≈ 4.47 d(C_2, C_2) = \sqrt{(4-2)^2 + (9-5)^2} = \sqrt{4 + 16} = \sqrt{20} \approx 4.47 d(C2,C2)=(4−2)2+(9−5)2=4+16=20≈4.47
- d ( C 2 , C 3 ) = ( 4 − 8 ) 2 + ( 9 − 4 ) 2 = 16 + 25 = 41 ≈ 6.40 d(C_2, C_3) = \sqrt{(4-8)^2 + (9-4)^2} = \sqrt{16 + 25} = \sqrt{41} \approx 6.40 d(C2,C3)=(4−8)2+(9−4)2=16+25=41≈6.40
- 归类到簇1
第一次迭代后的簇分配:
- 簇1: A 1 ( 2 , 10 ) , B 1 ( 5 , 8 ) , C 2 ( 4 , 9 ) A_1(2,10), B_1(5,8), C_2(4,9) A1(2,10),B1(5,8),C2(4,9)
- 簇2: A 2 ( 2 , 5 ) , C 1 ( 1 , 2 ) A_2(2,5), C_1(1,2) A2(2,5),C1(1,2)
- 簇3: A 3 ( 8 , 4 ) , B 2 ( 7 , 5 ) , B 3 ( 6 , 4 ) A_3(8,4), B_2(7,5), B_3(6,4) A3(8,4),B2(7,5),B3(6,4)
3. 重新计算聚类中心
-
簇1新中心:
C 1 = ( 2 + 5 + 4 3 , 10 + 8 + 9 3 ) = ( 3.67 , 9 ) C_1 = \left( \frac{2 + 5 + 4}{3}, \frac{10 + 8 + 9}{3} \right) = \left( 3.67, 9 \right) C1=(32+5+4,310+8+9)=(3.67,9) -
簇2新中心:
C 2 = ( 2 + 1 2 , 5 + 2 2 ) = ( 1.5 , 3.5 ) C_2 = \left( \frac{2 + 1}{2}, \frac{5 + 2}{2} \right) = \left( 1.5, 3.5 \right) C2=(22+1,25+2)=(1.5,3.5) -
簇3新中心:
C 3 = ( 8 + 7 + 6 3 , 4 + 5 + 4 3 ) = ( 7 , 4.33 ) C_3 = \left( \frac{8 + 7 + 6}{3}, \frac{4 + 5 + 4}{3} \right) = \left( 7, 4.33 \right) C3=(38+7+6,34+5+4)=(7,4.33)
4. 第二次迭代
重新计算每个数据点到新聚类中心的距离,并分配到最近的簇。结果与第一次迭代相同,算法收敛。
请聚类下列数据(其中( x , y x,y x,y )代表坐标),将其分为三个簇。试用C均值算法进行聚类分析,类数c=3,初始聚类中心为 A 1 、 A 2 和 A 3 A_1、A_2和A_3 A1、A2和A3。(假设距离为欧式距离)
数据点:
- A 1 ( 2 , 10 ) A_{1}(2,10) A1(2,10)
- A 2 ( 2 , 5 ) A_{2}(2,5) A2(2,5)
- A 3 ( 8 , 4 ) A_{3}(8,4) A3(8,4)
- B 1 ( 5 , 8 ) B_{1}(5,8) B1(5,8)
- B 2 ( 7 , 5 ) B_{2}(7,5) B2(7,5)
- B 3 ( 6 , 4 ) B_{3}(6,4) B3(6,4)
- C 1 ( 1 , 2 ) C_{1}(1,2) C1(1,2)
- C 2 ( 4 , 9 ) C_{2}(4,9) C2(4,9)
重要概念
- C均值算法(K-means算法):一种迭代算法,用于将数据点划分为 K K K 个簇,使得每个点属于最近的聚类中心。
- 欧氏距离:用于衡量两个点之间的距离,公式为:
d ( x , y ) = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 d(x, y) = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2} d(x,y)=(x2−x1)2+(y2−y1)2 - 聚类中心:每个簇的中心点,通常是簇内所有点的平均值。
可视化结果
- 代码:
import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans # 给定的数据点 data = np.array([ [2, 10], # A1 [2, 5], # A2 [8, 4], # A3 [5, 8], # B1 [7, 5], # B2 [6, 4], # B3 [1, 2], # C1 [4, 9] # C2 ]) # 使用K-means算法进行聚类,分为3个簇 kmeans = KMeans(n_clusters=3, random_state=0).fit(data) # 获取聚类结果 labels = kmeans.labels_ centers = kmeans.cluster_centers_ # 可视化聚类结果 plt.figure(figsize=(8, 6)) # 绘制数据点 for i in range(3): plt.scatter(data[labels == i, 0], data[labels == i, 1], label=f'Cluster {i+1}') # 绘制聚类中心 plt.scatter(centers[:, 0], centers[:, 1], s=200, c='red', marker='X', label='Centers') # 添加标签和标题 plt.title('K-means Clustering') plt.xlabel('X') plt.ylabel('Y') plt.legend() plt.grid() # 显示图像 plt.show()
题目 4
总结C均值聚类算法、模糊C均值聚类算法、改进的模糊C均值聚类算法流程。
解析
C均值聚类算法
C均值聚类算法(K-means)是一种硬聚类算法,它将数据集划分为 K K K个簇,每个数据点只能属于一个簇。算法流程如下:
- 初始化:随机选择 K K K个初始聚类中心。
- 分配:将每个数据点分配到距离最近的聚类中心所在的簇。
- 更新:重新计算每个簇的聚类中心,通常是簇内所有数据点的均值。
- 迭代:重复步骤2和步骤3,直到聚类中心不再发生变化或达到最大迭代次数。
数学公式
- 欧氏距离公式:
d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 d(x, y) = \sqrt{\sum_{i=1}^n (x_i - y_i)^2} d(x,y)=i=1∑n(xi−yi)2 - 聚类中心更新公式:
C j = 1 ∣ S j ∣ ∑ x ∈ S j x C_j = \frac{1}{|S_j|} \sum_{x \in S_j} x Cj=∣Sj∣1x∈Sj∑x
其中, S j S_j Sj是第 j j j个簇的数据点集合。
模糊C均值聚类算法
模糊C均值聚类算法(Fuzzy C-means, FCM)是一种软聚类算法,它允许数据点属于多个簇,并使用隶属度来表示数据点属于每个簇的程度。算法流程如下:
- 初始化:随机初始化隶属度矩阵 U U U,其中 U i j U_{ij} Uij表示数据点 x i x_i xi属于第 j j j个簇的隶属度。
- 计算聚类中心:根据隶属度矩阵 U U U计算每个簇的聚类中心 C j C_j Cj。
- 更新隶属度:根据数据点和聚类中心的距离,更新隶属度矩阵 U U U。
- 迭代:重复步骤2和步骤3,直到隶属度矩阵 U U U的变化小于某个阈值或达到最大迭代次数。
数学公式
- 聚类中心计算公式:
C j = ∑ i = 1 n ( U i j ) m x i ∑ i = 1 n ( U i j ) m C_j = \frac{\sum_{i=1}^n (U_{ij})^m x_i}{\sum_{i=1}^n (U_{ij})^m} Cj=∑i=1n(Uij)m∑i=1n(Uij)mxi
其中, m m m是模糊因子,通常取 m = 2 m=2 m=2。 - 隶属度更新公式:
U i j = 1 ∑ k = 1 K ( d ( x i , C j ) d ( x i , C k ) ) 2 m − 1 U_{ij} = \frac{1}{\sum_{k=1}^K \left( \frac{d(x_i, C_j)}{d(x_i, C_k)} \right)^{\frac{2}{m-1}}} Uij=∑k=1K(d(xi,Ck)d(xi,Cj))m−121
其中, d ( x i , C j ) d(x_i, C_j) d(xi,Cj)是数据点 x i x_i xi到聚类中心 C j C_j Cj的距离。
改进的模糊C均值聚类算法
改进的模糊C均值聚类算法(Improved Fuzzy C-means, IFCM)在FCM的基础上引入了一些改进,例如加权模糊因子、局部密度加权等,以提高聚类效果。算法流程如下:
- 初始化:与FCM相同,随机初始化隶属度矩阵 U U U。
- 计算加权聚类中心:根据加权模糊因子计算每个簇的聚类中心 C j C_j Cj。
- 更新加权隶属度:根据加权距离和局部密度加权,更新隶属度矩阵 U U U。
- 迭代:重复步骤2和步骤3,直到隶属度矩阵 U U U的变化小于某个阈值或达到最大迭代次数。
数学公式
- 加权聚类中心计算公式:
C j = ∑ i = 1 n ( U i j ) m w i x i ∑ i = 1 n ( U i j ) m w i C_j = \frac{\sum_{i=1}^n (U_{ij})^m w_i x_i}{\sum_{i=1}^n (U_{ij})^m w_i} Cj=∑i=1n(Uij)mwi∑i=1n(Uij)mwixi
其中, w i w_i wi是数据点 x i x_i xi的权重。 - 加权隶属度更新公式:
U i j = 1 ∑ k = 1 K ( d ( x i , C j ) w i d ( x i , C k ) w i ) 2 m − 1 U_{ij} = \frac{1}{\sum_{k=1}^K \left( \frac{d(x_i, C_j) w_i}{d(x_i, C_k) w_i} \right)^{\frac{2}{m-1}}} Uij=∑k=1K(d(xi,Ck)wid(xi,Cj)wi)m−121
重要概念
- C均值聚类算法(K-means):一种硬聚类算法,每个数据点只能属于一个簇。
- 模糊C均值聚类算法(Fuzzy C-means, FCM):一种软聚类算法,允许数据点属于多个簇,并使用隶属度表示数据点属于每个簇的程度。
- 改进的模糊C均值聚类算法(Improved Fuzzy C-means, IFCM):在FCM的基础上引入加权模糊因子和局部密度加权,以提高聚类效果。
- 欧氏距离:用于衡量两个点之间的距离,公式为 d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 d(x, y) = \sqrt{\sum_{i=1}^n (x_i - y_i)^2} d(x,y)=∑i=1n(xi−yi)2。
- 隶属度:表示数据点属于某个簇的程度,取值范围为 [ 0 , 1 ] [0, 1] [0,1]。
题目 5
以RatioCut切图方式简述谱聚类算法流程。
解析
谱聚类是一种基于图论的聚类算法,它通过将数据点表示为图的顶点,并利用图的拉普拉斯矩阵进行聚类。RatioCut切图方式是谱聚类中的一种常用方法,其目标是最小化簇间相似度同时最大化簇内相似度。算法流程如下:
-
构建相似度矩阵:
- 根据数据点之间的相似度构建相似度矩阵
W
W
W,通常使用高斯核函数计算相似度:
W i j = exp ( − ∥ x i − x j ∥ 2 2 σ 2 ) W_{ij} = \exp\left(-\frac{\|x_i - x_j\|^2}{2\sigma^2}\right) Wij=exp(−2σ2∥xi−xj∥2) - 如果数据点 i i i和 j j j之间的距离大于某个阈值,则将 W i j W_{ij} Wij设为0。
- 根据数据点之间的相似度构建相似度矩阵
W
W
W,通常使用高斯核函数计算相似度:
-
计算度矩阵:
- 度矩阵
D
D
D是一个对角矩阵,其对角元素
D
i
i
D_{ii}
Dii为相似度矩阵
W
W
W中第
i
i
i行的和:
D i i = ∑ j = 1 n W i j D_{ii} = \sum_{j=1}^n W_{ij} Dii=j=1∑nWij
- 度矩阵
D
D
D是一个对角矩阵,其对角元素
D
i
i
D_{ii}
Dii为相似度矩阵
W
W
W中第
i
i
i行的和:
-
计算拉普拉斯矩阵:
- 拉普拉斯矩阵
L
L
L定义为:
L = D − W L = D - W L=D−W
- 拉普拉斯矩阵
L
L
L定义为:
-
计算归一化拉普拉斯矩阵:
- 归一化拉普拉斯矩阵
L
norm
L_{\text{norm}}
Lnorm定义为:
L norm = D − 1 / 2 L D − 1 / 2 L_{\text{norm}} = D^{-1/2} L D^{-1/2} Lnorm=D−1/2LD−1/2
- 归一化拉普拉斯矩阵
L
norm
L_{\text{norm}}
Lnorm定义为:
-
求解特征值问题:
- 对归一化拉普拉斯矩阵 L norm L_{\text{norm}} Lnorm进行特征值分解,得到前 K K K个最小特征值对应的特征向量。
-
构建特征向量矩阵:
- 将前 K K K个特征向量按列排列,构成特征向量矩阵 V V V。
-
K-means聚类:
- 对特征向量矩阵 V V V的每一行进行K-means聚类,得到最终的聚类结果。
重要概念
- 相似度矩阵 W W W:表示数据点之间的相似度,通常使用高斯核函数计算。
- 度矩阵 D D D:对角矩阵,其对角元素为相似度矩阵 W W W中每行的和。
- 拉普拉斯矩阵 L L L:定义为 L = D − W L = D - W L=D−W,用于衡量图的连接性。
- 归一化拉普拉斯矩阵 L norm L_{\text{norm}} Lnorm:定义为 L norm = D − 1 / 2 L D − 1 / 2 L_{\text{norm}} = D^{-1/2} L D^{-1/2} Lnorm=D−1/2LD−1/2,用于归一化处理。
- 特征值分解:对矩阵进行特征值分解,得到特征值和特征向量。
- K-means聚类:对特征向量矩阵进行K-means聚类,得到最终的聚类结果。
题目 6
- 设有二维样本: x 1 = [ − 1 , 0 ] T x_1 = [-1, 0]^\mathrm{T} x1=[−1,0]T, x 2 = [ 0 , − 1 ] T x_2 = [0, -1]^\mathrm{T} x2=[0,−1]T, x 3 = [ 0 , 0 ] T x_3 = [0, 0]^\mathrm{T} x3=[0,0]T, x 4 = [ 2 , 0 ] T x_4 = [2, 0]^\mathrm{T} x4=[2,0]T 和 x 5 = [ 0 , 2 ] T x_5 = [0, 2]^\mathrm{T} x5=[0,2]T。试选用一种合适的方法进行一维特征提取 y i = W T x i y_i = W^\mathrm{T}x_i yi=WTxi。要求求出变换矩阵 W W W,并求出变换结果 y i ( i = 1 , 2 , 3 , 4 , 5 ) y_i \left(i=1,2,3,4,5\right) yi(i=1,2,3,4,5)。(要求:基于 K-L 变换进行特征提取)
- 根据 (1) 特征提取后的一维特征,选用一种合适的聚类算法将这些样本分为两类,要求每类样本个数不少于两个,并写出聚类过程。(要求:最短距离法)
解析:
(1)
x = [ − 1 0 0 2 0 0 − 1 0 0 2 ] , R = E ( x x T ) = [ 1 0 0 1 ] , ∣ λ I − R ∣ = ∣ λ − 1 0 0 λ − 1 ∣ = 0 ⟹ λ 1 = λ 2 = 1 R t ⃗ j = λ j t ⃗ j , j = 1 , 2 ⇒ t ⃗ 1 = [ 2 2 , 2 2 ] T 当 d = 1 时,选取 λ 1 对应的 t ⃗ 1 作为变换矩阵 W = [ t ⃗ 1 ] = [ 2 2 , 2 2 ] T y ( 1 ) = W T x = [ 2 2 , 2 2 ] [ − 1 0 0 2 0 0 − 1 0 0 2 ] = [ − 2 2 , − 2 2 , 0 , 2 2 , 2 2 ] \begin{aligned} & x = \begin{bmatrix} -1 & 0 & 0 & 2 & 0 \\ 0 & -1 & 0 & 0 & 2 \end{bmatrix}, \quad R = E(xx^\mathrm{T}) = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}, \\ & |\lambda I - R| = \begin{vmatrix} \lambda - 1 & 0 \\ 0 & \lambda - 1 \end{vmatrix} = 0 \Longrightarrow \lambda_1 = \lambda_2 = 1 \\ & R \vec{t}_j = \lambda_j \vec{t}_j, \quad j = 1, 2 \Rightarrow \vec{t}_1 = \left[\frac{\sqrt{2}}{2}, \frac{\sqrt{2}}{2}\right]^\mathrm{T} \\ & \text{当 } d = 1 \text{ 时,选取 } \lambda_1 \text{ 对应的 } \vec{t}_1 \text{ 作为变换矩阵} \\ & W = \left[\vec{t}_1\right] = \left[\frac{\sqrt{2}}{2}, \frac{\sqrt{2}}{2}\right]^\mathrm{T} \\ & y^{(1)} = W^\mathrm{T}x = \left[\frac{\sqrt{2}}{2}, \frac{\sqrt{2}}{2}\right] \begin{bmatrix} -1 & 0 & 0 & 2 & 0 \\ 0 & -1 & 0 & 0 & 2 \end{bmatrix} = \left[-\frac{\sqrt{2}}{2}, -\frac{\sqrt{2}}{2}, 0, \frac{\sqrt{2}}{2}, \frac{\sqrt{2}}{2}\right] \end{aligned} x=[−100−1002002],R=E(xxT)=[1001],∣λI−R∣= λ−100λ−1 =0⟹λ1=λ2=1Rtj=λjtj,j=1,2⇒t1=[22,22]T当 d=1 时,选取 λ1 对应的 t1 作为变换矩阵W=[t1]=[22,22]Ty(1)=WTx=[22,22][−100−1002002]=[−22,−22,0,22,22]
降维后的样本矩阵为:
[
y
1
,
y
2
,
y
3
,
y
4
,
y
5
]
=
[
−
2
2
,
−
2
2
,
0
,
2
,
2
]
[y_1, y_2, y_3, y_4, y_5] = \left[-\frac{\sqrt{2}}{2}, -\frac{\sqrt{2}}{2}, 0, \sqrt{2}, \sqrt{2}\right]
[y1,y2,y3,y4,y5]=[−22,−22,0,2,2]
(2)
采用的聚类算法为最小距离法。
D H K = min { D H I , D H J } D_{HK} = \min\{D_{HI}, D_{HJ}\} DHK=min{DHI,DHJ}
-
设全部样本分为5类,
-
作距离矩阵 D ( 0 ) D(0) D(0)
- 需要自己计算距离矩阵 D ( 0 ) , D ( 1 ) D(0), D(1) D(0),D(1)
-
取最小元素.
-
把 ω 1 , ω 2 \omega_1, \omega_2 ω1,ω2 合并为 ω 6 = ( − 2 2 , − 2 2 ) \omega_6 = \left(-\frac{\sqrt{2}}{2}, -\frac{\sqrt{2}}{2}\right) ω6=(−22,−22), 把 ω 4 , ω 5 \omega_4, \omega_5 ω4,ω5 合并为 ω 7 = ( 2 , − 2 ) \omega_7 = \left(\sqrt{2}, -\sqrt{2}\right) ω7=(2,−2)
-
作距离矩阵 D ( 1 ) D(1) D(1), 将 ω 3 , ω 6 \omega_3, \omega_6 ω3,ω6 合并为 ω 8 = ( − 2 2 , − 2 2 , 0 ) \omega_8 = \left(-\frac{\sqrt{2}}{2}, -\frac{\sqrt{2}}{2}, 0\right) ω8=(−22,−22,0)
-
聚类满足题目中要求, 分为两类 ω 7 = ( 2 , − 2 ) \omega_7 = \left(\sqrt{2}, -\sqrt{2}\right) ω7=(2,−2), ω 8 = ( − 2 2 , − 2 2 , 0 ) \omega_8 = \left(-\frac{\sqrt{2}}{2}, -\frac{\sqrt{2}}{2}, 0\right) ω8=(−22,−22,0)
聚类过程:
- 初始化:
- 将每个样本单独看作一类:
z 1 = { y 1 } , z 2 = { y 2 } , z 3 = { y 3 } , z 4 = { y 4 } , z 5 = { y 5 } z_1 = \{y_1\}, \quad z_2 = \{y_2\}, \quad z_3 = \{y_3\}, \quad z_4 = \{y_4\}, \quad z_5 = \{y_5\} z1={y1},z2={y2},z3={y3},z4={y4},z5={y5} - 计算初始距离矩阵 D ( 0 ) D(0) D(0):
- 将每个样本单独看作一类:
降维后的样本矩阵为:
[ y 1 , y 2 , y 3 , y 4 , y 5 ] = [ − 2 2 , − 2 2 , 0 , 2 , 2 ] [y_1, y_2, y_3, y_4, y_5] = \left[-\frac{\sqrt{2}}{2}, -\frac{\sqrt{2}}{2}, 0, \sqrt{2}, \sqrt{2}\right] [y1,y2,y3,y4,y5]=[−22,−22,0,2,2]
计算步骤
- 定义距离公式:
对于两个样本 ( y i ) ( y_i ) (yi) 和 ( y j ) ( y_j ) (yj),它们之间的欧几里得距离为:
D ( y i , y j ) = ∣ y i − y j ∣ D(y_i, y_j) = |y_i - y_j| D(yi,yj)=∣yi−yj∣
-
计算每对样本之间的距离:
- ( y 1 = − 2 2 ) ( y_1 = -\frac{\sqrt{2}}{2} ) (y1=−22)
- ( y 2 = − 2 2 ) ( y_2 = -\frac{\sqrt{2}}{2} ) (y2=−22)
- ( y 3 = 0 ) ( y_3 = 0 ) (y3=0)
- ( y 4 = 2 ) ( y_4 = \sqrt{2} ) (y4=2)
- ( y 5 = 2 ) ( y_5 = \sqrt{2} ) (y5=2)
计算结果如下:
D ( y 1 , y 2 ) = ∣ − 2 2 − ( − 2 2 ) ∣ = 0 D ( y 1 , y 3 ) = ∣ − 2 2 − 0 ∣ = 2 2 D ( y 1 , y 4 ) = ∣ − 2 2 − 2 ∣ = 3 2 2 D ( y 1 , y 5 ) = ∣ − 2 2 − 2 ∣ = 3 2 2 D ( y 2 , y 3 ) = ∣ − 2 2 − 0 ∣ = 2 2 D ( y 2 , y 4 ) = ∣ − 2 2 − 2 ∣ = 3 2 2 D ( y 2 , y 5 ) = ∣ − 2 2 − 2 ∣ = 3 2 2 D ( y 3 , y 4 ) = ∣ 0 − 2 ∣ = 2 D ( y 3 , y 5 ) = ∣ 0 − 2 ∣ = 2 D ( y 4 , y 5 ) = ∣ 2 − 2 ∣ = 0 \begin{aligned} D(y_1, y_2) &= \left| -\frac{\sqrt{2}}{2} - \left(-\frac{\sqrt{2}}{2}\right) \right| = 0 \\ D(y_1, y_3) &= \left| -\frac{\sqrt{2}}{2} - 0 \right| = \frac{\sqrt{2}}{2} \\ D(y_1, y_4) &= \left| -\frac{\sqrt{2}}{2} - \sqrt{2} \right| = \frac{3\sqrt{2}}{2} \\ D(y_1, y_5) &= \left| -\frac{\sqrt{2}}{2} - \sqrt{2} \right| = \frac{3\sqrt{2}}{2} \\ D(y_2, y_3) &= \left| -\frac{\sqrt{2}}{2} - 0 \right| = \frac{\sqrt{2}}{2} \\ D(y_2, y_4) &= \left| -\frac{\sqrt{2}}{2} - \sqrt{2} \right| = \frac{3\sqrt{2}}{2} \\ D(y_2, y_5) &= \left| -\frac{\sqrt{2}}{2} - \sqrt{2} \right| = \frac{3\sqrt{2}}{2} \\ D(y_3, y_4) &= \left| 0 - \sqrt{2} \right| = \sqrt{2} \\ D(y_3, y_5) &= \left| 0 - \sqrt{2} \right| = \sqrt{2} \\ D(y_4, y_5) &= \left| \sqrt{2} - \sqrt{2} \right| = 0 \\ \end{aligned} D(y1,y2)D(y1,y3)D(y1,y4)D(y1,y5)D(y2,y3)D(y2,y4)D(y2,y5)D(y3,y4)D(y3,y5)D(y4,y5)= −22−(−22) =0= −22−0 =22= −22−2 =232= −22−2 =232= −22−0 =22= −22−2 =232= −22−2 =232= 0−2 =2= 0−2 =2= 2−2 =0 -
构建距离矩阵 D ( 0 ) D(0) D(0):
将上述计算结果填入矩阵中:
D ( 0 ) = ( 0 0 2 2 3 2 2 3 2 2 0 0 2 2 3 2 2 3 2 2 2 2 2 2 0 2 2 3 2 2 3 2 2 2 0 0 3 2 2 3 2 2 2 0 0 ) D(0) = \begin{pmatrix} 0 & 0 & \frac{\sqrt{2}}{2} & \frac{3\sqrt{2}}{2} & \frac{3\sqrt{2}}{2} \\ 0 & 0 & \frac{\sqrt{2}}{2} & \frac{3\sqrt{2}}{2} & \frac{3\sqrt{2}}{2} \\ \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} & 0 & \sqrt{2} & \sqrt{2} \\ \frac{3\sqrt{2}}{2} & \frac{3\sqrt{2}}{2} & \sqrt{2} & 0 & 0 \\ \frac{3\sqrt{2}}{2} & \frac{3\sqrt{2}}{2} & \sqrt{2} & 0 & 0 \end{pmatrix} D(0)= 002223223200222322322222022232232200232232200 简化后的 D ( 0 ) D(0) D(0)
D ( 0 ) = ( 0 0 0 2 2 2 2 0 3 2 2 3 2 2 2 0 3 2 2 3 2 2 2 0 0 ) D(0) = \begin{pmatrix} 0 & & & & \\ 0 & 0 & & & \\ \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} & 0 & & \\ \frac{3\sqrt{2}}{2} & \frac{3\sqrt{2}}{2} & \sqrt{2} & 0 & \\ \frac{3\sqrt{2}}{2} & \frac{3\sqrt{2}}{2} & \sqrt{2} & 0 & 0 \end{pmatrix} D(0)= 0022232232022232232022000 -
第一次合并:
- 可知 z 1 z_1 z1 与 z 2 z_2 z2、 z 4 z_4 z4 与 z 5 z_5 z5 的距离最短。
- 将 z 1 z_1 z1 与 z 2 z_2 z2 合并为 z 6 = { y 1 , y 2 } z_6 = \{y_1, y_2\} z6={y1,y2}。
- 将 z 4 z_4 z4 与 z 5 z_5 z5 合并为 z 7 = { y 4 , y 5 } z_7 = \{y_4, y_5\} z7={y4,y5}。
-
第二次合并:
- 此时存在 3 个聚类: z 3 , z 6 , z 7 z_3, z_6, z_7 z3,z6,z7。
- 计算新的距离矩阵
D
(
1
)
D(1)
D(1):
D ( 1 ) = ( 0 0 2 2 0 3 2 2 2 0 ) D(1) = \begin{pmatrix} 0 & 0 & \\ \frac{\sqrt{2}}{2} & 0 & \\ \frac{3\sqrt{2}}{2} & \sqrt{2} & 0 \end{pmatrix} D(1)= 0222320020 - 可知 z 3 z_3 z3 与 z 6 z_6 z6 的距离最短。
- 将 z 3 z_3 z3 与 z 6 z_6 z6 合并为 z 8 = { y 1 , y 2 , y 3 } z_8 = \{y_1, y_2, y_3\} z8={y1,y2,y3}。
-
最终结果:
- 此时存在 2 个单类:
z 7 = { y 4 , y 5 } , z 8 = { y 1 , y 2 , y 3 } z_7 = \{y_4, y_5\}, \quad z_8 = \{y_1, y_2, y_3\} z7={y4,y5},z8={y1,y2,y3} - 满足题意要求。
- 此时存在 2 个单类:
总结:
- 采用 最小距离法 进行聚类,最终将样本分为两类:
- 第一类: { y 4 , y 5 } \{y_4, y_5\} {y4,y5}
- 第二类: { y 1 , y 2 , y 3 } \{y_1, y_2, y_3\} {y1,y2,y3}