机器学习-层次聚类(谱系聚类)算法
Posted 吾仄lo咚锵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习-层次聚类(谱系聚类)算法相关的知识,希望对你有一定的参考价值。
文章目录
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介
层次聚类(Hierarchical Clustreing)又称谱系聚类,通过在不同层次上对数据集进行划分,形成树形的聚类结构。很好体现类的层次关系,且不用预先制定聚类数,对大样本也有较好效果。
算法步骤:
- 计算类间距离矩阵
- 初始化n个类,将每个样本视为一类
- 在距离矩阵中选择最小的距离,合并这两个类为新类
- 计算新类到其他类的距离,得到新的距离矩阵
- 重复3-4步,直至最后合并为一个类
首先介绍距离矩阵的计算,然后第4步有不同的算法来定义新类到其他类的距离,包括:最短距离法、最长距离法、类平均法、重心法等。
距离矩阵
使用距离来作为样品间的相似性度量,往往常用欧氏距离。
比如给定数据:
x1 | x2 | x3 |
---|---|---|
2 | 4 | 7 |
5 | 8 | 7 |
4 | 6 | 6 |
该数据包含特征x1、x2和x3,第一个样品[2,4,7],第二个样品[5,8,7],第三个样品[4,6,6],将每个样品各看作一类,
G
i
=
i
,
i
=
1
,
2
,
3
,
4
G_i=\\i\\,i=1,2,3,4
Gi=i,i=1,2,3,4。
根据欧式距离:
d
(
x
i
,
x
j
)
=
[
∑
k
=
1
p
(
x
i
k
−
x
j
k
)
2
]
1
2
d(x_i,x_j)=[\\sum^p_k=1(x_ik-x_jk)^2]^\\frac12
d(xi,xj)=[k=1∑p(xik−xjk)2]21
D
12
=
D
21
=
(
2
−
5
)
2
+
(
4
−
8
)
2
+
(
7
−
7
)
2
=
5
D_12=D_21=\\sqrt(2-5)^2+(4-8)^2+(7-7)^2=5
D12=D21=(2−5)2+(4−8)2+(7−7)2=5
D
13
=
D
31
=
(
2
−
4
)
2
+
(
4
−
6
)
2
+
(
7
−
6
)
2
=
3
D_13=D_31=\\sqrt(2-4)^2+(4-6)^2+(7-6)^2=3
D13=D31=(2−4)2+(4−6)2+(7−6)2=3
D
23
=
D
32
=
(
5
−
4
)
2
+
(
8
−
6
)
2
+
(
7
−
6
)
2
=
6
≈
2.5
D_23=D_32=\\sqrt(5-4)^2+(8-6)^2+(7-6)^2=\\sqrt6≈2.5
D23=D32=(5−4)2+(8−6)2+(7−6)2=6≈2.5
也就是距离矩阵D为:
G 1 G_1 G1 | G 2 G_2 G2 | G 3 G_3 G3 | |
---|---|---|---|
G 1 G_1 G1 | 0 | ||
G 2 G_2 G2 | 5 | 0 | |
G 3 G_3 G3 | 3 | 2.5 | 0 |
由于是对称矩阵,给出下三角即可。
除了欧式距离,也可使用其他距离公式。或者使用相关系数来度量,越接近1表示越相关,计算相关系数矩阵。
最短距离法
设类
G
r
G_r
Gr由
G
p
,
G
q
G_p,G_q
Gp,Gq合并得来,包含
n
r
=
n
p
+
n
q
n_r=n_p+n_q
nr=np+nq个样品,最短距离法:
D
r
k
=
m
i
n
D
p
d
,
D
q
k
D_rk=min\\D_pd,D_qk\\
Drk=minDpd,Dqk
在上述矩阵
D
D
D中,
D
23
=
2.5
D_23=2.5
D23=2.5最小,也就是合并
G
2
G_2
G2和
G
3
G_3
G3为新类
G
4
=
2
,
3
G_4=\\2,3\\
G4=2,3
用最短距离法,计算新类到其他类距离:
D
41
=
m
i
n
D
21
,
D
3
,
1
=
m
i
n
5
,
3
=
3
D_41=min\\D_21,D_3,1\\=min\\5,3\\=3
D41=minD21,D3,1=min5,3=3
得到新的距离矩阵D’为:
G 1 G_1 G1 | G 4 G_4 G4 | |
---|---|---|
G 1 G_1 G1 | 0 | |
G 4 G_4 G4 | 3 | 0 |
重复上述步骤,在D’中合并取聚类-层次聚类(谱系聚类)算法