Skip to content

评估与诊断

本章目标

  1. 明确当前仓库 DBSCAN 实现的评估手段——聚类对照散点图 + 簇数量/噪声点数量日志。
  2. 理解聚类评估与分类评估的本质差异——无标签无监督,评价的是簇结构恢复质量而非分类正确率。
  3. 理解轮廓系数等常见聚类指标的原理,以及它们未在流水线中显式计算的原因。

重点方法与概念速览

名称类型作用
plot_clusters(...)函数绘制预测簇标签与真实标签的左右对照散点图
n_clusters统计量算法实际发现的簇数量——与真实簇数(2)对比
n_noise统计量被标记为噪声的样本数——反映密度结构中的"灰区"
簇标签对应关系诊断评估预测簇编号与真实标签之间是否直观对应
轮廓系数(Silhouette Score)指标量化聚类紧密度与分离度——当前未在流水线中显式计算

1. 当前仓库的评估入口

DBSCAN 的评估与分类分册截然不同——没有混淆矩阵、没有 ROC 曲线、没有决策边界、没有学习曲线。评估依赖两种手段:

  1. 聚类对照散点图 —— 左右并列显示算法聚类结果与真实标签,视觉上判断簇结构恢复质量
  2. 聚类统计日志 —— 簇数量 n_clusters 和噪声点数量 n_noise

示例代码

python
plot_clusters(
    X_scaled,
    labels_pred=model.labels_,
    labels_true=y_true,
    title="DBSCAN 聚类分布",
    dataset_name=DATASET,
    model_name=MODEL,
)

理解重点

  • 聚类评估不能像分类那样用 y_pred == y_test 计算准确率——因为簇标签编号(0, 1)与真实标签编号不一定对应,且两者含义不同。
  • 当前评估方法对教学场景来说足够直观——读者可以一眼看出密度扩展是否恢复了两个月牙结构。
  • n_clustersn_noise 这两个统计量是最简明的定量诊断——它们直接反映了 eps/min_samples 配置的合理性。

2. 聚类对照散点图能观察什么

参数速览

适用函数:plot_clusters(X, labels_pred, labels_true, ...)

参数名类型说明示例取值
Xndarray,形状 (n_samples, 2)标准化后的全量特征矩阵X_scaled
labels_predndarray,形状 (n_samples,)算法聚类结果——来自 model.labels_,含噪声标记 1model.labels_
labels_truendarray,形状 (n_samples,)真实簇标签——来自 make_moons 生成时的 yy_true

理解重点

  • 左侧图展示 DBSCAN 的聚类结果——用不同颜色标记不同簇,噪声点通常为特殊颜色(如黑色)。
  • 右侧图展示真实簇标签——为读者提供"正确答案"的视觉基准。
  • 对比重点:
    • 簇的形状是否与真实月牙一致
    • 两个月牙是否被正确识别为两个独立的簇
    • 噪声点(左侧)的数量与位置——是否合理(落在月牙间隙中)还是过多(参数不当)

3. 聚类统计日志能观察什么

参数速览

统计量来源理想值异常信号
n_clusterslen(set(labels_)) - (1 if -1 in labels_ else 0)2(两个月牙各一簇)1 表示两个簇被错误合并(eps 过大);3+ 表示过度分裂(eps 过小或 min_samples 过大)
n_noise(labels_ == -1).sum()少量(通常 < 5%过多(> 20%)表示 eps 过小或 min_samples 过大——大量正常点被误判为噪声

理解重点

  • 这两个统计量构成了 DBSCAN 的最简单有效诊断——不需要任何额外计算。
  • 如果 n_clusters != 2 且并非数据生成有问题,那就是参数配置不当。
  • 过量噪声点通常意味着密度参数与数据的实际密度结构存在系统偏差。

4. 当前实现中尚未纳入但常见的聚类指标

指标公式 / 含义当前未使用的原因
轮廓系数(Silhouette Score)si=biaimax(ai,bi),其中 ai 为点到同簇其他点的平均距离(紧密度),bi 为点到最近邻簇的平均距离(分离度)。si[1,1]当前侧重直观教学而非量化评估,且轮廓系数对噪声点(1)需特殊处理
调整兰德指数(ARI)度量两个聚类分配之间的相似度(共识),扣除随机期望。ARI [1,1],1 表示完全一致需要真实标签——当前 true_label 确实存在,但流水线选择直接用视觉对照而非数值指标
同质性/完整性/ V-measure同质性 h:每个簇只包含单个类别的成员。完整性 c:每个类别的所有成员被分配到同一个簇。V-measure = 2hc/(h+c)同 ARI——当前侧重教学直观性
Davies-Bouldin 指数簇间相似度均值(越小越好)——衡量簇内紧密度与簇间分离度的比值无需真实标签——但当前分册的教学重点是理解密度聚类机制,而非指标对比

理解重点

  • 聚类评估体系与分类评估有本质区别——分类可以直接比对预测标签与真实标签,而聚类的"正确性"更多体现在簇结构的合理性上。
  • 当前流水线不显式计算这些指标——文档可以提到它们是扩展方向,但不能写成"当前源码已在计算"。
  • 对于教学型仓库,散点图视觉对照 + n_clusters/n_noise 日志已经能有效支撑 DBSCAN 的诊断需求。

评估图表

聚类分布图

常见坑

  1. 把分类的评估框架(混淆矩阵、ROC、accuracy)搬到聚类评估——两者评估哲学根本不同。
  2. 看到 n_clusters 不等于真实簇数就认为模型失败——需结合 eps/min_samples 配置和数据噪声水平综合判断。
  3. 把噪声点当成评估中的"错误"——噪声是 DBSCAN 的设计输出,不是误分类。
  4. 忽略左右对照图中预测簇颜色与真实簇颜色的不对应——簇标签编号是任意的,0 和 1 可能互换。

小结

  • 当前仓库对 DBSCAN 的评估简洁而直观:聚类对照散点图看簇形状恢复质量,n_clustersn_noise 统计量看参数配置合理性。
  • DBSCAN 没有混淆矩阵、没有 ROC、没有准确率——这些是监督分类的评估手段,不适用于无监督聚类。
  • 噪声点不是评估中的扣分项——它是 DBSCAN 的核心输出,噪声过多或过少才需要关注参数配置。
  • 聚类评估的核心问题是"算法是否恢复了数据的真实密度结构"——而非"预测标签是否与某个参考答案完全一致"。