无监督学习结果评价
从内部结构、稳定性、外部标签、下游价值和领域解释多角度评价无标签结果。
学习前需要掌握
背景与问题
聚类总能输出一些编号,但没有标签就不能通过直接算“分类准确率”判断分组是否正确。紧密分离、跨随机种子稳定、专家可解释和能改善下游决策,是不同证据,必须分别检查。
概念定义
内部指标只看数据几何与分组,如轮廓、簇内平方和;外部指标将分组与参考划分比较,如 ARI。稳定性检查关注扰动后是否仍形成相近结构,任务验证则评价实际用途。任何单项都不能单独证明发现了真实自然类别。
直观理解
把图书按封面颜色分组可能非常稳定、边界清晰,却不一定帮助读者找主题。评价分组需要先说明想保留哪种相似性,以及结果将服务什么决策。
核心原理
簇标签是任意编号,交换 0 与 1 不改变划分,因此不能直接逐元素比较编号计算准确率。ARI 等基于成对关系或信息的指标能避免编号置换问题,但仍依赖参考标签是否适合当前目的。
轮廓等内部指标偏好特定距离结构,且有有效簇数条件。对 DBSCAN,是否排除噪声应明确,并同时报告保留比例;删掉困难样本后提高分数,不等于整体覆盖更好。
可改变种子、参数或做重采样检查共同样本的分组关系。若用参考标签反复选择算法或 K,这些标签就参与了选择,不能再冒称完全未使用的最终测试;需要新的独立评估与业务证据。
数学表达
划分的编号置换不变性
π 是对簇编号的一一置换;同一分组不应仅因编号变化受到惩罚。
变量含义
变量定义与本页概念定义一致,代码中的同名变量保持相同语义。
计算步骤
- 1先定义分组用途、特征距离与希望验证的主张。
- 2计算适用内部指标,同时报告簇数、大小和噪声比例。
- 3改变初始化、参数或样本,比较重叠样本的划分稳定性。
- 4有参考标签时使用编号不变的外部指标,并记录其是否参与调参。
代码对应位置
示例 1编号准确率为零,划分却完全相同:用完整标签数组核对编号不变的外部评价。
手算与场景核对
划分 A 为 [0,0,1,1],划分 B 为 [1,1,0,0]。逐元素编号准确率是 0,但两者都把前两个点放一组、后两个点放另一组,实际上完全相同。
调整兰德指数 ARI=1 正确识别这种等价。这只能证明两份划分一致,不能证明两个簇对应真实用户类别,更不能用作未来业务收益。
计算与实现步骤
- 先定义分组用途、特征距离与希望验证的主张。
- 计算适用内部指标,同时报告簇数、大小和噪声比例。
- 改变初始化、参数或样本,比较重叠样本的划分稳定性。
- 有参考标签时使用编号不变的外部指标,并记录其是否参与调参。
- 检查代表样本、下游效果和独立数据复现。
代码实现
示例 1
编号准确率为零,划分却完全相同
example_01.py用途:用完整标签数组核对编号不变的外部评价。
from sklearn.metrics import adjusted_rand_score
partition_a = [0, 0, 1, 1]
partition_b = [1, 1, 0, 0]
raw_match = sum(a == b for a, b in zip(partition_a, partition_b)) / len(partition_a)
ari = adjusted_rand_score(partition_a, partition_b)
print(f"raw_label_match={raw_match:.3f}, ARI={ari:.3f}")代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
用完整标签数组核对编号不变的外部评价。
b- 偏置项。
Step 1 · 1–1 行
导入当前步骤需要的数值计算、预处理、模型或评价工具。依赖集中写在代码开头,便于复现。
from sklearn.metrics import adjusted_rand_scoreStep 2 · 3–7 行
输出中间参数、形状或最终指标,用于核对代码是否符合预期。
partition_a = [0, 0, 1, 1]
partition_b = [1, 1, 0, 0]
raw_match = sum(a == b for a, b in zip(partition_a, partition_b)) / len(partition_a)
ari = adjusted_rand_score(partition_a, partition_b)
print(f"raw_label_match={raw_match:.3f}, ARI={ari:.3f}")预期输出或运行结果
raw_label_match=0.000, ARI=1.000
常见错误 · 3 条
- 直接比较簇编号算准确率,惩罚等价编号交换。
- 只保留容易样本后报告内部指标,不披露覆盖。
- 参考标签已用于选择参数,却仍当成独立外部测试。
实际应用
- 对候选聚类形成几何、稳定性与任务用途的多维证据。
- 识别由尺度、离群点或参数选择制造的脆弱分组。
常见错误
- 直接比较簇编号算准确率,惩罚等价编号交换。
- 只保留容易样本后报告内部指标,不披露覆盖。
- 参考标签已用于选择参数,却仍当成独立外部测试。
资料与假设
参见 scikit-learn:Clustering performance evaluation。 本页数值均为构造例;涉及模型分数时仅说明给定数据与协议下的计算。
推荐学习资料
参考库不会生成虚假资源或无效外部链接。