层次聚类概述

层次聚类

  • 层次聚类(hierarchical clustering)试图在不同层次对数据集进行划分,从而形成树形的聚类结构,
  • 数据集的划分可采用“自底向上(合并)”的聚合策略,也可采用“自顶向下(拆分)”的分析策略。依据采用的策略可以将层次聚类方法分为:
    • 聚合式聚类(agglomerative clustering)
    • 分拆式聚类(divisive clustering)
  • 两种方法均是启发式的策略,没有去优化一个明确的目标函数来实现聚类,很难严格评价聚类的效果。
  • 层次聚类得到的结果是 "树状图"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z34BaNpQ-1650195896617)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220417190150643.png)]

根据不同虚线的位置,可以得到不同数量的聚类

聚合式聚类

  • 在开始时把每个样本都每个样本都当成一簇,然后在每一次迭代中将最相似的(距离最近)的两个簇合并,直到把所有簇合并为包含所有样本的一簇

流程

  1. 将每个样本看做一个簇: C i ← { i } , i = 1 , 2 , . . . , n C_i \leftarrow \{i\}, i = 1,2,...,n Ci{i},i=1,2,...,n
  2. 初始化可供合并的簇集: S ← { 1 , 2 , . . . , n } S \leftarrow \{1,2,...,n\} S{1,2,...,n}
  3. 计算出簇间距离矩阵
  4. 重复迭代如下步骤直至没有可供合并的簇:
    1. 选择两个最相似的簇进行合并: ( j , k ) ← a r g min ⁡ j , k ∈ S d j , k (j,k) \leftarrow arg\min_{j,k \in S} d_{j,k} (j,k)argminj,kSdj,k
    2. 创建新簇 C l ← C j ∪ C k C_l \leftarrow C_j \cup C_k ClCjCk
    3. S S S 中取出已合并的 j j j k k k S ← S ∖ { j , k } S \leftarrow S\setminus\{ j,k\} SS{j,k}
    4. 如果 C l ≠ { 1 , 2 , . . . , n } C_l \neq \{ 1,2,...,n\} Cl={1,2,...,n},那么增加一个可合并集 S ← S ∪ { l } S \leftarrow S \cup \{l\} SS{l}
    5. 对于每个 i ∈ S i \in S iS ,更新簇间距离矩阵 d ( i , l ) d(i,l) d(i,l)

簇间距离的计算

单链接(single-linkage)

​ 也称为最近邻距离,即簇 G G G 和簇 H H H之间的距离定义为两簇之间最近的成员之间的距离:
d s l ( G , h ) = min ⁡ i ∈ G , i ′ ∈ H d i , i ′ d_{sl}(G,h) = \min_{i \in G, i^{'} \in H}d_{i,i^{'}} dsl(G,h)=iG,iHmindi,i
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nVJ3AqxQ-1650195896619)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220417182009402.png)]

全链接(complete-linkage)

​ 也称为最远邻距离,即簇G和簇H之间的距离定义为两簇之间最远的成员之间的距离。
d c l ( G , H ) = max ⁡ i ∈ G , i ′ ∈ H d i , i ′ d_{cl}(G,H) = \max_{i \in G, i^{'} \in H}d_{i,i^{'}} dcl(G,H)=iG,iHmaxdi,i
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ilNdjrs8-1650195896619)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220417182432648.png)]

平均链接(average-linkage)

  • 表示两簇之间所有成员对的平均距离

d a v g ( G , H ) = 1 n G n H ∑ i ∈ G ∑ i ′ ∈ H d i , i ′ d_{avg}(G,H) = \frac 1{n_Gn_H}\sum_{i \in G}\sum _{i^{'} \in H}d_{i,i^{'}} davg(G,H)=nGnH1iGiHdi,i

  • n G n_G nG n H n_H nH 是簇G和簇H的样本个数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tQAH1B2A-1650195896620)(C:\Users\wzq20\AppData\Roaming\Typora\typora-user-images\image-20220417182643242.png)]

三种距离方式的比较

  • 单链接(single-linkage)
    • 只需要考虑两簇之间有成员对距离足够近就将两簇合并,而并没有考虑其他簇内其他成员的距离。因此单连接法形成的簇很有可能违背紧致性特征,即簇内成员应该尽可能相似
  • 全连接法(complete-linkage):
    • 只有两簇的联合的成员间的距离相对较小时,才将两簇合并,因此完整连接法倾向于生成紧致簇
  • 均连接法(average-linkage)
    • 介于单连接和全连接之间的方法
    • 易于生成相对紧致的簇同时簇间距离较远。

分拆式聚类

​ 分拆聚类将所有样本集合看作一簇,以自上而下的方式,递归地将现有的簇分拆为两个子簇。

​ 利用不同的启发式方法进行分拆方式的选择:

  • 二分K-means聚类

    • 选择半径最大的簇,对该簇进行K(2)-means聚类分为两个子簇
    • 重复此过程直到到达想要的簇个数
  • 最小生成树法

    • 将每个样本看作一个图节点,将样本间距离看作节点边的权重,根据此图建立最小生成树。
    • 从权重最大处将该簇分拆为两簇,然后重复此过程直到达到想要的簇个数。实际上,该方法得到的聚类结果和单连接的聚合聚类得到的结果一致。

层次聚类算法总结

  • 层次聚类一次性地得到了整个聚类的过程,想要分多少个簇都可以直接根据“树状图”来得到结果,改变簇的数目不再需要再次计算数据点的归属类别;
  • 单连接和全连接代表了簇间距离度量的两个极端,它们对离群点或噪声数据过分敏感
  • 平均连接时一种计算量大,而且错分在层次聚类中时不可修正的,一旦某个样本被分到某个聚类中,则该样本永远停留在该聚类中。
  • 层次聚类的缺点是:
    • 计算量大
    • 而且错分在聚合式聚类中是不可修正的,一旦某个样本被分到某个聚类中,则该样本永远停留在该聚类中。
  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值