文章目录
聚类(Clustering)是无监督学习中的核心任务,旨在将数据集划分为若干个相似子集。不同聚类算法在原理、假设、适用场景等方面各有千秋,本文将带你全面了解主流的几类聚类算法:基于划分、基于层次、基于密度、以及其他创新算法。
一、基于划分的聚类算法(Partition-based Clustering)
代表算法:K-Means
原理:
该类方法将数据划分为 K 个不重叠的簇,每个簇通过一个“中心点”来表示。算法通过迭代优化,使得所有样本到其所属簇中心的距离之和最小。
数学公式:
设数据集 X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,…,xn},目标是最小化:
argmin C ∑ i = 1 K ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 \text{argmin}_C \sum_{i=1}^{K} \sum_{x \in C_i} ||x - \mu_i||^2 argminCi=1∑Kx∈Ci∑∣∣x−μi∣∣2
其中 μ i \mu_i μi 是簇 C i C_i Ci 的中心。
算法步骤:
- 随机选择 K 个中心点。
- 将每个样本分配到最近的中心点所代表的簇。
- 更新每个簇的中心点为其所有点的均值。
- 重复步骤2-3直到收敛。
应用场景:
- 用户分群(根据购买行为)
- 图像压缩(将像素聚类成色彩中心)
- 市场细分
实际案例:
超市客户分群:使用顾客“月消费额”和“购买频率”作为特征进行聚类,将顾客划分为高价值客户、中间层、低频用户等,以制定差异化的营销策略。
二、基于层次的聚类算法(Hierarchical Clustering)
代表算法:AGNES(自底向上)
原理:
该类方法通过构建一个树状的层次结构(dendrogram)来表示聚类过程。
有两种策略:
- 自底向上(Agglomerative):从每个点开始,不断合并最近的两个簇;
- 自顶向下(Divisive):从整体开始,递归分裂为子簇。
距离计算方法:
- 单链接:两个簇最近点之间的距离。
- 完全链接:两个簇最远点之间的距离。
- 平均链接:两个簇所有点对之间的平均距离。
应用场景:
- 生物系统进化树
- 社交网络中的社区识别
- 文档层级分类
实际案例:
DNA 相似性聚类:生物学家可使用层次聚类构建不同物种的进化树,通过基因序列相似度判断其亲缘关系。
三、基于密度的聚类算法(Density-based Clustering)
代表算法:DBSCAN
原理:
该类算法认为一个簇是由密度相连的点组成。通过指定两个参数: ε \varepsilon ε(邻域半径)和 M i n P t s MinPts MinPts(最小邻域点数)来定义核心点与噪声点。
若一个点的 ε \varepsilon ε-邻域中至少有 M i n P t s MinPts MinPts 个点,则它是核心点;核心点间若存在密度可达路径,则归于同一簇。
应用场景:
- 空间数据聚类(地震、地理信息)
- 异常检测(识别噪声点)
- 天文图像中的星团识别
实际案例:
星团识别:天文图像中,DBSCAN 可以自动识别星群,而将孤立的星星(低密度区域)判定为噪声点。
四、其他常见聚类方法
类别 | 代表算法 | 原理简介 | 适用场景 |
---|---|---|---|
基于网格的 | STING、CLIQUE | 将数据空间离散成网格单元,基于密度合并格子 | 地理空间分析、图像区域划分 |
基于模型的 | GMM(高斯混合模型) | 假设数据由若干高斯分布组成,通过EM算法估计参数 | 模糊聚类,金融建模 |
基于约束的 | COP-KMeans | 聚类过程中加入“必须/不能同组”的限制 | 领域知识丰富的场景,如医疗、金融 |
基于图论/谱聚类 | Spectral Clustering | 构造图的拉普拉斯矩阵,通过特征值分解划分群体 | 非凸簇、高维数据 |
五、算法类比与选择
算法类型 | 类比记忆 | 优点 | 缺点 |
---|---|---|---|
K-Means | 学生分组做作业 | 简单高效 | 对初始点敏感,不能识别非凸簇 |
层次聚类 | 构建家谱树 | 可视化好,无需预设簇数 | 计算复杂度高,不易调整 |
DBSCAN | 拍照找人群密集区域 | 能处理噪声和非凸簇 | 对参数敏感,维度高时效果差 |
GMM | 每人属于多个兴趣圈 | 适合软分配 | 易陷局部最优,对初值敏感 |
谱聚类 | 城市划片断路 | 适合复杂结构数据 | 运算量大,依赖图构建方式 |