层次聚类(Hierarchical clustering)

何时使用?

当我们希望进一步挖掘观测数据的潜在关系,可以使用层次聚类算法。

工作方式

首先我们会计算距离矩阵(distance matrix),其中矩阵的元素(i,j)代表观测值 i 和 j 之间的距离度量。然后将最接近的两个观察值组为一对,并计算它们的平均值。通过将成对观察值合并成一个对象,我们生成一个新的距离矩阵。具体合并的过程即计算每一对最近观察值的均值,并填入新距离矩阵,直到所有观测值都已合并。

有效案例:

以下是关于鲸鱼或海豚物种分类的超简单数据集。作为受过专业教育的生物学家,我可以保证通常我们会使用更加详尽的数据集构建系统。现在我们可以看看这六个物种的典型体长。本案例中我们将使用 2 次重复步骤。

Species Initials Length(m)Bottlenose Dolphin BD 3.0Risso's Dolphin RD 3.6Pilot Whale PW 6.5Killer Whale KW 7.5Humpback Whale HW 15.0Fin Whale FW 20.0

步骤一:计算每个物种之间的距离矩阵,在本案例中使用的是欧氏距离(Euclidean distance),即数据点(data point)间的距离。你可以像在道路地图上查看距离图一样计算出距离。我们可以通过查看相关行和列的交叉点值来查阅任一两物种间的长度差。

BD RD PW KW HWRD 0.6 PW 3.5 2.9 KW 4.5 3.9 1.0 HW 12.0 11.4 8.5 7.5 FW 17.0 16.4 13.5 12.5 5.0

步骤二:将两个距离最近的物种挑选出来,在本案例中是宽吻海豚和灰海豚,他们平均体长达到了 3.3m。重复第一步,并再一次计算距离矩阵,但这一次将宽吻海豚和灰海豚的数据使用其均值长度 3.3m 代替。

[BD, RD] PW KW HWPW 3.2 KW 4.2 1.0 HW 11.7 8.5 7.5 FW 16.7 13.5 12.5 5.0

接下来,使用新的距离矩阵重复步骤二。现在,最近的距离成了领航鲸与逆戟鲸,所以我们计算其平均长度(7.0m),并合并成新的一项。

随后我们再重复步骤一,再一次计算距离矩阵,只不过现在将领航鲸与逆戟鲸合并成一项且设定长度为 7.0m。

[BD, RD] [PW, KW] HW[PW, KW] 3.7 HW 11.7 8.0 FW 16.7 13.0 5.0

我们再一次使用现在的距离矩阵重复步骤 2。最近的距离(3.7m)出现在两个已经合并的项,现在我们将这两项合并成为更大的一项(均值为 5.2m)。

[[BD, RD] , [PW, KW]] HWHW 9.8 FW 14.8 5.0

紧接着,我们再一次重复步骤 2,最小距离(5.0m)出现在座头鲸与长须鲸中,所以继续合并它们为一项,并计算均值(17.5m)。

返回到步骤 1,计算新的距离矩阵,其中座头鲸与长须鲸已经合并为一项。

[[BD, RD] , [PW, KW]][HW, FW] 12.3

最后,重复步骤 2,距离矩阵中只存在一个值(12.3m),我们将所有的都合成为了一项,并且现在可以停止这一循环过程。先让我们看看最后的合并项。

[[[BD, RD],[PW, KW]],[HW, FW]]

现在其有一个嵌套结构(参考 JSON),该嵌套结构能绘制成一个树状图。其和家族系谱图的读取方式相近。在树型图中,两个观察值越近,它们就越相似和密切相关。

通过树型图的结构,我们能更深入了解数据集的结构。在上面的案例中,我们看到了两个主要的分支,一个分支是 HW 和 FW,另一个是 BD、RD、PW、KW。

在生物进化学中,通常会使用包含更多物种和测量的大型数据集推断这些物种之间的分类学关系。在生物学之外,层次聚类也在机器学习和数据挖掘中使用。

重要的是,使用这种方法并不需要像 K-均值聚类那样设定分组的数量。你可以通过给定高度「切割」树型以返回分割成的集群。高度的选择可以通过几种方式进行,其取决于我们希望对数据进行聚类的分辨率。

例如上图,如果我们在高度等于 10 的地方画一条线,就将两个主分支切开分为两个子图。如果我们从高度等于 2 的地方分割,就会生成三个聚类。

更多细节:

对于这里给出的层次聚类算法(hierarchical clustering algorithms),其有三个不同的方面。

最根本的方法就是我们所使用的集聚(agglomerative)过程,通过该过程,我们从单个数据点开始迭代,将数据点聚合到一起,直到成为一个大型的聚类。另外一种(更高计算量)的方法从巨型聚类开始,然后将数据分解为更小的聚类,直到独立数据点。

还有一些可以计算距离矩阵的方法,对于很多情况下,欧几里德距离(参考毕达哥拉斯定理)就已经够了,但还有一些可选方案在特殊的情境中更加适用。

