我们在分析多个样本多个特征的时候,经常用到的分析方法是聚类分析,看哪些样本或者哪些特征可以聚成几类。具体的聚类方法分有监督聚类(分类)和无监督聚类,今天我们学习一个比较简单的无监督聚类方法——Hierarchical K-Means Clustering。
在介绍Hierarchical K-means聚类算法前,我们先复习一下层次聚类(Hierarchical cluster)和k-means聚类的概念吧。
层次聚类:
层次聚类通过连续不断地将最为相似的群组两两合并,来构造出一个群组的层级结构。其中的每个群组都是从单一元素开始的。在每次迭代的过程中,层次聚类算法会计算每两个群组间的距离,并将距离最近的两个群组合并成一个新的群组。这一过程会一直重复下去,直至只剩一个群组为止。
假设有N个待聚类的样本,对于层次聚类来说,基本步骤就是:
(初始化)计算样本与样本之间的相似度,将相似的样本聚为一类,常用的算法有欧氏距离、皮尔逊相关系数、余弦距离、Jaccard距离等(具体实现脚本我用python实现了放在GitHub上,https://github.com/aiyacharley/VectorDist);
然后寻找各个类之间最近的两个类,把他们归为一类(这样类的总数就少了一个),计算类间距离算法常见的有SingleLinkage、CompleteLinkage和Average-linkage等,选择不同的距离指标,最终的聚类效果也不同,其中CompleteLinkage和Average-li