层次聚类(Hierarchical Clustering)算法的原理与实现过程
字数 1223 2025-11-03 00:20:06
层次聚类(Hierarchical Clustering)算法的原理与实现过程
题目描述:层次聚类是一种基于距离的聚类算法,它通过逐步合并或分裂数据点来构建一个树状的聚类结构(树状图)。与K-means等需要预先指定聚类数量的算法不同,层次聚类能够展示数据在不同粒度下的聚类结果。本题要求你理解层次聚类的两种主要方法(凝聚式和分裂式),掌握距离度量方式,并学会构建和分析树状图。
解题过程:
-
算法基本思想
- 层次聚类的核心是创建一个层次化的聚类树(树状图),其中每个叶子节点代表一个数据点,每个内部节点代表一个聚类。
- 主要分为两种策略:
- 凝聚式(自底向上):从每个数据点作为一个单独的聚类开始,逐步合并最接近的聚类,直到所有点合并为一个聚类。
- 分裂式(自顶向下):从所有数据点作为一个聚类开始,逐步分裂为更小的聚类,直到每个点成为一个聚类(较少使用,计算更复杂)。
-
距离度量与联动准则
- 首先需要定义数据点之间的距离(如欧氏距离、曼哈顿距离)。
- 当处理聚类(包含多个点)时,需要定义聚类间的距离(联动准则):
- 单链接:两个聚类中最近点之间的距离。公式:\(d(C_i, C_j) = \min_{a \in C_i, b \in C_j} d(a, b)\)
- 全链接:两个聚类中最远点之间的距离。公式:\(d(C_i, C_j) = \max_{a \in C_i, b \in C_j} d(a, b)\)
- 平均链接:两个聚类中所有点对之间的平均距离。公式:\(d(C_i, C_j) = \frac{1}{|C_i||C_j|} \sum_{a \in C_i} \sum_{b \in C_j} d(a, b)\)
- 质心链接:两个聚类质心之间的距离。
-
凝聚式层次聚类步骤(以平均链接为例)
- 步骤1:将每个数据点初始化为一个单独的聚类,并计算所有点对之间的距离矩阵。
- 步骤2:找到距离矩阵中最小距离对应的两个聚类 \(C_i\) 和 \(C_j\)。
- 步骤3:合并 \(C_i\) 和 \(C_j\) 为一个新聚类 \(C_{new}\),更新聚类集合。
- 步骤4:重新计算新聚类 \(C_{new}\) 与其他所有聚类之间的距离(使用平均链接公式更新距离矩阵)。
- 步骤5:重复步骤2-4,直到所有数据点合并为一个聚类。
-
树状图构建与聚类提取
- 在合并过程中记录每次合并的聚类和距离,可以构建树状图。纵轴表示聚类间的距离,横轴显示数据点。
- 通过水平切割树状图(在指定距离阈值处)即可获得不同数量的聚类。例如:在距离=3处切割,得到3个聚类。
-
算法特点分析
- 优点:不需要预设聚类数;树状图提供直观的层次视图。
- 缺点:计算复杂度高(\(O(n^3)\) 或优化后 \(O(n^2 \log n)\)),难以处理大规模数据;合并决策不可逆。
通过以上步骤,你可以逐步实现层次聚类,并根据树状图选择合适的分割阈值来获得聚类结果。