调整Rand指数为何能为负:六个样本怎样低于随机配对基线
比较两次聚类时,不能直接数“标签相同的样本有几个”:某个算法的0号簇完全可能对应另一算法的2号簇。调整Rand指数,也就是ARI,比较的是样本之间同组或异组的关系,并扣除一种明确随机模型下的基线。一个负分不是负准确率,而是两份分组的对应关系低于该基线。
AI生成的概念示意图:同一批物件覆盖两套分组关系,再与打乱后的关系比较;颜色、连带和天平不表示正文准确计数。
先固定六个样本的两份分组
样本编号为1到6。参考分组为{1,2,3}与{4,5,6},对应标签(0,0,0,1,1,1)。待比较分组为{1,4}、{2,5}、{3,6},对应标签(0,1,2,0,1,2)。两边簇数量可以不同,ARI并不要求先给每个簇找到一对一名称映射。
六个样本共有“六选二”即15个无序样本对。参考分组内同组的对数是两次“三选二”,总共6对;待比较分组内同组的对数是三次“二选二”,总共3对。由于每个预测簇都从两个参考簇各取一个样本,没有任何一对在两边都同组。
因此两边同组关系发生冲突的共有6+3=9对,其余6对在两边都异组。未调整Rand指数RI把这两种一致情况都算进来,本例为6/15=0.4。它不是逐样本分类准确率,分母和比较对象都已经变成样本对。
随机基线需要保留哪些东西
常用的Hubert–Arabie调整固定两份分组的簇大小,再随机改变它们之间的对应关系。本例参考侧保持3与3,另一侧保持2、2、2。对任一参考同组样本对,在随机配置的预测分组中也同组的概率为3/15,也就是1/5。
参考侧有6个同组对,所以两边同时同组的期望是6乘1/5=1.2。期望可以不是整数,因为它是许多可能配置的加权平均,不是要求某一次分组真的产生1.2个样本对。
用列联表也能得到相同数字。表中两行代表参考簇,三列代表预测簇,本例六个格子全部为1。各格“计数选二”的总和为0;行合计“选二”之和为6,列合计“选二”之和为3。机会期望为6乘3再除以总对数15,仍为1.2。
把本次值和期望放到同一条尺度上
ARI常用计算式为:实际共同同组对数减去机会期望,再除以“行同组对数与列同组对数的平均值减去机会期望”。代入本例,分子是0-1.2,分母是(6+3)/2-1.2=3.3,因此ARI=-1.2/3.3=-4/11,约-0.363636。
也可从RI出发复核。随机配置下,两边都异组的期望为15-6-3+1.2=7.2;加上共同同组的1.2,期望一致对数为8.4,所以随机RI基线为8.4/15=0.56。再算(0.4-0.56)/(1-0.56),同样得到-4/11。
这个双路线对照很重要:只要把有序对和无序对混用,或漏掉“两边都异组”,中间计数就会不一致。让AI分别输出完整15对的关系表与列联表公式,通常比只让它返回一个小数更容易发现错误。
随机分组的分数不必每次等于零
固定标签多重集合(0,0,1,1,2,2),在六个位置上共有90种不同排列。逐一穷举后,其中36种的ARI为-4/11,另外54种为8/33,约0.242424。90个分数的平均恰好是0,却没有任何一种配置的分数等于0。
因此“随机聚类的ARI接近零”应理解为基线或统计行为,而不是对每一次小样本随机结果的硬性要求。本例样本很少,可取的分数很离散;用一次随机实验测试时若强制返回0,就会错误拒绝正常实现。
还有一个容易忽略的边界:固定本例3、3对2、2、2的簇大小,两份划分本来就不可能完全相同,因此这个固定配置空间内最高只能达到8/33。ARI在完全相同划分时为1,不代表任何两组给定簇大小都能把1实际取到。
标签换名字不会改变关系
把预测标签0、1、2改成8、5、9,只要同簇关系不变,ARI必须保持-4/11。交换两份标签数组,结果也应相同。再将样本行顺序用同一排列同时打乱,分数同样不能改变。这三条不变量适合成为评估管线的基础回归测试。
不过,只打乱一份数组的行序会破坏样本身份对应关系。两份文件长度都为六并不足以说明能够比较,必须先按稳定样本ID对齐。重复记录、丢失记录与不同版本样本集,应在算指标之前处理,否则一个合理的计算函数也会忠实输出没有业务意义的数字。
极端划分还可能令通常公式的分母为零。例如两边都把每个样本单独成簇,数学中间量没有普通的比值可算;常用实现会把完全相同的这种退化划分记为1。应用应明确采用的实现约定,不要让自写公式的零除零悄悄传播到监控报表。
它回答分组一致性,不替代全部评估
ARI适合有参考划分时比较聚类结果,也可以比较两个版本的分组稳定性。但高一致性不证明参考标签本身正确;两次算法都重复同一种偏差,也可能高度一致。若业务重视某个小群体,还应单看其拆分与合并情况,不能只看全局样本对汇总。
簇内样本数与样本对数不是线性关系,大簇可能贡献很多对。添加重复记录会改变这些权重,不只是让统计更精确。报告最好同时包含样本数、各簇大小、列联表、ARI以及与业务相关的错误例子,说明究竟是一个大簇被拆散,还是多个小簇被混在一起。
对于带噪声标签的聚类,也应决定噪声点是作为一个共同类别参加比较,还是按预先固定规则排除。根据分数高低临时删除“不好看”的点,会改变被评估的样本集合。本文负分的价值正在于暴露关系结构,而不是提供一个应该被截断为零的异常值。
若参考标签来自人工标注,还要核查标注协议是否和聚类目标一致。按商品用途分组与按外观分组,本来可能形成两种合理划分;ARI只描述它们的一致程度,不替你决定哪一种更符合需求。报告低分时应先确认双方在解决同一个问题,再把它解释为模型退步。
同理,负分不能自动定位具体错误。它汇总了全体样本对,仍需沿列联表查找被拆分和被合并的对象。把负数直接截成零会丢掉这部分偏离随机基线的信息,也会让不同模型看起来无法区分。
资料核对日期:2026年10月3日。本文为原创教学样例,已用独立枚举或分数运算与本地scikit-learn 1.8.0交叉核验,未进行真实模型训练或业务效果测试。
参考资料
scikit-learn:adjusted_rand_score
Hubert与Arabie:Comparing partitions