最后,连接标准(linkage criterion)也可以改变。聚类根据它们不同的距离而连接,但是我们定义「近距离」的方式是很灵活的。在上面的案例中,我们通过测量每一聚类平均值(即形心(centroid))之间的距离,并与最近的聚类进行配对。但你也许会想用其他定义。

例如,每个聚类有几个离散点组成。我们可以将两个聚类间的距离定义为任意点间的最小(或最大)距离,就如下图所示。还有其他方法定义连接标准,它们可能适应于不同的情景。

红/蓝:形心连接;红/绿:最小连接;绿/蓝:最大连接

聚类算法 距离矩阵_机器学习基础-层次聚类相关推荐

  1. 聚类算法 距离矩阵_论文阅读9——AP聚类算法

    Affinity Learning for Mixed Data Clustering 论文提出了基于混合对数据进行聚类的学习框架,具体研究内容包括:1)如何处理具有混合类型属性的数据.2)如何学习数 ...

  2. 聚类算法实践(一)——层次聚类、K-means聚类

    摘要: 所谓聚类,就是将相似的事物聚集在一 起,而将不相似的事物划分到不同的类别的过程,是数据分析之中十分重要的一种手段.比如古典生物学之中,人们通过物种的形貌特征将其分门别类,可以说就是 一种朴素的 ...

  3. 聚类算法 距离矩阵_理解谱聚类

    原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的. 其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明 ...

  4. 聚类算法 距离矩阵_谱聚类

    比起传统的K-means算法,谱聚类对数据分布的适应性更强,计算量也要小很多. 1. 谱聚类概述 谱聚类是从图论中演化出来,主要思想是吧所有的数据看作空间中的点,这些点之间可以用边连接起来.距离较远的 ...

  5. 聚类算法 距离矩阵_模糊聚类算法

    模糊聚类算法 1.如何理解模糊聚类 事物间的界线,有些是明确的,有些则是模糊的.当聚类涉及到事物之间的模糊界线时,需要运用模糊聚类分析方法. 如何理解模糊聚类的"模糊"呢:假设有两 ...

  6. 聚类算法 距离矩阵_快速且不需要超参的无监督聚类方法

    论文: Efficient Parameter-free Clustering Using First Neighbor Relations Efficient Parameter-free Clust ...

  7. 层次聚类python实现_Python机器学习——Agglomerative层次聚类

    层次聚类(hierarchical clustering)可在不同层次上对数据集进行划分,形成树状的聚类结构.AggregativeClustering是一种常用的层次聚类算法. 其原理是:最初将每个 ...

  8. 聚类算法总结 划分法,层次聚类,基于网格,基于密度,谱聚类,基于模型,模糊聚类

    划分法: K-means:随机选择k个类的初始中心,对每一个样本都求解到k个中心点的距离,将它归类到距离最短的中心所在的类别.通过计算与类别内样本平均距离最小的点作为新的中心点.直到类别的聚类中心点不 ...

  9. 初识聚类算法:K均值、凝聚层次聚类和DBSCAN 转载的聚类总结

    http://blog.sina.com.cn/s/blog_62186b460101ard2.html

最新文章

  1. 华为×××+IPSEC实现安全连接
  2. 双目标帕累托优化_结构力学中的优化分析(3) —— 结构优化分析
  3. 计算机控制技术汤楠课后答案,西安电子科大版汤楠计算机控制技术6章
  4. 利用C语言创建和使用DLL文件
  5. select ... into ... 与 insert into .... select .... 语句
  6. [译] Grid 布局完全指南
  7. kafka消息确认机制
  8. Error-backpropagation in temporally encoded networks of spiking neurons 误差传播在时间编码的脉冲神经网络
  9. 数据科学在风控中的应用-笔记
  10. angualr Http error处理
  11. HDU 4675 GCD of Sequence(莫比乌斯反演 + 打表注意事项)题解
  12. LSTM 文本分类模型的实现
  13. html语言标记滚动字幕,网页滚动文字的制作HTML代码
  14. 大型语言模型,真的能够理解人类吗?
  15. Mybatis 自学笔记【全结尾狂神说练习29道】
  16. elementUI表格合并单元格详解
  17. python中可迭代对象是什么意思_python可迭代对象概念讲解
  18. matlab ploty,matlab绘制函数 如何利用matlab的ploty
  19. pageadmin CMS网站制作教程
  20. 图书管理系统(纯C语言)

热门文章

  1. 干货设计素材|环保平面画册模板
  2. C语言回调函数 钩子函数,回调函数和钩子函数的说明
  3. cmake 简介-初识
  4. GTK+ tutorial
  5. RDBMS即关系数据库管理系统(Relational Database Management System)
  6. es用python增加字段_使用Python在ElasticSearch中添加@timestamp字段
  7. 后端实体类接收数组_三级联动返回数组的方式
  8. Django:ORM基本操作-CRUD,管理器对象objects,----->查询3(单条更新,批量更新)
  9. android8.0于与ios,android 8.0 oreo抄袭苹果吗 android oreo和ios 11对比
  10. springboot2.1.1连接数据库失败的原因查找