熟悉CMT的都知道,作者在聚类部分使用了层次凝聚聚类算法(Hierarchical Agglomerative Clustering)并且使用的是单链(Single-link),今天我们就来学习下这个算法。

前面学习了几种聚类算法,K-Means,EM,AP等都属于平面聚类(Flat Clustering),因为这些算法的输出都是返回一个平面的无结构的聚类集合,所以叫做Flat clustering;平面聚类有一个缺陷就是要选择聚类的数目以及初始点,这对于没有经验的人员来说是一件很棘手的工作,因为聚类结果的好坏完全依赖于这一参数的选择,所以很多时候可以考虑下层次聚类算法,避免了聚类数量和初始点的选择。层次聚类算法有多种形式,本篇介绍的这个叫做层次凝聚聚类算法(Hierarchical Agglomerative Clustering),简称HAC,其主要思想就是,先把每一个样本点当做一个聚类,然后不断重复的将其中最近的两个聚类合并(就是凝聚的含义),直到满足迭代终止条件。

HAC具体实现步骤:

1)将训练样本集中的每个数据点都当做一个聚类;

2)计算每两个聚类之间的距离,将距离最近的或最相似的两个聚类进行合并;

3)重复上述步骤,直到得到的当前聚类数是合并前聚类数的10%,即90%的聚类都被合并了;当然还可以设置其他终止条件,这样设置是为了防止过度合并。

很明显,还是一样的老套路,唯一的新鲜处在于第二步中,如何度量两个聚类间的相似度,关于这个主要有三种定义:

1)单链(Single-link):不同两个聚类中离得最近的两个点之间的距离,即MIN;

2)全链(Complete-link):不同两个聚类中离得最远的两个点之间的距离,即MAX;

3)平均链(Average-link):不同两个聚类中所有点对距离的平均值,即AVERAGE;

不难发现,其中前两种定义的出发点是那些点集中的特殊点或外点,如噪点;而最后一种定义相对来说就不那么稳定了,所以又有人提出了使用距离的中值,这样可以排除一些个别点的干扰。

可以看下图效果(基于单链),黑色点是噪声点:

这是一种自下而上(bottom-up)的层次聚类,因此叫做层次凝聚聚类(Hierarchical Agglomerative Clustering),由于其计算点对距离时需要多次遍历,所以计算量可想而知,并且每次迭代只能合并两个聚类,时间复杂度上同样缺乏优势,因此实际应用中没有Flat clustering那么受欢迎,但是由于其避免了聚类数以及初始点的选择,而且不会陷入局部最优,在一些二次复杂度的问题中还是应该考虑的;在最早的CBIR系统中,HAC被应用到词袋技术中,如下图:

另外还有一种层次聚类算法,叫做自上而下的,这种形式的聚类主要是使用了一种分离聚类的方法,这里就不打算深入了,需要的可参考http://nlp.stanford.edu/IR-book/html/htmledition/hierarchical-agglomerative-clustering-1.html#sec:hac,里面有很详细的关于层次聚类的东西。

