写在前面:健忘星人自学笔记,仅供参考
简单易懂的阅读资料
层次聚类-概念全解 - 万勇's Blog - CSDN博客blog.csdn.net前面的文章我们分别介绍了 K-means , 密度聚类,谱聚类,其中谱聚类的难度比较大,要求有一定的矩阵学习基础,今天不妨轻松一下,学习一个较为简单的“层次聚类”。
正文:
一、层次聚类基本原理
层次的聚类方法(Hierarchical Clustering),从字面上理解,其是层次化的聚类,最终得出来的是树形结构。专业一点来说,层次聚类通过 计算不同类别数据点间的相似度 来创建一棵有层次的嵌套聚类树。
层次聚类的好处是不需要指定具体类别数目的,其得到的是一颗树,聚类完成之后,可在任意层次横切一刀,得到指定数目的簇。
按照 层次分解是自下而上,还是自顶向下,层次的聚类方法可以进一步分为以下两种:
自下而上的 凝聚方法(agglomerative:先将所有样本的每个点都看成一个簇,然后找出距离最小的两个簇进行合并,不断重复到预期簇或者其他终止条件), 凝聚方法的代表算法:AGNES,Agglomerative Nesting
自顶向下的 分裂方法(divisive:先将所有样本当作一整个簇,然后找出簇中距离最远的两个簇进行分裂,不断重复到预期簇或者其他终止条件)。 分裂方法的代表算法:DIANA,Divisive Analysis
AGNES 算法步骤:
(1) 初始化,每个样本当做一个簇
(2) 计算任意两簇距离,找出 距离最近的两个簇,合并这两簇
(3) 重复步骤 2……
直到,最远两簇距离超过阈值,或者簇的个数达到指定值,终止算法
DIANA 算法步骤:
(1) 初始化,所有样本集中归为一个簇
(2) 在同一个簇中,计算任意两个样本之间的距离,找到 距离最远 的两个样本点a,b,将 a,b 作为两个簇的中心;
(3) 计算原来簇中剩余样本点距离 a,b 的距离,距离哪个中心近,分配到哪个簇中
(4) 重复步骤2、3 ……
直到,最远两簇距离不足阈值,或者簇的个数达到指定值,终止算法
二、距离度量
在上面说的 AGNES 提到了 合并距离最近的两簇,这里的距离是如何度量的呢?
簇间距离的计算方法有许多,包括:
最小距离,最大距离,均值距离,(类)平均距离,中间距离,重心距离
(1)最小距离,取两个类中距离最近的两个样本的距离作为这两个簇的距离
(2)最大距离,取两个类中距离最远的两个样本的距离作为这两个簇的距离
补充:
当算法选择“最小距离”作为簇间距离时,有时称之为 最近邻聚类算法。并且,当最近两个簇之间的距离超过阈值时,算法终止,则称其为单连接算法
当算法选择“最大距离”作为簇间距离时,有时称之为 最远邻聚类算法。并且,当最近两个簇之间的最大距离超过阈值时,算法终止,则称其为全连接算法
(3)均值距离,两个簇的平均值作为中心点,取这两个均值之间的距离作为两个簇的距离
(4)(类)平均距离,两个簇任意两点距离加总后,取平均值 作为两个簇的距离
(5)中间距离,介于最短距离和最长距离之间,相当于初等几何中三角形的中线
假设 p 点 是最长距离点,q 点是最短距离点,则中间距离为:
(6)重心距离,将每类中包含的样本数考虑进去。
若 I 类中有 n I 个样本, J 类中有 n J 个样本
还有其他距离计算方法,这里省略
有兴趣继续了解的可参考:
[图文]层次聚类分析 - 百度文库wenku.baidu.com距离度量的选择
(1)最小和最大度量代表了簇间距离度量的两个极端。它们趋向对离群点或噪声数据过分敏感。
(2)使用均值距离和平均距离是对最小和最大距离之间的一种折中方法,而且可以克服离群点敏感性问题。
(3)尽管均值距离计算简单,但是平均距离也有它的优势,因为它既能处理数值数据又能处理分类数据。
三、优缺点
优点:
(1)距离和规则的相似度容易定义,限制少;
(2)不需要预先制定聚类数;
(3)可以发现类的层次关系;
(4)可以聚类成其它形状
缺点:
(1)计算复杂度太高;
(2)奇异值也能产生很大影响;
(3)算法很可能聚类成链状
层次聚类的改进:
一个有希望的方向是集成层次聚类和其他的聚类技术,形成多阶段聚类。
BIRCH:首先用树结构对对象进行层次划分,其中叶节点或者是低层次的非叶节点可以看作是由分辨率决定的“微簇”,然后使用其他的聚类算法对这些微簇进行宏聚类。
ROCK:基于簇间的互联性进行合并。
CURE:选择基于质心和基于代表对象方法之间的中间策略。
Chameleon:探查层次聚类的动态建模。
上面四种衍生算法的参考资料:
[图文]聚类算法 - 层次方法 - 百度文库wenku.baidu.com预计在后面文章中详细介绍。
今天的内容就到这里,总体而言,层次聚类还是比较简单的