🌟 什么是聚类?
聚类(Clustering)是无监督学习的一种任务:
把相似的数据点分到一组,不相似的分开。
没有标签,只靠数据本身的分布结构来"自动分组"。
🔢 常见聚类算法分类 & 讲解
1. K-Means(K均值) ------ 划分式聚类代表
- 核心思想 :
随机选 K 个中心点(簇中心),不断迭代:
① 把每个点分给最近的中心;
② 重新计算中心位置,直到稳定。 - 特点 :
- 硬聚类(每个点只属于一个簇)
- 假设簇是球形、大小相近、密度均匀
- 优点:简单、高效、适合大规模数据
- 缺点 :
- 对噪声敏感(所有点都必须归入某簇)
- 需要预先指定 K
- 无法处理非凸形状(如月牙形)
- 适用场景:客户分群、图像压缩、文档聚类等结构清晰的数据
2. DBSCAN ------ 基于密度的聚类
- 核心思想 :
- 如果一个点周围足够密集(有 ≥ MinPts 个点在半径 ε 内),就形成一个簇;
- 孤立的稀疏点 → 标记为噪声。
- 特点 :
- 能发现任意形状的簇
- 自动识别噪声点
- 不需要指定簇数量
- 优点 :
- 抗噪能力强 ✅
- 无需预设 K
- 对异常值鲁棒
- 缺点 :
- 对参数 ε 和 MinPts 敏感
- 在密度差异大的数据上效果差(比如有的簇密、有的稀疏)
- 适用场景:地理热点检测、异常检测、含噪声的真实数据
3. 层次聚类(Hierarchical Clustering)
- 核心思想 :
构建一棵"聚类树"(树状图 dendrogram):- 凝聚法(Agglomerative):每个点一开始是一个簇,逐步合并最相似的簇(自底向上)✅常用
- 分裂法(Divisive):所有点在一个簇,逐步分裂(自顶向下,少用)
- 特点 :
- 可以通过树状图选择任意数量的簇
- 支持多种距离定义(欧氏、曼哈顿、余弦等)
- 优点:结果可视化好,不需要预设 K
- 缺点 :
- 时间复杂度高(O(n³)),不适合大数据
- 一旦合并/分裂,不能撤销(贪心策略)
- 适用场景:生物信息学(基因聚类)、小规模数据分析、探索性分析
4. 高斯混合模型(GMM, Gaussian Mixture Model) ------ 软聚类代表
- 核心思想 :
假设数据由多个高斯分布(正态分布)混合生成,用EM算法估计参数。 - 特点 :
- 软聚类 :每个点属于每个簇都有一个概率(如:80% 属于簇A,20% 属于簇B)
- 簇可以是椭圆形状(比 K-Means 更灵活)
- 优点 :
- 概率化输出,更柔和
- 能处理重叠簇
- 缺点 :
- 对初始值敏感
- 假设数据服从高斯分布(现实中未必成立)
- 适用场景:语音识别、图像分割、需要概率归属的任务
5. 基于网格的聚类(如 STING、CLIQUE)
- 核心思想 :
先把空间划分为网格单元,然后在网格上进行聚类(不是对原始点操作)。 - 优点:速度快,适合高维或大规模数据
- 缺点:精度较低,受网格划分影响大
- 适用场景:空间数据库、实时聚类
6. 谱聚类(Spectral Clustering)
- 核心思想 :
利用图论 + 特征分解,把数据映射到低维空间后再聚类(通常用 K-Means)。 - 优点 :
- 能处理非凸形状(如环形、月牙形)
- 数学理论强
- 缺点 :
- 计算复杂(需构建相似度矩阵、特征分解)
- 对相似度函数敏感
- 适用场景:图像分割、社交网络社区发现
📊 快速对比表
| 算法 | 是否需预设 K | 抗噪能力 | 簇形状 | 软/硬聚类 | 适合数据规模 |
|---|---|---|---|---|---|
| K-Means | ✅ 是 | ❌ 弱 | 球形 | 硬 | 大 |
| DBSCAN | ❌ 否 | ✅ 强 | 任意 | 硬(但可标噪声) | 中~大 |
| 层次聚类 | ❌ 否(可后选) | ❌ 中弱 | 任意 | 硬 | 小(<1万) |
| GMM | ✅ 是 | ❌ 中 | 椭圆 | 软 | 中 |
| 谱聚类 | ✅ 是 | ❌ 中 | 任意 | 硬 | 小~中 |
| 网格聚类 | ❌ 否 | ❌ 中 | 网格块 | 硬 | 大 |
✅ 如何选择聚类算法?
- 数据干净、球形簇、要快 → K-Means
- 数据有噪声、簇形状奇怪 → DBSCAN
- 想探索不同粒度的分组 → 层次聚类
- 需要知道"属于某类的概率" → GMM
- 簇是非凸的(如两个同心圆)→ 谱聚类