聚类-层次聚类(谱系聚类)算法

Posted 吾仄lo咚锵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聚类-层次聚类(谱系聚类)算法相关的知识,希望对你有一定的参考价值。

文章目录

简介


层次聚类(Hierarchical Clustreing)又称谱系聚类,通过在不同层次上对数据集进行划分,形成树形的聚类结构。很好体现类的层次关系,且不用预先制定聚类数,对大样本也有较好效果。

算法步骤:

  1. 计算类间距离矩阵
  2. 初始化n个类,将每个样本视为一类
  3. 在距离矩阵中选择最小的距离,合并这两个类为新类
  4. 计算新类到其他类的距离,得到新的距离矩阵
  5. 重复3-4步,直至最后合并为一个类

首先介绍距离矩阵的计算,然后第4步有不同的算法来定义新类到其他类的距离,包括:最短距离法、最长距离法、类平均法、重心法等。

距离矩阵


使用距离来作为样品间的相似性度量,往往常用欧氏距离。

比如给定数据:

x1x2x3
247
587
466

该数据包含特征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=1p(xikxjk)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=(25)2+(48)2+(77)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=(24)2+(46)2+(76)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=(54)2+(86)2+(76)2 =6 2.5

也就是距离矩阵D为:

G 1 G_1 G1 G 2 G_2 G2 G 3 G_3 G3
G 1 G_1 G10
G 2 G_2 G250
G 3 G_3 G332.50

由于是对称矩阵,给出下三角即可。

除了欧式距离,也可使用其他距离公式。或者使用相关系数来度量,越接近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 G10
G 4 G_4 G430

重复上述步骤,在D’中合并取 D 14 = 3 D_14=3 D14=3最小,合并类 G 1 G_1

以上是关于聚类-层次聚类(谱系聚类)算法的主要内容,如果未能解决你的问题,请参考以下文章

机器学习-层次聚类(谱系聚类)算法

谱聚类算法总结

白话啥是谱聚类算法

看完这篇文章,包你懂得如何用Python实现聚类算法的层次算法!

R统计基于相似系数的聚类分析

系统聚类法