机器学习笔记:层次聚类

1 原理

1.1 主体思路

  • 通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。
  • 在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类的根节点。
  • 创建聚类树有自下而上合并(凝聚层次分类,agglomerative)和自上而下分裂(分裂层次分类,divisive)两种方法
    • 自下而上:先让所有点分别成为一个单独的簇,然后通过相似性不断组合,直到最后只有一个簇为止

    • 自上而下:从单个集群开始逐步分裂,直到无法分裂(无法继续分裂即每个点都是一个簇)

        

1.2 两个簇之间的距离

1.2.1 single linkage

  •  两个簇中距离最近的两个数据点间的距离作为这两个簇的距离
  • 问题:两个不相似的簇,可能因为其中的两个极端值很近,故而合并到了一块

1.2.2 complete linkage

  • 两个簇中距离最远的两个数据点间的距离作为这两个簇的距离
  • 问题:两个相似的簇,可能因为其中的两个极端值很远,故而无法合并到了一块

1.2.3 Average linkage

  • 计算两个簇中的每个数据点与其他所有数据点的距离。
  • 将所有距离的均值作为两个簇间的距离。
  • 这种方法计算量比较大,但结果比前两种方法更合理。
  • 比如簇(A,F)和簇(B,C)之间的距离可以计算为:

1.2.4 Ward

 

 

2 举例

2.1 问题描述

  • 一位老师想要将学生分成不同的组。
  • 现在有每个学生在作业中的分数,想根据这些分数将他们分成几组。
  • 关于拥有多少组,这里没有固定的目标(K-means需要事先提供K,层次聚类则不需要)
Student_IDMarks
110
27
328
420
535

2.2 解决方法(自下而上的层次聚类)

2.2.1 创建临近矩阵

这里的距离就是两个学生成绩的差

ID12345
103181025
230211328
31821087
410138015
525287150

2.2.2 合并聚类

这里我们假设使用single linkage

  • 首先,每个学生单独成簇
    • 【1】【2】【3】【4】【5】
  • 然后找临近矩阵中最小的非零距离,合并距离最小的两个簇
    • 此时最小的距离是【1】和【2】
    • ——>【1,2】【3】【4】【5】
  • 然后更新临近矩阵
    • ID(1,2)345
      (1,2)0181025
      318087
      4108015
      5257150
  • 接下来最近的是【3】和【5】

    • 合并之【1,2】【3,5】【4】

  • 再计算临近矩阵

    • ID(1,2)(3,5)4
      (1,2)01810
      (3,5)1808
      41080
  • 然后聚类【3,5】和【4】

    • ID(1,2)(3,4,5)
      (1,2)010
      (3,4,5)100
  • 最后把【1,2】和【3,4,5】合并,层次聚类结束

2.2.3 如何聚类

  •  1,我需要k个类,那么我们就从下而上不断合并,直至还剩k个类

参考内容:

一文读懂层次聚类(Python代码) - 知乎 (zhihu.com)

机器学习--聚类系列--层次聚类 - 理想几岁 - 博客园 (cnblogs.com)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值