层次聚类(Hierarchical Clustering)是聚类算法的一种,通过对给定的数据集进行层次的分解,直到某种条件满足为止,最终构建出一颗嵌套的树。
说白了,层次聚类就是一层一层的进行聚类。可以采用自顶向下的聚类策略,也可以采用自下而上的策略。
凝聚聚类
凝聚聚类采用自下而上的策略,初始时将每个样本都当做一簇,最开始样本的个数实际上等于簇的个数,依据某种准则合并簇,直到满足某种条件则停止聚类。
- 算法描述
(1) 计算两两簇之间的距离(簇间距计算方法在后面),找到距离最小的两个类簇cluster1和cluster2;
(2)合并类簇cluster1和cluster2
(3)重复上面两步,直到达到聚类的数目或者是满足某种条件停止。 - 簇间距如何计算
(1)SingleLinkage
又叫做nearest-neughbor,就是取两个类中距离最近的两个样本作为两个类簇的距离。但是容易形成链状结构。
(2)CompleteLinkage
和SingleLinkage完全不同,取两个类中距离最远的两个样本作为两个类簇的距离。对异常点比较敏感。
(3)Average-linkage
取两个类中两两样本的距离的平均值作为类簇间距离。
分裂聚类
凝聚聚类采用自顶向下的策略,首先将所有样本都当做一簇,然后依据某种准则分裂,将大簇编变成小簇,直到满足某种条件则停止分裂,在实际中,用凝聚聚类用的多。