【机器学习基础】机器学习入门核心算法:层次聚类算法(AGNES算法和 DIANA算法)

news2025/7/24 4:19:45

在这里插入图片描述

机器学习入门核心算法:层次聚类算法(AGNES算法和 DIANA算法)

        • 一、算法逻辑
        • 二、算法原理与数学推导
          • 1. 距离度量
          • 2. 簇间距离计算(连接标准)
          • 3. 算法伪代码(凝聚式)
        • 三、模型评估
          • 1. 内部评估指标
          • 2. 外部评估指标(已知真实标签)
          • 3. 超参数选择
        • 四、应用案例
          • 1. 生物信息学
          • 2. 文档主题分层
          • 3. 图像分割
          • 4. 社交网络分析
        • 五、面试题及答案
          • 常见问题
        • 六、相关论文
        • 七、优缺点对比
      • 总结

一、算法逻辑

层次聚类(Hierarchical Clustering)通过构建树状结构(树状图/Dendrogram)揭示数据内在的层次关系,分为两类:

  1. 凝聚式(Agglomerative)
    • 自底向上:每个样本初始为一个簇 → 迭代合并最近簇 → 最终形成单一簇
    • 流程
      计算距离矩阵 → 合并最近簇 → 更新距离矩阵 → 重复至终止
      
  2. 分裂式(Divisive)
    • 自顶向下:所有样本初始为一个簇 → 迭代分裂最异质簇 → 直至每个样本一簇
    • 计算复杂度高,较少使用

核心特点

  • 无需预设聚类数
  • 树状图可视化层次关系
  • 合并/分裂过程不可逆

在这里插入图片描述

二、算法原理与数学推导
1. 距离度量

设样本 X = { x 1 , x 2 , . . . , x n } X = \{x_1, x_2, ..., x_n\} X={x1,x2,...,xn}, x i ∈ R d x_i \in \mathbb{R}^d xiRd
常用距离:

  • 欧氏距离: d ( x i , x j ) = ∑ k = 1 d ( x i k − x j k ) 2 d(x_i, x_j) = \sqrt{\sum_{k=1}^d (x_{ik} - x_{jk})^2} d(xi,xj)=k=1d(xikxjk)2
  • 曼哈顿距离: d ( x i , x j ) = ∑ k = 1 d ∣ x i k − x j k ∣ d(x_i, x_j) = \sum_{k=1}^d |x_{ik} - x_{jk}| d(xi,xj)=k=1dxikxjk
2. 簇间距离计算(连接标准)
类型公式特点
单连接 d min ( C i , C j ) = min ⁡ a ∈ C i , b ∈ C j d ( a , b ) d_{\text{min}}(C_i, C_j) = \min_{a \in C_i, b \in C_j} d(a,b) dmin(Ci,Cj)=aCi,bCjmind(a,b)易形成链式结构
全连接 d max ( C i , C j ) = max ⁡ a ∈ C i , b ∈ C j d ( a , b ) d_{\text{max}}(C_i, C_j) = \max_{a \in C_i, b \in C_j} d(a,b) dmax(Ci,Cj)=aCi,bCjmaxd(a,b)对噪声敏感
质心法 d cent ( C i , C j ) = d ( μ i , μ j ) d_{\text{cent}}(C_i, C_j) = d(\mu_i, \mu_j) dcent(Ci,Cj)=d(μi,μj)可能导致逆反(Inversion)

其中 μ i = 1 ∣ C i ∣ ∑ x ∈ C i x \mu_i = \frac{1}{|C_i|}\sum_{x \in C_i} x μi=Ci1xCix 为簇质心, Δ SSE \Delta \text{SSE} ΔSSE 为合并后的簇内平方和增量。

