机器学习实战——层次聚类算法
1 层次聚类概述
层次聚类试图在不同层次对数据集进行划分,从而形成树形的聚类结构。 数据集的划分可采用"自底向上"的聚合策略,也可采用"自顶向下" 的分拆策略。层次聚类可以分为凝聚层次聚类和分裂层次聚类。分裂层次聚类采用的就是"自顶而下"的思想,先将所有的样本都看作是同一个簇,然后通过迭代将簇划分为更小的簇,直到每个簇中只有一个样本为止。凝聚层次聚类采用的是"自底向上"的思想,先将每一个样本都看成是一个不同的簇,通过重复将最近的一对簇进行合并,直到最后所有的样本都属于同一个簇为止。目前,比较常用的层次聚类算法是"自底向上"的凝聚层次聚类,比较流行的算法有 BIRCH、AGNES,BIRCH 的算法可以参考文章1和文章2。本文主要介绍 AGNES 算法,其算法思想描述如下:
- 1 将每个样本当成一个初始簇;
- 2 根据两个簇中样本点的最近距离找到相近的两个簇;
- 3 合并两个簇,生成新的簇的集合;
- 4 跳转到 2、3 步,直到达到定义的簇数目(若未定义簇数目,则将全部样本聚成一类为止)。
关于两个簇最近距离的计算有:最短距离、最长距离、平均距离三种常见的方法。设定 C i , C j C_i,C_j Ci,Cj