15.1-15.11 聚类算法全解析:从层次合并到密度扩展的底层逻辑
一、层次聚类:树状结构的合并逻辑
-
技术背景
- 无需预设簇数:传统聚类算法(如K-means)需预先指定簇数,而层次聚类通过树状图(Dendrogram)自动展示多粒度聚类结果,适合生物学分类等需层次化解释的场景。
- 合并与分裂策略:
- 自下而上(AGNES):初始每个样本为独立簇,逐步合并距离最近的簇。
- 自上而下(DIANA):初始所有样本为一簇,逐步分裂为子簇。
-
数学逻辑与流程
- 距离矩阵计算:
D i j = ∥ x i − x j ∥ ( x i , x j ∈ X ) D_{ij} = \|x_i - x_j\| \quad (x_i, x_j \in X) Dij=∥xi−xj∥(xi,xj∈X) - 簇间距离度量:
- 单链接(最小距离):易形成链状结构,对噪声敏感。
- 全链接(最大距离):形成紧凑簇,但对形状敏感。
- 终止条件:所有样本合并为一簇或达到预设簇数。
- 距离矩阵计算:
-
实例与局限
- 树状图可视化:通过Python的
scipy.cluster.hierarchy
模块生成,支持自定义标签与翻转显示。 - 复杂度问题:计算全量距离矩阵的复杂度为 O ( n 3 ) O(n^3) O(n3),难以处理大规模数据。
- 树状图可视化:通过Python的
二、K-means:质心迭代的球形假设
-
核心需求
- 预设簇数 k k k:需人工指定,适用于用户分群等已知簇规模的场景。
- 质心优化目标:最小化簇内平方和:
J = ∑ i = 1 k ∑ x ∈ C i ∥ x − μ i ∥ 2 J = \sum_{i=1}^k \sum_{x \in C_i} \|x - \mu_i\|^2 J=i=1∑kx∈Ci∑∥x−μi∥2
-
工作流程
- 随机初始化:随机选择 k k k 个质心,易受初始值影响(需多次重启)。
- 迭代优化:
- 分配样本:每个样本归入最近质心对应的簇。
- 更新质心:计算簇内均值作为新质心。
- 终止条件:质心位置不再变化或达到最大迭代次数。
-
局限与改进
- 球形假设:无法处理环形、流形数据(如笑脸数据集的外圈被错误分割)。
- 评估难题:无监督场景下需依赖轮廓系数等指标,但缺乏真实标签验证。
三、DBSCAN:密度扩展与噪声过滤
-
技术动机
- 任意形状适应:城市交通热点、社交网络社区等场景需识别非凸簇。
- 参数定义:
- 邻域半径 ϵ \epsilon ϵ:决定密度阈值。
- 最小邻域点数 MinPts \text{MinPts} MinPts:判定核心点的标准。
-
核心概念与流程
- 密度直达与可达:
- 若 x j ∈ N ϵ ( x i ) x_j \in N_\epsilon(x_i) xj∈Nϵ(xi) 且 x i x_i xi 为核心点,则 x j x_j xj 从 x i x_i xi 密度直达。
- 通过链式路径合并所有密度可达点,形成簇。
- 数据点分类:
- 核心点: ϵ \epsilon ϵ-邻域内点数 ≥ MinPts \geq \text{MinPts} ≥MinPts。
- 噪声点:未被任何核心点邻域覆盖。
- 密度直达与可达:
-
参数敏感性与实例
- ϵ \epsilon ϵ 过小:真实簇被分割为碎片(如交通热点误判为多个小区域)。
- ϵ \epsilon ϵ 过大:噪声被误吸收入簇(如信用卡异常交易混入正常交易)。
四、算法对比与选型指南
算法 | 适用场景 | 优势 | 局限 |
---|---|---|---|
层次聚类 | 小规模数据、生物学分类 | 无需预设簇数,可视化直观 | 计算复杂度高 O ( n 3 ) O(n^3) O(n3) |
K-means | 凸形数据、用户分群 | 计算高效 O ( n k d ) O(nkd) O(nkd) | 依赖初始质心,无法处理非凸结构 |
DBSCAN | 非凸结构、噪声过滤 | 抗噪声强,自动识别任意形状簇 | 高维数据需降维,参数敏感 |
解释
-
层次聚类像“搭积木”
- 从零散积木(单个数据点)开始,逐步拼合成大块(簇),最终搭成完整模型(树状图)。
-
K-means像“分糖果”
- 先指定几个盘子(质心),把糖果(数据点)按距离分到最近的盘子,再调整盘子位置直到稳定。
-
DBSCAN像“扫雷游戏”
- 拿探测圈( ϵ \epsilon ϵ)扫描地图,发现地雷核心(密集区域)后连锁标记(簇扩展),孤立点当杂草(噪声)扔掉。
一句话总结:
- 层次聚类适合小规模分层数据,K-means专治规则球形数据,DBSCAN能处理乱七八糟的真实场景。