聚类任务
什么是聚类
聚类(Clustering)是一种无监督学习任务,目标是将数据集中的样本划分为若干个组(簇),使得:
- 簇内相似度高:同一簇内的样本尽可能相似
- 簇间相似度低:不同簇之间的样本尽可能不同
聚类与分类的区别:分类有已知的类别标签(监督学习),而聚类没有预先定义的类别(无监督学习),需要自动发现数据中的内在结构。
聚类的性能度量
聚类性能度量分为两类:
外部指标(External Index)
将聚类结果与参考模型(真实标签)比较:
- Jaccard系数(JC):JC = a / (a + b + c)
- FM指数(FMI):FMI = √(a/(a+b) · a/(a+c))
- Rand指数(RI):RI = 2(a + d) / (m(m-1))
其中 a: 同簇同类, b: 同簇不同类, c: 不同簇同类, d: 不同簇不同类
内部指标(Internal Index)
不依赖外部参考,直接考察聚类结果:
- DB指数(Davies-Bouldin Index):簇内距离小、簇间距离大
- Dunn指数(DI):簇间最小距离 / 簇内最大距离
- 轮廓系数(Silhouette Coefficient):[-1, 1],越接近1越好
聚类性能度量演示
可视化不同聚类性能指标的计算过程
🚧 开发中...
原型聚类
k均值算法(k-means)
k均值算法是最常用的聚类算法,基于原型的划分方法:
算法步骤
- 随机选择 k 个样本作为初始簇中心 μ₁, μ₂, ..., μₖ
- 计算每个样本到各簇中心的距离,划分到最近的簇
- 根据划分结果,重新计算每个簇的中心(簇内样本均值)
- 重复步骤2-3,直到簇中心不再变化或达到最大迭代次数
目标函数(最小化平方误差)
E = Σᵢ₌₁ᵏ Σₓ∈Cᵢ ||x - μᵢ||²
优点:简单高效、易于实现、适合大规模数据
缺点:需要预先指定k、对初始中心敏感、只能发现凸形簇、对噪声敏感
学习向量量化(LVQ)
LVQ(Learning Vector Quantization)是一种有监督的原型聚类方法,结合了聚类和分类:
LVQ算法流程
- 初始化一组原型向量 {p₁, p₂, ..., pq}
- 随机选取样本 xⱼ,找到最近的原型向量 pᵢ*
- 如果 xⱼ 和 pᵢ* 类别相同,将 pᵢ* 向 xⱼ 靠近:pᵢ* ← pᵢ* + η(xⱼ - pᵢ*)
- 如果类别不同,将 pᵢ* 远离 xⱼ:pᵢ* ← pᵢ* - η(xⱼ - pᵢ*)
- 重复2-4直到满足停止条件
其中 η ∈ (0,1) 是学习率
LVQ的关键:利用样本的类别标签信息来调整原型向量,使得同类原型更接近、异类原型更远离。
高斯混合聚类(GMM)
高斯混合模型(Gaussian Mixture Model, GMM)采用概率模型进行聚类:
混合模型定义
p(x) = Σᵢ₌₁ᵏ αᵢ·𝒩(x | μᵢ, Σᵢ)
其中 αᵢ 是混合系数(Σαᵢ = 1),𝒩 是高斯分布
EM算法求解GMM
迭代执行两步:
- E步:根据当前参数计算每个样本属于各簇的后验概率 γⱼᵢ
- M步:根据后验概率更新模型参数(μᵢ, Σᵢ, αᵢ)
GMM相比k-means的优势:能够捕捉簇的形状和大小(协方差矩阵),输出样本属于各簇的概率(软划分)。
k-means聚类交互演示
通过交互式可视化理解k-means算法的迭代过程,观察质心如何移动以及簇如何形成
图例说明
💡 K-means算法步骤
- 初始化:随机选择K个点作为初始质心(使用K-means++改进初始化)
- 分配:将每个点分配到最近的质心,形成K个簇
- 更新:计算每个簇的均值,更新质心位置
- 重复:重复步骤2-3直到质心不再移动(收敛)
密度聚类
DBSCAN算法
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)基于密度的聚类方法,能发现任意形状的簇并识别噪声点。
核心概念
- ε-邻域:Nε(x) = {x′ ∈ D | dist(x, x′) ≤ ε}
- 核心对象:若 |Nε(x)| ≥ MinPts,则x是核心对象
- 密度直达:若x′在x的ε-邻域内且x是核心对象
- 密度可达:存在样本序列使得密度直达传递
- 密度相连:存在核心对象o使得x、x′均密度可达于o
DBSCAN算法步骤
- 标记所有核心对象
- 随机选取一个未访问的核心对象,生成新簇
- 找到所有与该核心对象密度相连的样本,加入当前簇
- 重复步骤2-3,直到所有核心对象都被访问
- 将未被划入任何簇的样本标记为噪声点
✓ 优点
- • 能发现任意形状的簇
- • 能识别噪声点
- • 不需要预先指定簇数量
✗ 缺点
- • 参数ε和MinPts难以确定
- • 对不同密度的簇效果不佳
- • 高维数据性能下降
DBSCAN聚类可视化
交互式调整ε和MinPts参数,观察聚类结果变化
🚧 开发中...
层次聚类
层次聚类方法
层次聚类(Hierarchical Clustering)在不同层次上对数据集进行划分, 形成树形的聚类结构(树状图/dendrogram)。
凝聚层次聚类(AGNES)
自底向上的策略:
- 初始:每个样本作为一个簇
- 找到距离最近的两个簇
- 合并这两个簇
- 重复2-3直到达到预设簇数
分裂层次聚类(DIANA)
自顶向下的策略:
- 初始:所有样本在一个簇
- 选择某个簇进行分裂
- 将该簇分为两个子簇
- 重复2-3直到达到预设簇数
簇间距离计算
- 最小距离(单链接):dₘᵢₙ(Cᵢ, Cⱼ) = min{dist(x, x′) | x∈Cᵢ, x′∈Cⱼ}
- 最大距离(全链接):dₘₐₓ(Cᵢ, Cⱼ) = max{dist(x, x′) | x∈Cᵢ, x′∈Cⱼ}
- 平均距离:dₐᵥ𝓰(Cᵢ, Cⱼ) = (1/|Cᵢ||Cⱼ|) Σₓ∈Cᵢ Σₓ′∈Cⱼ dist(x, x′)
优势:不需要预先指定簇数量,可以通过树状图选择合适的层次。劣势:计算复杂度高(O(n²)或O(n³)),不适合大规模数据。
层次聚类树状图
可视化AGNES算法的聚类过程和树状图结构
🚧 开发中...
谱聚类
谱聚类基本思想
谱聚类(Spectral Clustering)从图论角度进行聚类, 将聚类问题转化为图的划分问题,利用图的谱(特征值和特征向量)进行聚类。
核心步骤
- 构建相似度图:计算样本间相似度,构建相似度矩阵 W
- 计算拉普拉斯矩阵:L = D - W(D是度矩阵)
- 特征分解:计算L的前k个最小特征值对应的特征向量
- k-means聚类:对特征向量矩阵的行进行k-means聚类
常用的拉普拉斯矩阵
- 未归一化:L = D - W
- 对称归一化:Lₛᵧₘ = D⁻¹/²LD⁻¹/² = I - D⁻¹/²WD⁻¹/²
- 随机游走归一化:Lᵣw = D⁻¹L = I - D⁻¹W
💡 为什么有效?
谱聚类在降维后的特征空间中进行聚类,能够发现非凸形状的簇。 拉普拉斯矩阵的特征向量保留了图的连通性信息,使得同簇样本在特征空间中更接近。
优点:能处理任意形状的簇、只需要相似度矩阵、对初始值不敏感
缺点:计算复杂度高、需要预先指定簇数、相似度矩阵构建方式影响结果
谱聚类可视化
展示谱聚类如何处理非凸形状的簇(如双月形数据)
🚧 开发中...