层次凝聚聚类算法(HAC)相关推荐

  1. 基于改进层次凝聚聚类算法的垃圾收运跨区域调度策略

    1引言: 垃圾收运的各个环节是控制垃圾回收成本的关键,当前分区域运营模式存在以下问题: 运营成本高:分区域运营模式限制了城市生活垃圾收集和运输的各个环节.从一个区域的特定街道收集的垃圾只能在该区域街道 ...

  2. 使用Tesseract OCR引擎和层次聚集聚类(HAC)对多列数据进行OCR

    这篇博客将介绍如何使用Tesseract OCR引擎和层次聚集聚类(HAC)对多列数据进行OCR.包括学习一些OCR多列数据的提示和技巧,最重要的是,将文本的行/列关联在一起. 层次聚集聚类(HAC ...

  3. 聚类——基于层次的聚类算法

    基于层次的聚类算法(Hierarchical Clustering) 当不知道应该分为几类时,使用层次聚类比较适合.层次聚类会构建一个多层嵌套的分类,类似一个树状结构.可以选择一个聚类数量,根据需求对 ...

  4. 浅尝辄止_数学建模(笔记_系统(层次)聚类算法及其SPSS实现)

    文章目录 一.系统(层次)聚类介绍 1.分类准则 2.算法的流程步骤 2.样本与样本之间的距离计算公式 4.类与类之间的距离 5.聚类分析需要注意的问题 二.系统聚类的SPSS实现 三.用图形估计聚类 ...

  5. sklearn聚类算法之HAC

    基本思想 层次凝聚聚类算法(Hierarchical Agglomerative Clustering)是一种效果很好的聚类算法,简称HAC,它的主要思想是先把每个样本点当做一个聚类,然后不断地将其中 ...

  6. 无监督学习 | 层次聚类 之凝聚聚类原理及Sklearn实现

    文章目录 1. 层次聚类 1.1 凝聚聚类 1.2 层次图 1.3 不同凝聚算法比较 2. Sklearn 实现 2.1 层次图可视化 参考文献 相关文章: 机器学习 | 目录 机器学习 | 聚类评估 ...

  7. 无监督学习之层次聚类算法

    层次聚类算法 1.定义 2. 自底向上的合并算法 2.1 计算过程 2.2.两个组合数据点间的距离 2.3实例 1.定义 层次聚类(Hierarchical Clustering)属于聚类算法,通过计 ...

  8. 六种常用的文本聚类算法介绍

    文本聚类算法介绍 分类和聚类都是文本挖掘中常使用的方法,他们的目的都是将相似度高的对象归类,不同点在于分类是采用监督学习,分类算法按照已经定义好的类别来识别一篇文本,而聚类是将若干文本进行相似度比较, ...

  9. 机器学习面试题——聚类算法

    机器学习面试题--聚类算法 提示:互联网大厂经常考的传统机器学习算法 文章目录 机器学习面试题--聚类算法 @[TOC](文章目录) 题目 k-means介绍一下,K-means的过程 k-means ...

  10. 数据分析方法-聚类算法

    文章目录 一.定义 二.聚类.分类区别分类 三.聚类常用算法 1.划分聚类 k-means.k-medoids.k-modes.k-medians.kernel k-means 2.层次聚类 Aggl ...

最新文章

  1. MQTT基础——Part 1. 认识MQTT
  2. 子图同构问题与Ullmann Algorithm 算法(一)
  3. springCloud学习笔记系列(1)-负载均衡Ribbon
  4. Java总结第一次//有些图片未显示,文章包含基础java语言及各种语句
  5. android 默认光标大小设置,如何默认光标位置设置的EditText
  6. photoshop cs5 中 复制图层的快捷键是那个?
  7. 现代分层、聚集聚类算法_分层聚类:聚集性和分裂性-解释
  8. 十大经典排序算法(附代码、动画及改进方案)
  9. IOS开发-TableView表视图基础
  10. python 类方法 静态方法_Python静态方法和类方法
  11. 【LGR-050】洛谷8月月赛
  12. 编程数学(A-2)-次方
  13. 奇门遁甲鸣法 第五章 辅格
  14. 计算机网络基础系列(三)网络应用
  15. 服务器延迟和时间偏移怎么设置,针对大量时间偏移配置 W32Time - Windows Server | Microsoft Docs...
  16. 搏一搏,单车变摩托!华为天才少年耗时四月将自行车强势升级为自动驾驶
  17. 【信号处理】音频信号处理平台含Matlab源码
  18. 不变的人生无常,变化的朋友来去
  19. 宝宝起名取名字:渊博雅正、令人难忘的男宝宝名字
  20. js图片截图粘贴和上传

热门文章

  1. 关于ROS的设置问题
  2. [ASM] 基础概念
  3. 保存文件 安卓_手机怎么解压zip文件 安卓手机zip文件怎么打开?
  4. Eclipse+OpenCV3.1.0 的环境搭建
  5. python 清华镜像_树莓派raspberry4B入坑指南 part-1 virtualenv安装python
  6. pytorch test单张图片_PyTorch的元学习库:Torchmeta
  7. 前端保存之前输入的值_前端基础进阶(一):内存空间详细图解
  8. ixigua解析_资本运作系列课程五:《科创板申请上市估值模型理论解析》现场直播回放...
  9. 信息集成项目管理工程师 学习资料_如何备考系统集成项目管理工程师?
  10. 虚拟服务器排行榜,虚拟服务器排行榜