层次聚类是一组嵌套的聚类,它们被组织为树。

生成层次聚类有两种基本方法:
凝聚
分裂

在凝聚层次聚类中,我们从点作为单个聚类开始。在每一步,我们合并最近的一对集群。
这需要定义群集邻近度的概念。

在分裂的层次聚类中,我们从一个包罗万象的集群开始。在每一步,我们拆分一个集群。这个过程一直持续到只剩下单个单个点的集群。在这种情况下,我们需要做出决定在每个步骤拆分哪个集群怎么做分裂。

层次聚类通常使用树状图,以图形方式显示。
树形图显示集群 - 子集群关系和集群合并(凝聚)或分裂(分裂)的顺序。
对于2-D点集合,也可以使用嵌套聚类图以图形方式表示层次聚类。

基本的凝聚层次聚类算法总结如下:
计算邻近矩阵。重复,合并最近的两个群集,更新邻近矩阵以反映新群集与原始群集之间的接近度,直到只剩下一个集群

群集邻近度的不同定义导致不同版本的层次聚类。
这些版本包括:
单链接或MIN    (Single link or MIN)
完整链接或MAX  (Complete link or MAX)
Group average
Ward’s method

我们考虑以下数据点集。
这些数据点的欧几里德距离矩阵如下图所示。

Single link:

我们现在考虑单层链接或MIN版本的层次聚类。
在这种情况下,两个聚类的接近度被定义为两个不同聚类中任意两个点之间的距离的最小值。
该技术擅长处理非椭圆形状。但是,它对噪声和异常值很敏感。

下图显示了将单链接技术应用于示例数据的结果:


左图将嵌套簇显示为嵌套椭圆序列。
与椭圆相关联的数字表示聚类的顺序。
右图以树形图的形式显示相同的信息。
在树形图中合并两个簇的高度反映了两个簇的距离。

例如,我们看到点3和点6之间的距离是0.11。
这是它们在树形图中连接成一个簇的高度。作为另一个例子,簇{3,6}和{2,5}之间的距离是

d({3,6},{2,5})=min⁡(d(3,2),d(6,2),d(3,5),d(6,5))
                            =min⁡(0.15,0.25,0.28,0.39)
                            =0.15

Complete link:

我们现在考虑完整链接或MAX版本的分层聚类。
在这种情况下,两个聚类的接近度被定义为两个不同聚类中任意两个点之间的距离的最大值。
完整链接不易受噪声和异常值的影响。
但是,它倾向于产生具有球状形状的簇。

下图显示了将完整链接方法应用于我们的示例数据点的结果。
与单链路一样,第3点和第6点首先合并。
但是,{3,6}与{4}合并,而不是{2,5}或{1}。

这可以通过以下计算来解释

d({3,6},{4})=max⁡(d(3,4),d(6,4))
                        =max⁡(0.15,0.22)
                        =0.22
d({3,6},{2,5})=max⁡(d(3,2),d(6,2),d(3,5),d(6,5))
                            =max⁡(0.15,0.25,0.28,0.39)
                            =0.39
d({3,6},{1})=max⁡(d(3,1),d(6,1))
                        =max⁡(0.22,0.23)
                        =0.23

Group average:

我们现在考虑分层聚类的组平均版本。
在这种情况下,两个聚类的接近度被定义为不同聚类中所有点对之间的平均成对接近度。
这是单一和完整链接方法之间的中间方法。

我们考虑两个簇Ci和Cj,它们分别具有mi和mj的大小。
两个簇之间的距离可以用以下等式表示:

下图显示了将组平均值应用于我们的样本数据的结果。
某些群集之间的距离计算如下:
d({3,6,4},{1})=(0.22+0.37+0.23)/(3×1)= 0.27

d({2,5},{1})=(0.24+0.34)/(2×1)= 0.29

d({3,6,4},{2,5})=(0.15+0.28+ 0.25+0.39+0.20+0.29)/(3×2)= 0.26

我们观察到d({3,6,4},{2,5})小于d({3,6,4},{1})和d({2,5},{1})。
结果,{3,6,4}和{2,5}在第四阶段合并。

Ward’s method:

我们现在考虑Ward的层次聚类方法。
在这种情况下,两个簇之间的接近度被定义为合并时产生的平方误差之和的增加。
因此,该方法使用与k均值聚类相同的目标函数。下图显示了将Ward方法应用于我们的样本数据的结果。
产生的聚类不同于单链接,完整链接和组平均产生的聚类。

