机器学习笔记:层次聚类

news/2024/5/20 8:34:09 标签: 机器学习, 聚类, 算法

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)


http://www.niftyadmin.cn/n/190909.html

相关文章

SpringBoot启动前后执行

SpringBoot启动之后立即执行 一个是ApplicationRunner 另一个是CommandLineRunner 还可以用AoolicationListener<ApplicationReadyEvent> 上面两种需要记住 具体使用 具体执行的顺序 默认情况下 ApplicationRunner比CommandLineRunner先执行 但是如果用Order 指定下…

@DataRedisTest测试redis从未如此丝滑

测试redis从未如此丝滑前提介绍示例总结前提 本地需要先启动一个 redis 服务器, 端口 6379 本地已经安装java, maven 介绍 DataRedisTest是Spring Boot提供的一个测试注解&#xff0c;用于测试Redis相关的功能。它提供了自动配置Redis测试环境的功能&#xff0c;因此在测试时…

《扬帆优配》两融业务不乏亮点 仍需多维度补短板

受多重因素影响&#xff0c;2022年证券职业全体成绩承压。不过&#xff0c;到3月29日晚记者发稿时&#xff0c;从已发表的7家上市券商2022年年报来看&#xff0c;券商在两融事务方面不乏亮点。 受访业内人士表明&#xff0c;两融事务的开展不仅丰厚了券商的收入&#xff0c;也促…

3.23——3.26后半周总结

3.23 周四 3.24周五 学习各个视频编辑插件&#xff0c;尝试用于项目中 比如&#xff1a;1.Kaltura Video 2.vue-monaco 3.momaco-editor 4.videojs 全部都查了好多资料并且尝试代码实现&#xff0c;但是没有成功。 3.25周六 3.26周天 1.把github上的关于视频处理的开源源码都…

《MySQL系列-InnoDB引擎35》索引与算法-B+树索引的使用

B树索引的使用 1 不同应用中B树索引的使用 在OLTP中&#xff0c;B树索引建立后&#xff0c;对该索引的使用应该只是通过该索引取得表中少部分的数据。这时建立B树索引才是有意义的&#xff0c;否则即使建立了&#xff0c;优化器也可能不选择使用索引。 在OLAP中&#xff0c;…

全栈声明式可观测:KubeVela 开箱即用且灵活定制的云原生应用洞察

作者介绍&#xff1a;殷达&#xff0c;KubeVela Maintainer&#xff0c;阿里云高级工程师&#xff0c;深度参与了 KubeVela 混合云多集群管理、可扩展工作流、可观测等核心能力体系的建设 KubeVela [ 1] 是一个开箱即用的现代化应用交付与管理平台&#xff0c;它通过统一的应用…

线程相关的知识点

线程 1.进程和线程 1.进程 1.进程是指运行的程序&#xff0c;操作系统会为其分配空间 2.进程是程序运行一次的过程&#xff0c;是动态的&#xff0c;有他自身的产生、存在和消亡过程 2.线程&#xff08;线程还可以继续创建线程&#xff09; 1.线程是由进程创建的&#xf…

多线程并发编程笔记04(小滴课堂)---锁

锁的分类&#xff1a; lock的使用&#xff1a; 那lock和synchronized的区别是什么呢&#xff1f; 实现属于自己的锁&#xff1a; 通过运行结果我们发现&#xff0c;好像出现了一种死锁的感觉&#xff0c;没有成功重入&#xff0c;这是不对的&#xff0c;所以我们要去改我们的…