层次聚类算法

层次聚类算法通过计算两类数据点间的相似性,对所有数据点中最为相似的两个数据点进行组合,并反复迭代这一过程。简单的说层次聚类的合并算法是通过计算每一个类别的数据点与所有数据点之间的距离来确定它们之间的相似性,距离越小,相似度越高。并将距离最近的两个数据点或类别进行组合,生成聚类树。

假设有N个待聚类的样本,对于层次聚类来说,基本步骤就是:

1)(初始化)把每个样本归为一类,计算每两个类之间的距离,也就是样本与样本之间的相似度;
2)寻找各个类之间最近的两个类,把他们归为一类(这样类的总数就少了一个);
3)重新计算新生成的这个类与各个旧类之间的相似度;
4)重复2和3直到所有样本点都归为一类,结束。

合成聚类
整个聚类过程其实是建立了一棵树,在建立的过程中,可以通过在第二步上设置一个阈值,当最近的两个类的距离大于这个阈值,则认为迭代可以终止。另外关键的一步就是第三步,如何判断两个类之间的相似度有不少种方法。

距离计算方法

两个点(点集)的相似通过欧式距离计算得出

数据点与点集间的距离计算方式:

将数据点B与数据点C进行组合后,重新计算各类别数据点间的距离矩阵。数据点间的距离计算方式与之前的方法一样。这里需要说明的是点集(B,C)与其他数据点间的计算方法。当我们计算(B,C)到A的距离时,需要分别计算B到A和C到A的距离均值。

数据点与点集距离计算公式

两个组合数据点间的距离计算方式:

计算两个组合数据点间距离的方法有三种,分别为Single Linkage,Complete Linkage和Average Linkage。在开始计算之前,我们先来介绍下这三种计算方法以及各自的优缺点。

Single Linkage
Single Linkage的计算方法是将两个数据点集中距离最近的两个数据点间的距离作为这两个点集的距离。这种方法容易受到极端值的影响。两个很不相似的点集可能由于其中的某个极端的数据点距离较近而组合在一起。

Complete Linkage

Complete Linkage的计算方法与Single Linkage相反,将两个点集中距离最远的两个数据点间的距离作为这两个点集的距离。Complete Linkage的问题也与Single Linkage相反,两个相似的组合数据点可能由于其中的极端值距离较远而无法组合在一起。

Average Linkage

Average Linkage的计算方法是计算两个点集中的每个数据点与其他所有数据点的距离。将所有距离的均值作为两个点集间的距离。这种方法计算量比较大,但结果比前两种方法更合理。这种聚类的方法描述起来比较简单,但是计算复杂度比较高,为了寻找距离最近/远和均值,都需要对所有的距离计算个遍,需要用到双重循环,每次迭代都只能合并两个子类,这是非常慢的。

两个点(点集)的相似通过jaccard距离计算得出

可以将点集按照一定的变换方式将原始的数据映射的{0,1}或者{0,1,2}这些空间中,以{0,1}空间为例,所有的点集中包含的数据只有0,1,jaccard distance定义如下:

主要就是计算两个点集的相似性的,如果两个点集完全独立,那么J距离为1,如果两个点集非常相近,那么J距离趋近于0。然后我们就可以直接通过最后的J距离判断这两个点集是否进行融合。

值得一提的是,因为这里映射的空间是{0,1}空间,我们知道在计算中的最原始的计数是二进制,如果直接进行0和1的比较操作速度是非常快的。Brief描述子的提出也就是基于这方面的考虑。

部分参考:http://www.jianshu.com/p/785bb19386db但该链接文章中有部分错误。

参考文献:

[1]Toldo R, Fusiello A. Robust Multiple Structures Estimation with J-Linkage[C]// European Conference on Computer Vision. Springer-Verlag, 2008:537-547.

