本课程来自深度之眼,部分截图来自课程视频以及李航老师的《统计学习方法》第二版。
公式输入请参考: 在线Latex公式
主要内容
聚合聚类的具体过程:距离或相似度、合并规则、停止条件
聚合聚类算法与案例:算法流程、基于欧式距离的层次聚类过程
系统聚类法基本思想:类间距离、对称表、递推公式
最短距离法与最长距离法:定义距离与递推公式
中间距离法:几何意义与递推公式
类平均法与可变类平均法:定义距离与递推公式
离差平方和法与可变法:定义距离与递推公式
重心法:定义距离与递推公式
聚合聚类的具体过程
对于给定的样本集合,开始将每个样本分到⼀个类;然后按照⼀定规则,例如类间距离最⼩,将最满⾜规则条件的两个类进⾏合并;如此反复进⾏,每次减少⼀个类,直到满⾜停⽌条件,如所有样本聚为⼀类。
聚合聚类需要预先确定下⾯三个要素
• 距离或相似度
闵可夫斯基距离
⻢哈拉诺⽐斯距离
相关系数
夹⻆余弦
• 合并规则阈值
类间距离最⼩
类间距离可以是最短距离、最⻓距离、中⼼距离、平均距离
• 停⽌条件
停⽌条件可以是类的个数达到阈值(极端情况类的个数是1)
类的直径超过阈值
聚合聚类算法与案例
输入:n个样本组成的样本集合及样本之间的距离;
输出:对样本集合的一个层次化聚类。
(1)计算
n
n
n个样本两两之间的欧氏距离
{
d
i
}
\{d_i\}
{di},记作矩阵
D
=
[
d
i
j
]
n
×
n
D=[d_{ij}]_{n\times n}
D=[dij]n×n
(2)构造
n
n
n个类,每个类只包含一个样本。
(3)合并类间距离最小的两个类,其中最短距离为类间距离,构建一个新类。
(4)计算新类与当前各类的距离。若类的个数为1,终止计算,否则回到步(3)。
可以看出聚合层次聚类算法的复杂度是
O
(
n
3
m
)
O(n^3m)
O(n3m),其中
m
m
m是样本的维数,
n
n
n是样本个数。
这里稍微推一下时间复杂度,第一次计算
n
n
n个样本两两之间的欧氏距离这里会产生
C
n
2
C_n^2
Cn2个距离;
然后合并两个样本后,得到一个新类,剩下的
n
−
2
n-2
n−2个样本和新类的所有样本要计算一次距离,此时计算量为:
(
n
−
2
)
×
2
(n-2)\times2
(n−2)×2;
然后这个时候总类别数为
n
−
2
+
1
n-2+1
n−2+1,然后再合并两个类得到3个样本,然后和其他每个样本进行计算,计算量为:
(
n
−
3
)
×
3
(n-3)\times3
(n−3)×3
以此类推,所有所有类合并后:
C
n
2
+
(
n
−
2
)
×
2
+
(
n
−
3
)
×
3
+
⋯
+
1
×
(
n
−
1
)
C_n^2+(n-2)\times2+(n-3)\times3+\cdots+1\times(n-1)
Cn2+(n−2)×2+(n−3)×3+⋯+1×(n−1)
由于每个样本是m维的,因此每个维度上都要经过上面的计算,因此总计算量为:
m
[
C
n
2
+
(
n
−
2
)
×
2
+
(
n
−
3
)
×
3
+
⋯
+
1
×
(
n
−
1
)
]
≈
O
(
n
3
m
)
m[C_n^2+(n-2)\times2+(n-3)\times3+\cdots+1\times(n-1)]\approx O(n^3m)
m[Cn2+(n−2)×2+(n−3)×3+⋯+1×(n−1)]≈O(n3m)
例子:
给定5个样本的集合,样本之间的欧氏距离由如下矩阵D表示
D
=
[
d
i
j
]
5
×
5
=
[
0
7
2
9
3
7
0
5
4
6
2
5
0
8
1
9
4
8
0
5
3
6
1
5
0
]
D=[d_{ij}]_{5\times5}=\begin{bmatrix} 0 & 7& 2 & 9&3 \\ 7 & 0& 5 & 4&6 \\ 2 & 5& 0& 8 & 1\\ 9 & 4& 8 & 0 &5 \\ 3 & 6& 1& 5 & 0 \end{bmatrix}
D=[dij]5×5=⎣⎢⎢⎢⎢⎡0729370546250819480536150⎦⎥⎥⎥⎥⎤
其中
d
i
j
d_{ij}
dij表示第
i
i
i个样本与第
j
j
j个样本之间的欧⽒距离。
• 显然
D
D
D为对称矩阵。应⽤聚合层次聚类法对这5个样本进⾏聚类。
1.最短类间距出现在第三行第五列,把这两个样本加入新类,记做:
G
6
=
{
x
3
,
x
5
}
G_6=\{x_3,x_5\}
G6={x3,x5}
2.锁定第三列和第五列,从第一行到最后一行逐行找出最小距离:
d
1
G
6
=
2
d
2
G
6
=
5
d
4
G
6
=
5
d_{1G_6}=2\\ d_{2G_6}=5\\ d_{4G_6}=5
d1G6=2d2G6=5d4G6=5
我们可以看到出现最小距离在第一行,因此把第一个样本加进来,记为:
G
7
=
{
x
1
,
x
3
,
x
5
}
G_7=\{x_1,x_3,x_5\}
G7={x1,x3,x5}
3.观察
G
7
G_7
G7和剩下样本的距离:
d
2
G
7
=
5
d
4
G
7
=
5
d_{2G_7}=5\\ d_{4G_7}=5
d2G7=5d4G7=5
然后剩下样本之间也有距离:
d
24
=
4
d_{24}=4
d24=4
3.判断距离后合并剩下两个样本:
G
8
=
{
x
2
,
x
4
}
G_8=\{x_2,x_4\}
G8={x2,x4}
4.合并得到最后结果:
G
9
=
{
G
7
,
G
8
}
G_9=\{G_7,G_8\}
G9={G7,G8}
即将全部样本聚成1类,聚类终⽌
系统聚类法基本思想
1、根据样品的特征,规定样品之间的距离
d
i
j
d_{ij}
dij ,共有
C
n
2
C_n^2
Cn2个。将所有列表,记为
D
(
0
)
D(0)
D(0)表,该表是⼀张对称表。所有的样本点各⾃为⼀类
2、选择
D
(
0
)
D(0)
D(0)表中最⼩的⾮零数,不妨假设为
d
p
q
d_{pq}
dpq,于是将
G
p
G_p
Gp和
G
q
G_q
Gq合并为⼀类,记为,
G
r
=
{
G
p
,
G
q
}
G_r=\{G_p,G_q\}
Gr={Gp,Gq}
3、在
D
(
i
)
,
i
=
0
,
1
,
⋯
,
n
−
1
D(i),i=0,1,\cdots,n-1
D(i),i=0,1,⋯,n−1表中选择最⼩的⾮零数,其对应的两类有构成新类,利⽤递推公式(下面讲)计算新类与其他类间的距离。
4、分别删除
D
(
i
)
D(i)
D(i)表的相应的⾏和列,并新增⼀⾏和⼀列添上的新类和旧类之间的距离,产⽣
D
(
i
+
1
)
D(i+1)
D(i+1)表。类推直⾄所有的样本点归为⼀类为⽌。
八种距离方法
1、 最短距离法
假设第
p
p
p类和第
q
q
q类合并成第
r
r
r类,第
r
r
r类与其它各旧类的距离按最短距离法为:
定义距离:
D
p
q
=
min
{
d
i
j
:
x
i
∈
G
p
,
x
j
∈
G
q
}
D_{pq}=\min\{d_{ij}:x_i\in G_p,x_j\in G_q\}
Dpq=min{dij:xi∈Gp,xj∈Gq}
递推公式:
D
r
l
=
min
{
D
p
l
,
D
q
l
}
l
≠
p
,
q
D_{rl}=\min\{D_{pl},D_{ql}\}\quad l\ne p,q
Drl=min{Dpl,Dql}l=p,q
2、 最⻓距离法
假设第
p
p
p类和第
q
q
q类合并成第
r
r
r类,第
r
r
r类与其它各旧类的距离按最⻓距离法为:
定义距离:
D
p
q
=
max
{
d
i
j
:
x
i
∈
G
p
,
x
j
∈
G
q
}
D_{pq}=\max\{d_{ij}:x_i\in G_p,x_j\in G_q\}
Dpq=max{dij:xi∈Gp,xj∈Gq}
递推公式:
D
r
l
=
max
{
D
p
l
,
D
q
l
}
l
≠
p
,
q
D_{rl}=\max\{D_{pl},D_{ql}\}\quad l\ne p,q
Drl=max{Dpl,Dql}l=p,q
3、中间距离法
假设第
p
p
p类和第
q
q
q类合并成第
r
r
r类,第
r
r
r类与其它各旧类的距离按中间距离法的递归公式为:
D
r
l
2
=
1
2
D
p
l
2
+
1
2
D
q
l
2
−
1
4
D
p
q
2
D_{rl}^2=\cfrac{1}{2}D_{pl}^2+\cfrac{1}{2}D_{ql}^2-\cfrac{1}{4}D_{pq}^2
Drl2=21Dpl2+21Dql2−41Dpq2
这里利用了平行四边形的对角线性质,对角线平方等于四边平方和。下节要证明。。。
4、 类平均法
类平均法定义类间的距离是两类间样品距离的平均数。假设第
p
p
p类和第
q
q
q类合并成第
r
r
r类,第
r
r
r类与其它各旧类的距离按类平均法为:
D
p
q
2
=
1
n
p
n
q
∑
x
i
∈
G
p
∑
x
j
∈
G
q
D
i
j
2
=
n
p
D
p
l
+
n
q
D
l
q
n
p
+
n
q
D_{pq}^2=\cfrac{1}{n_pn_q}\sum_{x_i\in G_p}\sum_{x_j\in G_q}D_{ij}^2=\cfrac{n_pD_{pl}+n_qD_{lq}}{n_p+n_q}
Dpq2=npnq1xi∈Gp∑xj∈Gq∑Dij2=np+nqnpDpl+nqDlq
5、 可变类平均法
类平均法的递推公式中,没有反映
G
p
G_p
Gp类和
G
q
G_q
Gq类距离的影响,进⼀步调整,加⼊
D
p
q
2
D^2_{pq}
Dpq2,并给定系数
β
<
1
\beta<1
β<1,则类平均法的递推公式改为:
D
p
q
2
=
(
1
−
β
)
n
p
D
p
l
+
n
q
D
l
q
n
p
+
n
q
+
β
D
p
q
2
D_{pq}^2=(1-\beta)\cfrac{n_pD_{pl}+n_qD_{lq}}{n_p+n_q}+\beta D^2_{pq}
Dpq2=(1−β)np+nqnpDpl+nqDlq+βDpq2
β
\beta
β的⼤⼩根据两项间相对重要性决定。
6、 离差平⽅和法
类似于⽅差分析的想法,如果类分得恰当,同类内的样品之间的离差平⽅和应较⼩,⽽类间的离差平⽅和应当较⼤。定义距离为离差平方和的增量:
D
p
q
2
=
S
r
2
−
S
p
2
−
S
q
2
D_{pq}^2=S^2_r-S^2_p-S^2_q
Dpq2=Sr2−Sp2−Sq2
其中
S
r
2
S^2_r
Sr2是由
G
p
G_p
Gp和
G
q
G_q
Gq合并成的
G
r
G_r
Gr类的类内离差平⽅和。可以证明离差平⽅和的聚类公式为
D
r
k
2
=
n
k
+
n
p
n
r
+
n
k
D
p
k
2
+
n
k
+
n
q
n
r
+
n
k
D
q
k
2
+
n
k
n
r
+
n
k
D
p
q
2
D^2_{rk}=\cfrac{n_k+n_p}{n_r+n_k}D^2_{pk}+\cfrac{n_k+n_q}{n_r+n_k}D^2_{qk}+\cfrac{n_k}{n_r+n_k}D^2_{pq}
Drk2=nr+nknk+npDpk2+nr+nknk+nqDqk2+nr+nknkDpq2
7、 可变⽅法
如果让中间距离法的递推公式前两项的系数也依赖于
β
\beta
β,则递推公式为:
D
r
k
2
=
1
−
β
2
(
D
k
p
2
+
D
k
q
2
)
+
β
D
p
q
2
,
β
<
1
D^2_{rk}=\cfrac{1-\beta}{2}(D^2_{kp}+D^2_{kq})+\beta D^2_{pq},\beta<1
Drk2=21−β(Dkp2+Dkq2)+βDpq2,β<1
⽤上式作为递推公式的系统聚类法称为可变法。
8、 重⼼法
重⼼法,也称样品均值法。设
G
p
G_p
Gp和
G
q
G_q
Gq为两个类:
X
ˉ
p
=
1
n
p
∑
x
i
∈
G
p
n
p
x
i
,
X
ˉ
q
=
1
n
q
∑
x
i
∈
G
q
n
q
x
i
\bar X_p=\cfrac{1}{n_p}\sum_{x_i\in G_p}^{n_p}x_i,\bar X_q=\cfrac{1}{n_q}\sum_{x_i\in G_q}^{n_q}x_i
Xˉp=np1xi∈Gp∑npxi,Xˉq=nq1xi∈Gq∑nqxi
分别是
G
p
G_p
Gp和
G
q
G_q
Gq的重⼼,类与类之间的距离定义为两个类重⼼(类内样品平均值)间的平⽅距离。
假设第
p
p
p类和第
q
q
q类合并成第
r
r
r类,第
r
r
r类与其它各旧类的距离按重心法的递归公式为:
D
r
l
=
∣
∣
x
ˉ
r
−
x
ˉ
l
∣
∣
=
∥
1
n
p
+
n
q
∑
x
i
∈
(
G
p
+
G
q
)
x
i
−
1
n
l
∑
x
i
∈
G
l
x
i
∥
=
n
p
n
r
D
p
l
2
+
n
q
n
r
D
q
l
2
−
n
p
n
q
n
r
2
D
p
q
2
D_{rl}=||\bar x_r-\bar x_l||=\left \|\cfrac{1}{n_p+n_q}\sum_{x_i\in(G_p+G_q)}x_i-\cfrac{1}{n_l}\sum_{x_i\in G_l}x_i\right\|\\ =\cfrac{n_p}{n_r}D_{pl}^2+\cfrac{n_q}{n_r}D_{ql}^2-\cfrac{n_pn_q}{n_r^2}D_{pq}^2
Drl=∣∣xˉr−xˉl∣∣=∥∥∥∥∥∥np+nq1xi∈(Gp+Gq)∑xi−nl1xi∈Gl∑xi∥∥∥∥∥∥=nrnpDpl2+nrnqDql2−nr2npnqDpq2