聚类算法
K-Means、DBSCAN、层次聚类原理与对比,聚类评估指标。
1. 聚类问题概述
聚类是将数据集划分为若干组(簇),使得同组内样本相似度高,不同组间相似度低。
1.1 聚类类型
| 类型 | 说明 | 代表 |
|---|---|---|
| 划分聚类 | 预先指定K个簇 | K-Means |
| 密度聚类 | 基于密度连通性 | DBSCAN |
| 层次聚类 | 树状结构聚类 | Agglomerative |
| 模型聚类 | 假设数据由混合模型生成 | GMM |
| 谱聚类 | 基于图拉普拉斯 | Spectral |
2. K-Means算法
2.1 算法流程
1. 随机选择K个初始质心 μ1, μ2, ..., μK
2. 重复:
a. 分配: 将每个样本分配到最近质心
c_i = argmin_k ||x_i - μ_k||²
b. 更新: 重新计算每个簇的质心
μ_k = (1/|C_k|) Σ_{x_i ∈ C_k} x_i
3. 直到质心不再变化或达到最大迭代次数
2.2 目标函数
最小化簇内平方和(WCSS):
2.3 K值选择
肘部法则(Elbow Method):
绘制 vs ,选择拐点处的 。
轮廓系数(Silhouette Score):
其中 为样本 到同簇其他样本的平均距离, 为样本 到最近其他簇的平均距离。
- :聚类效果好
- :簇边界重叠
- :样本可能被分错簇
Gap Statistic:
选择使 Gap 统计量最大的 。
2.4 K-Means++初始化
- 随机选择第一个质心
- 对于每个后续质心,以概率 选择
- 为 到最近已选质心的距离
- 重复直到选出 个质心
效果:避免初始质心过于集中,加速收敛。
2.5 K-Means变体
| 变体 | 改进 | 适用场景 |
|---|---|---|
| Mini-Batch K-Means | 小批量更新质心 | 大规模数据 |
| K-Medoids | 用实际样本点作为中心 | 对异常值鲁棒 |
| Fuzzy C-Means | 软聚类,样本属于多个簇 | 重叠簇 |
| K-Modes | 用众数代替均值 | 类别数据 |
3. DBSCAN算法
3.1 核心概念
| 概念 | 定义 | | :------- | :---------------------------------------------------------------------------------- | ----------------------- | ------------------- | | ε-邻域 | | | 核心点 | | | 边界点 | 非核心点但在某核心点的ε-邻域内 | | 噪声点 | 既非核心点也非边界点 | | 密度直达 | 核心点p的ε-邻域内包含q | | 密度可达 | 通过核心点链可达 | | 密度相连 | 存在点o使p和q都从o密度可达 |
3.2 算法流程
1. 对每个未访问点p:
a. 标记p为已访问
b. 找到p的ε-邻域 N
c. 如果 |N| < MinPts:
- 标记p为噪声点
d. 否则:
- 创建新簇C
- 扩展簇: 将N中所有点加入C
- 对N中每个未访问点q:
· 标记q为已访问
· 找到q的ε-邻域N'
· 如果 |N'| ≥ MinPts: 将N'加入N
· 如果q未属于任何簇: 将q加入C
3.3 参数选择
ε选择:k-distance图
- 计算每个点到其第k近邻的距离()
- 按距离排序绘图
- 选择”拐点”对应的距离作为ε
MinPts选择:
通常取 , 为数据维度。
3.4 DBSCAN优缺点
| 优点 | 缺点 |
|---|---|
| 无需指定簇数 | 对ε和MinPts敏感 |
| 发现任意形状簇 | 密度不均匀时效果差 |
| 自动识别噪声点 | 高维空间距离区分度低 |
| 不假设簇形状 | 计算复杂度 (可用KD树优化到 ) |
4. 层次聚类
4.1 凝聚层次聚类
自底向上,逐步合并最近的簇:
初始: 每个样本一个簇
│
├── 合并最近的两个簇
├── 合并最近的两个簇
├── ...
└── 所有样本合并为一个簇
4.2 簇间距离
| 方法 | 定义 | 特点 |
|---|---|---|
| 单链接 | 最近点距离 | 发现链状结构,但可能链式效应 |
| 全链接 | 最远点距离 | 倾向紧凑球形簇 |
| 平均链接 | 所有点对平均距离 | 折中方案 |
| Ward方法 | 合并后WCSS增量最小 | 倾向等大小簇 |
Ward方法:
4.3 树状图(Dendrogram)
┌───────┐
┌───┤ │
┌───┤ │ │
──┤ │ │ │
A B C D E
- 横轴:样本
- 纵轴:合并距离
- 在指定高度水平切割,得到对应数量的簇
5. 聚类评估
5.1 内部指标(无标签)
| 指标 | 公式思想 | 值域 | 越大越好 |
|---|---|---|---|
| 轮廓系数 | 簇内紧密度 vs 簇间分离度 | [-1, 1] | 是 |
| Calinski-Harabasz | 簇间方差/簇内方差 | [0, +∞) | 是 |
| Davies-Bouldin | 簇内散度/簇间距离比 | [0, +∞) | 否 |
5.2 外部指标(有标签)
| 指标 | 说明 |
|---|---|
| Adjusted Rand Index | 调整兰德指数, |
| Normalized Mutual Info | 归一化互信息, |
| Purity | 聚类纯度, |
| V-measure | 同质性和完整性的调和平均 |