Agglomerative Hierarchical Clustering(AHC)相关推荐

  1. Agglomerative Hierarchical Algorithms(凝聚式层次聚类)

    (1)Agglomerative Hierarchical Clustering:凝聚式层次聚类,自底向上 (2)Divisive Hierarchical Clustering:分裂式层次聚类,自顶 ...

  2. 聚类——层次聚类(Hierarchical Clustering)

    Hierarchical Clustering,一如其字面意思,是层次化的聚类,得出来的是树形结构(计算机科学的树是一棵根在最上的树,:-D). Hierarchical vs Flat Cluste ...

  3. 聚类(2)——层次聚类 Hierarchical Clustering

    聚类系列: 聚类(序)----监督学习与无监督学习 聚类(1)----混合高斯模型 Gaussian Mixture Model 聚类(2)----层次聚类 Hierarchical Clusteri ...

  4. 聚类分析-层次聚类(Hierarchical Clustering)在生物信息学中的应用

    聚类分析-层次聚类(Hierarchical Clustering)解析 层次聚类 层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一 ...

  5. 聚类算法:Hierarchical Clustering层次聚类

    1. 层次聚类 1.1 层次聚类的原理及分类 1)层次法(Hierarchicalmethods):先计算样本之间的距离.每次将距离最近的点合并到同一个类.然后,再计算类与类之间的距离,将距离最近的类 ...

  6. 聚类算法教程(3):层次聚类算法Hierarchical Clustering Algorithms

     基本工作原理 给定要聚类的N的对象以及N*N的距离矩阵(或者是相似性矩阵),层次式聚类方法的基本步骤(参看S.C. Johnson in 1967)如下: 1.     将每个对象归为一类,共得 ...

  7. 聚类算法(4)--Hierarchical clustering层次聚类

    目录 一.层次聚类 1.层次聚类的原理及分类 2.层次聚类的流程 3.层次聚类的优缺点 二.python实现 1.sklearn实现 2.scipy实现 树状图分类判断 一.层次聚类 1.层次聚类的原 ...

  8. Cluster analysis :Basic Concepts and Algorithms -- Part 3 Hierarchical Clustering

    系列文章目录 Cluster analysis :Basic Concepts and Algorithms – Part 1 Overview Cluster analysis :Basic Con ...

  9. 机器学习算法(十二):聚类(2)层次聚类 Hierarchical Clustering

    目录 1 层次聚类 1.1 层次聚类的原理 1.2 两个组合数据点间的距离: 2 自底向上的合并算法 2.1 AGNES算法 (AGglomerative NESting) 2.1.1 原理 2.1. ...

最新文章

  1. 微信公众号开发用书php,php微信公众号开发(3)php实现简单微信文本通讯
  2. 死锁的必要条件及避免
  3. win 10无法启动print spooler服务,提示1068依赖服务或组无法启动
  4. spring boot security ajax_Spring 和 SpringBoot 之间到底有啥区别?
  5. Git使用列表(四)
  6. 正则表达式如何匹配正反斜杠
  7. Tomacat乱码解决
  8. 最新开发android版本,Android版本检测升级
  9. ViewPager做出广告轮播特效
  10. 360容器平台监控实践
  11. Java根据关键字在PDF/Word插入图片
  12. CPU设计实战(一)
  13. (基础)SpringCloud Alibaba Nacos作为多环境配置中心
  14. 处理一份内心煎熬的工作有两种方法——只有一种是正确的
  15. 怎样成为公司喜欢的人?小技巧
  16. Nginx配置不带www自动跳转到www域名
  17. ConditionalOnMissingBean失效问题追踪
  18. MongoDB详细介绍
  19. web开发与应用(一)
  20. 【Vue如何让v-show也有动画效果】

热门文章

  1. Go实现简易聊天室(群聊)
  2. 小型企业5种实惠的品牌建立策略
  3. [开源工具]2022/2023 分享好用的免费的云短信/临时短信[Temp Message]
  4. 【DFS专题训练】王子救公主 C++程序题
  5. 神经网络理论及应用答案,神经网络理论名词解释
  6. 985复旦大学,软件工程学硕停止招生!
  7. 中外企业文化杂志中外企业文化杂志社中外企业文化编辑部2022年第5期目录
  8. 如何配置NATAPP
  9. XJTU 新闻英语阅读微课内容总结
  10. Sketch之初见BF