当前位置: 首页 > article >正文

机器学习笔记:层次聚类

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.kler.cn/a/5592.html

相关文章:

  • 【论文阅读笔记】IC-Light
  • PyQt实战——使用python提取JSON数据(十)
  • 强力巨彩租赁屏技术更新,适用多种户外应用场景
  • vue3入门教程:计算属性
  • 基于STM32F103控制L298N驱动两相四线步进电机
  • flask-admin的modelview 实现list列表视图中扩展修改状态按钮
  • Leetcode.1641 统计字典序元音字符串的数目
  • 《雪国》像憧憬未曾见过的爱恋,美则美矣
  • TCP和UDP网络编程
  • 接收机中的非线性因素来源与模型
  • fastp软件介绍
  • ChatGPT自我分析
  • 【论文写作】如何表示比较关系, compare to OR compare with?
  • 自定义注解:让代码更加简洁优雅
  • 【SpringSecurity】认证授权框架——SpringSecurity使用方法
  • JavaWeb——过滤器Filter和拦截器Interceptor
  • 谷粒商城笔记+踩坑(18)——购物车
  • 2023年南京晓庄学院五年一贯制专转本软件工程专业考试大纲
  • 一文读懂 mysql 为什么要两阶段提交以及两阶段提交原理
  • 面试官灵魂拷问[二]:SQL 语句中 where 条件后写上 1=1 是什么意思?
  • 02_Python 学习基础
  • 【算法】Raft算法详解
  • C++ 20 list容器
  • SpringBoot+vue的图书管理系统
  • Java中字节流的相关内容
  • markdown