聚类是无监督学习的核心技术,将数据按相似性分组,使同组内对象相似度高、组间相似度低。
聚类 vs 分类:聚类是无监督学习,无预先定义的标签,基于数据本身相似性发现内在结构;分类是监督学习,依赖带标签的训练数据进行类别预测。
发展历程
| 阶段 | 时间 | 代表算法 |
|---|---|---|
| 传统算法 | 1960s-1980s | K-means、层次聚类 |
| 密度聚类兴起 | 1990s | DBSCAN |
| 高维大数据时代 | 2000s至今 | 谱聚类、深度聚类 |
数学基础
相似性度量
| 距离类型 | 公式 | 适用场景 |
|---|---|---|
| 欧几里得距离 | $d(i,j) = \sqrt{\sum_{k=1}^{n}(x_{ik} - x_{jk})^2}$ | 低维数据,向量大小重要 |
| 曼哈顿距离 | $d(i,j) = \sum_{k=1}^{n} | x_{ik} - x_{jk} |
| 切比雪夫距离 | $d(i,j) = \max_k | x_{ik} - x_{jk} |
主要算法
K-means
算法流程:
- 随机选择 K 个初始簇中心
- 将每个对象分配到最近的簇
- 重新计算簇均值作为新中心
- 重复直到收敛
目标函数(最小化误差平方和): $$E = \sum_{i=1}^{k}\sum_{p \in C_i} |p - m_i|^2$$
优缺点:
| 优点 | 缺点 |
|---|---|
| 简单高效 | 需预设 K 值 |
| 计算复杂度线性增长 | 对初始中心敏感 |
| 仅适用于球状簇 |
| |
层次聚类
构建树状结构展示数据层次关系。
| 方法 | 流程 |
|---|---|
| 凝聚(自底向上) | 每对象初始为一类,逐步合并相似类 |
| 分裂(自顶向下) | 所有点初始为一类,逐步分裂 |
| |
DBSCAN
基于密度的聚类,能发现任意形状簇并识别噪声点。
核心概念:
- ε-邻域:半径 ε 内的区域
- 核心点:邻域内至少有 MinPts 个点
- 边界点:在核心点邻域内但非核心点
- 噪声点:既非核心点也非边界点
| |
高斯混合模型(GMM)
假设数据由多个高斯分布混合而成,通过 EM 算法估计参数。
概率密度函数: $$p(x) = \sum_{k=1}^{K} \pi_k \mathcal{N}(x|\mu_k, \Sigma_k)$$
聚类评估
内部指标
| 指标 | 公式 | 说明 |
|---|---|---|
| 轮廓系数 | $s(i) = \frac{b(i) - a(i)}{\max{a(i), b(i)}}$ | 结合内聚与分离,[-1,1],越大越好 |
| CH指数 | $\frac{SS_B/(k-1)}{SS_W/(n-k)}$ | 簇间/簇内距离比,越大越好 |
外部方法
肘部法则:绘制不同 K 值对应的 SSE 曲线,选择拐点作为最佳 K 值。
应用场景
| 场景 | 应用 |
|---|---|
| 客户价值分析 | 客户分群、精准营销 |
| 图像分割 | 区域分割、目标识别 |
| 生物信息学 | 基因表达分析 |
| 异常检测 | 欺诈检测、入侵检测 |
算法选择建议
| 算法 | 适用场景 |
|---|---|
| K-means | 数据均匀、簇近似球形、数据量大 |
| 层次聚类 | 小规模数据、需可视化层次关系 |
| DBSCAN | 簇形状不规则、含噪声、K 未知 |
| GMM | 数据符合混合高斯分布、需概率输出 |
发展趋势
- 高维聚类:传统算法在高维空间性能下降,需开发适应算法
- 自动参数选择:减少对用户经验的依赖
- 流数据聚类:增量式实时聚类
- 深度聚类:结合深度神经网络特征学习
- 可解释性聚类:增强结果的可解释性
张芷铭的个人博客
Comments