当底层应用程序需要创建多级结构时,分层聚类很有效。然而,就计算和存储要求而言,它们是昂贵的。此外,一旦决定合并两个集群,它就不能在以后撤消。

机器学习之层次聚类(hierarchical clustering)相关推荐

  1. 机器学习(6): 层次聚类 hierarchical clustering

    假设有N个待聚类的样本,对于层次聚类来说,步骤: 1.(初始化)把每个样本归为一类,计算每两个类之间的距离,也就是样本与样本之间的相似度: 2.寻找各个类之间最近的两个类,把他们归为一类(这样类的总数 ...

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

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

  3. 层次聚类-Hierarchical Clustering

    一.概述 层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树,距离越小,相似度越高.在聚类树中,不同类别的原始数据 ...

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

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

  5. 机器学习笔记(九)聚类算法Birch和层次聚类Hierarchical clustering

    本篇文章我们继续介绍另一种聚类算法--Birch模型,相对于K-means和DBSCAN,Birch的应用并没有那么广泛,不过它也有一些独特的优势,Birch算法比较适合于数据量大,类别数K也比较多的 ...

  6. 层次聚类(Hierarchical Clustering)——CURE算法详解及举例

    1 CURE聚类概述 绝大多数聚类算法或者擅长处理球形和相似大小的聚类.或者在存在孤立点时变得比较脆弱.CURE采用了一种新颖的层次聚类算法.该算法选择基于质心和基于代表对象方法之间的中间策略.它不同 ...

  7. 层次聚类(Hierarchical Clustering)——BIRCH算法详解及举例

    1 BIRCH概述 BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)的主要动机是两个方面,一是处理大数据集,二是对 ...

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

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

  9. 聚类算法 距离矩阵_机器学习基础-层次聚类

    层次聚类(Hierarchical clustering) 何时使用? 当我们希望进一步挖掘观测数据的潜在关系,可以使用层次聚类算法. 工作方式 首先我们会计算距离矩阵(distance matrix ...

  10. 机器学习实战——层次聚类算法

    机器学习实战--层次聚类算法 1 层次聚类概述 2 sklearn中的实现 1 层次聚类概述 层次聚类试图在不同层次对数据集进行划分,从而形成树形的聚类结构. 数据集的划分可采用"自底向上& ...

最新文章

  1. Oracle DBMS_STATS 包 和 Analyze 命令的区别
  2. mac 系统新功能体验-根据时间变化的动态桌面背景,看壁纸演绎风景大片中的日出与日落
  3. Cisco设备做流量监控的方法
  4. cargo maven_用于集成测试的Maven Cargo插件
  5. ios 静态库合成_iOS : 静态库(.framework)合并
  6. 判断数组中是否包含某个字符(contains)
  7. xmos驱动_独家!XMOS发表最新Xcore.ai“跨界处理器”
  8. w3c+android,w3cschool官方版app
  9. 软件Faststone Capture 注册码
  10. Android HttpClient Session保持
  11. 基于单片机语音控制灯系统设计
  12. 《数据结构与算法》(十八)- 平衡二叉树
  13. pytorch个人学习笔记(2)—Normalize()参数详解及用法
  14. 一年成为Emacs高手 (像神一样使用编辑器)
  15. Python的正则表达式和re模块
  16. 直播拉流设备接入阿里云
  17. a-card标签中的文字不能垂直居中
  18. 24点计算器问题[C++实现]
  19. (CVPR 2019)PointPillars: Fast Encoders for Object Detection From Point Clouds
  20. 手写字体识别用python实现_利用贝叶斯算法实现手写体识别(Python)

热门文章

  1. 微信公众号打开网页自动登陆配置
  2. Nature子刊 | 绘制植物叶际菌群互作图谱以建立基因型表型关系
  3. SpringBoot请求第三方接口
  4. C#处理JSON格式数据
  5. 什么是超大附件?邮箱的超大附件怎么打开?哪个邮箱发送附件大?
  6. 在我的世界修改服务器吗 名字,我的世界怎么改名字
  7. C# 使用openxml解析PPTX中的文本内容
  8. matlab 模的平方,RSA模重复平方算法小示例
  9. Java明星HD_javaHDvideo
  10. 微信自定义分享,分享至QQ和空间自定义内容正常、分享至微信时只有链接问题