层次聚类分类细则一、概述层次聚类分类是一种无监督学习方法,通过构建数据点之间的层次关系,将数据划分为不同的类别该方法无需预先指定类别数量,能够揭示数据内在的结构和分布特征本文将详细介绍层次聚类分类的基本原理、实施步骤、优缺点及适用场景,并辅以示例说明二、基本原理层次聚类分类的核心思想是通过计算数据点之间的距离或相似度,逐步合并或分裂类别,最终形成一棵树状结构(即聚类树或谱系图)主要原理包括:(一)距离度量1. 欧氏距离:计算点间直线距离,适用于连续数据2. 曼哈顿距离:计算点间城市街区距离,适用于网格数据3. 余弦相似度:衡量向量方向的相似性,适用于文本数据二)聚类方法1. 自底向上合并(Agglomerative)- 从每个数据点作为单独类别开始,逐步合并最相似的类别 常用距离计算策略:(1) 单链法(UPGMA):合并距离最小的两个类2) 完全链法(WPGMA):合并类间最大距离最小的两个类3) 中位数链法(UPGMC):合并类间中位数距离最小的两个类2. 自顶向下分裂(Divisive)- 从所有数据点作为单一类别开始,逐步分裂不满足条件的类别 实际应用较少,因计算复杂度高三、实施步骤层次聚类分类的典型步骤如下:(一)数据预处理1. 标准化:对数据进行缩放,避免特征尺度差异影响结果。
示例:将特征值转换为均值为0、标准差为1的分布2. 去除异常值:识别并剔除可能干扰聚类结果的数据点二)计算距离矩阵1. 构建初始距离矩阵,记录所有数据点对的距离2. 选择距离度量方法(如欧氏距离)三)构建聚类树1. 选择合并策略(如单链法),将距离最小的两个类合并2. 更新距离矩阵,反映新类与其他类的距离3. 重复步骤1-2,直至所有数据点合并为单一类别四)确定类别数量1. 绘制谱系图(Dendrogram),横轴为数据点,纵轴为距离2. 根据谱系图中的“切割点”确定类别数量 示例:选择在距离阈值处垂直切割谱系图,分割出k个类四、优缺点分析(一)优点1. 无需预设类别数量,灵活性强2. 可视化直观,便于理解数据结构3. 对异常值不敏感(部分方法)二)缺点1. 计算复杂度高,尤其大规模数据(时间复杂度O(n²))2. 距离选择影响结果稳定性3. 聚类结果受初始顺序影响(部分方法)五、适用场景1. 探索性数据分析:初步发现数据模式2. 生物信息学:基因表达聚类3. 社交网络分析:用户行为分组六、示例说明假设有4个数据点A(1,1), B(2,2), C(6,6), D(7,7):(一)欧氏距离计算- A-B: √(1) = 1- A-C: √(25) = 5- B-C: √(16) = 4- A-D: √(36) = 6- B-D: √(25) = 5- C-D: √(1) = 1(二)单链法合并步骤1. 合并A和B(距离1最小)。
2. 新类(A,B)与C合并(距离4最小)3. 新类(A,B,C)与D合并(距离1最小)4. 谱系图切割可得到2-3个类别七、距离度量的详细说明(一)欧氏距离1. 定义:两点在欧几里得空间中的直线距离,计算公式为√Σ(xi - yi)²2. 适用场景:(1) 数值型数据:如身高、体重等连续变量2) 多元统计分析:主成分分析(PCA)后数据3. 优缺点:(1) 优点:直观、计算简单、几何意义明确2) 缺点:易受量纲影响,对异常值敏感(长距离点影响大)二)曼哈顿距离1. 定义:两点在标准坐标系上的城市街区距离,计算公式为Σ|xi - yi|2. 适用场景:(1) 网格数据:如城市坐标、像素值2) 效用评价:多指标决策分析3. 优缺点:(1) 优点:抗噪声能力强,量纲无关2) 缺点:忽略方向性,不适用于高维稀疏数据三)余弦相似度1. 定义:向量夹角的余弦值,计算公式为(A·B) / (||A||·||B||)2. 适用场景:(1) 文本挖掘:文档向量表示2) 推荐系统:用户兴趣向量3. 优缺点:(1) 优点:忽略向量模长,关注方向一致性2) 缺点:无法区分正相关/负相关,需结合其他度量八、聚类方法的深入分析(一)自底向上合并(Agglomerative)的变种1. 单链法(UPGMA)(1) 合并策略:选择类间最小距离对合并。
2) 算法步骤:a. 初始化:每个点为独立类b. 计算距离矩阵:使用公式D(C₁,C₂) = min(Σd(x,x' | x∈C₁, x'∈C₂))c. 合并距离最小的类,更新矩阵3) 适用场景:数据呈链状结构时效果较好2. 完全链法(WPGMA)(1) 合并策略:选择类间最大距离对合并2) 算法步骤:a. 初始化:同单链法b. 计算距离矩阵:使用公式D(C₁,C₂) = max(Σd(x,x' | x∈C₁, x'∈C₂))c. 合并距离最小的类,更新矩阵3) 适用场景:避免类内距离过大导致小类被过度分散3. 中位数链法(UPGMC)(1) 合并策略:选择类间中位数距离对合并2) 算法步骤:a. 初始化:同单链法b. 计算距离矩阵:使用公式D(C₁,C₂) = median(Σd(x,x' | x∈C₁, x'∈C₂))c. 合并距离最小的类,更新矩阵3) 适用场景:平衡单链法的敏感性和完全链法的稳定性二)自顶向下分裂的替代方法1. 分裂策略:基于密度或分布特征动态分裂类簇2. 实现方式:(1) K-means初始化:先聚类再调整2) BIRCH算法:层次合并树+分裂剪枝九、实施中的关键参数设置(一)距离阈值(Distance Threshold)1. 作用:谱系图中垂直切割的临界距离,决定最终类别数。
2. 选择方法:(1) 经验法则:选择距离突变处("elbow point")2) 轮廓系数:评估聚类紧密度,0.7以上为佳3. 注意事项:(1) 过小导致过度细分,过大合并过多2) 示例:设置0.5-1.0范围内的多个阈值验证结果二)初始类中心(Initial Cluster Centers)1. 作用:K-means等变种需要初始点,影响收敛性2. 常见方法:(1) 随机选择:k个数据点作为起点3) K-means++:按概率选择距离已有中心最远的点三)连接策略(Linkage Criteria)1. 定义:决定类间距离计算方式(如单链、完全链)2. 参数配置:(1) UPGMA:存储最近邻关系树2) WPGMA:存储最远邻关系树十、常见工具与库的使用(一)Python实现1. Scikit-learn库:(1) 导入:from sklearn.cluster import AgglomerativeClustering2) 参数:n_clusters(类数)、affinity(距离度量)、 linkage(连接策略)3) 示例代码:```pythonmodel = AgglomerativeClustering(n_clusters=3, linkage='ward')labels = model.fit_predict(data)```2. SciPy库:(1) dendrogram:绘制谱系图。
2) linkage:计算距离矩阵并合并二)R语言实现1. hclust函数:(1) 调用:hclust(dist(data, method="euclidean"), method="ward")2) 参数:method(连接策略)、dist(距离计算)2. cluster包:(1) kmeans++初始化:cluster::kmeans++三)商业软件支持1. SPSS:(1) Analyze → Classify → Hierarchical Cluster2) 可视化:树状图+剪枝选项2. MATLAB:(1) linkage(data, 'single')2) clusterdata:自动确定类数十一、高级应用与注意事项(一)大数据优化1. BIRCH算法:(1) 预聚类(C-BIRCH):将数据分块处理2) 空间划分:CF树(Clustering Feature Tree)存储2. Mini-Batch K-means:(1) 使用随机子集加速计算2) 适用于百万级数据点二)结果评估1. 内部指标:(1) 轮廓系数:0.5-1.0为优2) 分割一致性(SILhouette Width):类间距离/类内距离。
2. 外部指标(需真实标签):(1) 轮廓统计量:平均轮廓系数2) Rand指数:衡量随机分割一致性三)可视化技巧1. 谱系图绘制要点:(1) 标注距离单位(如平均值/标准差)2) 使用不同颜色区分合并层级2. 二维投影:(1) PCA降维后绘制散点图2) 使用不同形状标记不同类别四)常见问题排查1. 类别不平衡:(1) 增加距离惩罚(如平方欧氏距离)2) 调整n_clusters参数2. 结果重复:(1) 设置随机种子(如random_state=42)2) 尝试不同距离度量十二、总结层次聚类分类通过树状结构揭示数据分层关系,适用于无标签数据探索关键步骤包括:标准化→距离计算→谱系图构建→类别确定选择合适的距离度量(如余弦相似度处理文本)和连接策略(如WPGMA避免噪声干扰)可提升结果质量实际应用中需结合轮廓系数等指标评估效果,并利用BIRCH等算法处理大规模数据通过可视化工具(如Python的Seaborn库)可直观展示聚类结果。