3. 算法伪代码(凝聚式)
输入: 数据集 X, 连接标准  
输出: 树状图  
1. 初始化 n 个簇,每个簇包含一个样本  
2. 计算所有簇对的距离矩阵 D  
3. for k = n to 1:  
4.   找到 D 中最小距离的簇对 (C_i, C_j)  
5.   合并 C_i 和 C_j 为新簇 C_{new}  
6.   更新距离矩阵 D(移除 C_i, C_j,添加 C_{new}7.   记录合并高度(距离)  
8. 生成树状图  
三、模型评估
1. 内部评估指标
  • 轮廓系数(Silhouette Coefficient)
    s ( i ) = b ( i ) − a ( i ) max ⁡ { a ( i ) , b ( i ) } s(i) = \frac{b(i) - a(i)}{\max\{a(i), b(i)\}} s(i)=max{a(i),b(i)}b(i)a(i)
    a ( i ) a(i) a(i):样本 i i i 到同簇其他点的平均距离, b ( i ) b(i) b(i):到最近其他簇的平均距离。 s ( i ) ∈ [ − 1 , 1 ] s(i) \in [-1,1] s(i)[1,1],越大越好。
  • 共表型相关(Cophenetic Correlation)
    衡量树状图距离与原始距离的一致性(值接近1表示层次结构保留良好)
2. 外部评估指标(已知真实标签)
  • 调整兰德指数(Adjusted Rand Index, ARI)
  • Fowlkes-Mallows Index(FMI)
3. 超参数选择
  • 切割高度选择:通过树状图的"最长无交叉垂直边"确定聚类数
  • 连接标准选择
    • 单连接:适合非凸形状
    • Ward法:适合凸簇且噪声少
四、应用案例
1. 生物信息学
  • 基因表达聚类:对RNA-seq数据聚类,识别功能相似的基因模块
  • 工具:GenePattern、Cluster 3.0
2. 文档主题分层
  • 步骤
    1. 文档→TF-IDF向量
    2. 余弦距离 + 平均连接
    3. 切割树状图得到主题层级(如:科技→AI→CV/NLP)
3. 图像分割
  • 流程
    像素→颜色+坐标特征 → Ward法聚类 → 合并相似区域
  • 优势:保留空间连续性
4. 社交网络分析
  • 用户行为数据聚类 → 发现社区层级结构(如:核心用户群→子兴趣组)
五、面试题及答案
常见问题
  1. Q: 层次聚类与K-means的本质区别?
    A:

    • 层次聚类生成树状结构,K-means生成平面划分
    • 层次聚类无需预设K,K-means需指定聚类数
    • 层次聚类复杂度 O ( n 3 ) O(n^3) O(n3),K-means为 O ( n k ) O(nk) O(nk)
  2. Q: Ward法的目标函数是什么?
    A: 最小化合并后的簇内平方和增量:
    Δ SSE = ∣ C i ∣ ∣ C j ∣ ∣ C i ∣ + ∣ C j ∣ ∥ μ i − μ j ∥ 2 \Delta \text{SSE} = \frac{|C_i||C_j|}{|C_i|+|C_j|} \|\mu_i - \mu_j\|^2 ΔSSE=Ci+CjCi∣∣Cjμiμj2

  3. Q: 何时选择全连接而非单连接?
    A: 当需要紧凑球形簇且数据噪声较少时;单连接易受噪声影响形成链式结构。

  4. Q: 如何处理大规模数据?
    A:

    • 使用优先队列优化到 O ( n 2 log ⁡ n ) O(n^2 \log n) O(n2logn)
    • 采样或Mini-Batch
    • 切换为BIRCH(平衡迭代规约聚类)算法
六、相关论文
  1. 奠基性论文

    • Ward, J. H. (1963). Hierarchical Grouping to Optimize an Objective Function
      贡献:提出Ward最小方差法
    • Johnson, S. C. (1967). Hierarchical Clustering Schemes
      贡献:系统化连接标准
  2. 高效优化

    • Murtagh, F. (1983). A Survey of Recent Advances in Hierarchical Clustering Algorithms
      贡献:提出 O ( n 2 ) O(n^2) O(n2) 单连接算法
  3. 生物学应用

    • Eisen, M. B., et al. (1998). Cluster Analysis of Gene Expression Data
      工具:开发TreeView软件
七、优缺点对比
优点缺点
1. 可视化强(树状图展示层次)1. 计算复杂度高(凝聚式 O ( n 3 ) O(n^3) O(n3)
2. 无需预设聚类数2. 合并/分裂后不可逆
3. 灵活选择距离/连接标准3. 对噪声和离群点敏感(尤其全连接)
4. 适合层次结构数据(如生物分类学)4. 大样本内存消耗大

总结

  • 核心价值:揭示数据内在层次关系(如生物进化树、文档主题树)
  • 工业选择:中小规模数据用层次聚类(<10k样本),大规模用BIRCH或HDBSCAN
  • 关键决策:距离度量 + 连接标准(Ward法最常用)
  • 趋势:与深度学习结合(如深度层次聚类)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2397473.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Google Play的最新安全变更可能会让一些高级用户无法使用App

喜欢Root或刷机的Android用户要注意了&#xff0c;Google最近全面启用了新版Play Integrity API&#xff0c;可能会导致部分用户面临无法使用某些App的窘境。Play Integrity API是Google提供给开发者的工具&#xff0c;用于验证App是否在“未修改”的设备上运行。 许多重要应用…

React---day5

4、React的组件化 组件的分类&#xff1a; 根据组件的定义方式&#xff0c;可以分为&#xff1a;函数组件(Functional Component )和类组件(Class Component)&#xff1b;根据组件内部是否有状态需要维护&#xff0c;可以分成&#xff1a;无状态组件(Stateless Component )和…

Java开发之定时器学习

面试 一、线程池实现定时器 核心代码&#xff1a; public static void main(String[] args) {ScheduledExecutorService scheduledExecutorService Executors.newScheduledThreadPool(5);Runnable runnable () -> System.out.println("当前线程"Thread.current…

HealthBench医疗AI评估基准:技术路径与核心价值深度分析(上)

引言:医疗AI评估的新范式 在人工智能技术迅猛发展的当下,医疗AI系统已逐渐从实验室走向临床应用。然而,医疗领域的特殊性要求这些系统不仅需要在技术指标上表现出色,更需要在实际临床场景中展现出可靠、安全且有效的性能。长期以来,医疗AI评估领域面临着三个核心挑战:评…

Windows+VSCode搭建小智(xiaozhi)开发环境

作为一名DIY达人&#xff0c;肯定不会错过最近很火的“小智AI聊天机器人”&#xff0c;网上教程非常丰富&#xff0c;初级玩家可以直接在乐鑫官方下载ESP-IDF安装包并经过简单的菜单式配置后&#xff0c;即可进行代码编译和烧录&#xff08;详见&#xff1a;Docs&#xff09;。…

VueScan Pro v9.8.45.08 一款图像扫描软件,中文绿色便携版

VueScan是著名的第三方底片扫描仪驱动程序&#xff0c;支持市场可见绝大多数型号的底片扫描仪&#xff0c;可以更为灵活地控制扫描过程&#xff0c;更深入地发掘硬件潜力&#xff0c;获取色彩 完美的高质量扫描结果。VueScan支持200种以上的底片类型&#xff0c;在剪取图像时制…

FreeRTOS通俗理解指南:基础概念 + 架构+ 内核组件+练手实验

RTOS 基础概念 想象一下&#xff0c;你是一个忙碌的厨师&#xff0c;在厨房里同时要完成煎牛排和煮意大利面两项任务。 1.传统单线程模式&#xff08;没有RTOS&#xff09; 如果你只能按顺序一项一项地做&#xff0c;就会是这样的过程&#xff1a; 先煎一会儿牛排然后去看看…

房屋租赁系统 Java+Vue.js+SpringBoot,包括房屋信息、看房申请、租赁合同、房屋报修、收租信息、维修数据、租客管理、公告管理模块

房屋租赁系统 JavaVue.jsSpringBoot&#xff0c;包括房屋信息、看房申请、租赁合同、房屋报修、收租信息、维修数据、租客管理、公告管理模块 百度云盘链接&#xff1a;https://pan.baidu.com/s/16YRGBPsfbd4_HxXhO0jM5Q 密码&#xff1a;smk4 摘 要 房屋是人类生活栖息的重要…

ASP.NET MVC添加视图示例

ASP.NET MVC高效构建Web应用- 商品搜索 - 京东 视图&#xff08;V&#xff09;是一个动态生成HTML页面的模板&#xff0c;它负责通过用户界面展示内容。本节将修改HelloWorldController类&#xff0c;并使用视图模板文件&#xff0c;以干净地封装生成对客户端的HTML响应的过程…

50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | Form Wave(表单label波动效果)

&#x1f4c5; 我们继续 50 个小项目挑战&#xff01;—— FormWave组件 仓库地址&#xff1a;https://github.com/SunACong/50-vue-projects 项目预览地址&#xff1a;https://50-vue-projects.vercel.app/ &#x1f3af; 组件目标 构建一个美观、动态的登录表单&#xff0…

双目相机深度的误差分析(基线长度和相机焦距的选择)

全文基于针孔模型和基线水平放置来讨论 影响双目计算深度的因素&#xff1a; 1、基线长度&#xff1a;两台相机光心之间距离2、相机焦距&#xff08;像素&#xff09;&#xff1a; f x f_x fx​&#xff08;或 f y f_y fy​&#xff09;为焦距 f f f和一个缩放比例的乘积。在…

Pytorch Geometric官方例程pytorch_geometric/examples/link_pred.py环境安装教程及图数据集制作

最近需要训练图卷积神经网络&#xff08;Graph Convolution Neural Network, GCNN&#xff09;&#xff0c;在配置GCNN环境上总结了一些经验。 我觉得对于初学者而言&#xff0c;图神经网络的训练会有2个难点&#xff1a; ①环境配置 ②数据集制作 一、环境配置 我最初光想…

React---day6、7

6、组件之间进行数据传递 **6.1 父传子&#xff1a;**props传递属性 父组件&#xff1a; <div><ChildCpn name"蒋乙菥" age"18" height"1,88" /> </div>子组件&#xff1a; export class ChildCpn extends React.Component…

hook组件-useEffect、useRef

hook组件-useEffect、useRef useEffect 用法及执行机制 WillMount -> render -> DidMount ShouldUpdate -> WillUpdate -> render -> DidUpdate WillUnmount(只有这个安全) WillReceiveProps useEffect(callback) 默认所有依赖都更新useEffect(callback, [])&am…

随机游动算法解决kSAT问题

input&#xff1a;n个变量的k-CNF公式 ouput&#xff1a;该公式的一组满足赋值或宣布没有满足赋值 算法步骤&#xff1a; 随机均匀地初始化赋值 a ∈ { 0 , 1 } n a\in\{0,1\}^n a∈{0,1}n.重复t次&#xff08;后面会估计这个t&#xff09;&#xff1a; a. 如果在当前赋值下…

《Discuz! X3.5开发从入门到生态共建》第1章 Discuz! 的前世今生-优雅草卓伊凡

《Discuz! X3.5开发从入门到生态共建》第1章 Discuz! 的前世今生-优雅草卓伊凡 第一节 从康盛创想到腾讯收购&#xff1a;PC时代的辉煌 1.1 Discuz! 的诞生&#xff1a;康盛创想的开源梦想 2001年&#xff0c;中国互联网正处于萌芽阶段&#xff0c;个人网站和论坛开始兴起。…

笔试强训:Day6

一、小红的口罩&#xff08;贪心优先级队列&#xff09; 登录—专业IT笔试面试备考平台_牛客网 #include<iostream> #include<queue> #include<vector> using namespace std; int n,k; int main(){//用一个小根堆 每次使用不舒适度最小的cin>>n>&…

谷歌Stitch:AI赋能UI设计,免费高效新利器

在AI技术日新月异的今天&#xff0c;各大科技巨头都在不断刷新我们对智能工具的认知。最近&#xff0c;谷歌在其年度I/O开发者大会期间&#xff0c;除了那些聚光灯下的重磅发布&#xff0c;还悄然上线了一款令人惊喜的AI工具——Stitch。这是一款全新的、完全免费的AI驱动UI&am…

运营商地址和ip属地一样吗?怎么样更改ip属地地址

‌在互联网时代&#xff0c;IP属地和运营商地址是两个经常被提及的概念&#xff0c;但它们是否相同&#xff1f;如何更改IP属地地址&#xff1f;这些问题困扰着许多网民。本文将深入探讨这两个概念的区别&#xff0c;并详细介绍更改IP属地地址的方法。 一、运营商地址和IP属地一…

在QT中,利用charts库绘制FFT图形

第1章 添加charts库 1.1 .pro工程添加chart库 1.1.1 在.pro工程里面添加charts库 1.1.2 在需要使用的地方添加这两个库函数&#xff0c;顺序一点不要搞错&#xff0c;先添加.pro&#xff0c;否则编译器会找不到这两个.h文件。 第2章 Charts关键绘图函数 2.1 QChart 类 QChart 是…