rsfarm
← 文章

kappa 偏小,先别急着改模型

2026-10-18约 1402 字

kappa 算出来偏小,很多人第一反应是回去调分类器。我建议先停一下,看一眼混淆矩阵。

如果你的矩阵里有一类占了大头,那这个数字低,很可能跟分类做得好不好没关系。

先看它是怎么算的

κ = (Po − Pe) / (1 − Pe)

Po 是总体精度,对角线之和除以总样本数。Pe 是"随机乱猜也能对上的概率",由混淆矩阵的行列边际推出来。

问题就出在 Pe 上。它跟着类别分布走:某一类占了绝大多数,Pe 就被抬得很高,分母 1 − Pe 变得很小。同样的 Po,算出来的 κ 被压下去。

举个数:玉米占八成、其他作物合起来占两成。一个把所有地块都判成玉米的模型,Po 直接就是 0.8。这时候 Pe 也接近 0.8,分母只剩 0.2,κ 大概 0.0 出头。

这个模型一个"其他作物"都没认出来,但它的总体精度有 80%。kappa 说它等于瞎猜——这个判断反而是对的。

反过来另一种情况:模型其实分得不错,但玉米占九成,kappa 仍然上不去。这时候 κ 低是数学结构造成的,不是模型差。

所以第一步不是调参,是把混淆矩阵打出来,看三样东西:总体精度 Po、每一类的 UA 和 PA、还有行列边际的分布。看完才知道属于哪一种。

这个指标本身就有点问题

不是我的个人偏见,学界二十多年前就说过。

Feinstein 和 Cicchetti 在 1990 年指出两个悖论:完全不同的表现可以算出同一个 kappa;类别不均衡时,高精度反而得到低 kappa。

更要命的是抽样能操纵它。同一份分类结果,只改验证样本的类别比例——按面积比例抽,还是按类别等量分层抽——kappa 的数值就变了。一个会被抽样设计左右的指标,不适合当唯一判据。

后来的走向也清楚:Pontius 和 Millones 在 2011 年提出用数量误差和位置误差取代它;Foody 在 2020 年系统论证了 kappa 不适用于遥感。现在主流期刊基本不再把 kappa 当主要指标。

那该报什么

短答案:OA 加 UA/PA,必要时补 F1,位置精度看具体任务。

UA 和 PA 一定要分开报。只报一个"准确率",看不出错在哪——是错得多,还是漏得多,这两个对使用者的含义完全不同。

涉及面积的时候再加两个:数量误差(总亩数差多少)和位置误差(图斑叠不叠得上)。这两个跟面积的对应关系,比 kappa 直接得多。

我自己怎么用的

做农险定损,最后一公里要落到"面积准不准",所以我们这边不看 kappa,看两个数:

一是分类得到的作物面积,对上承保面积或统计面积,落在 95% 到 100% 之间;二是作物图斑与参考图斑的叠合度不低于 90%。两个同时满足才算过。

为什么不用 kappa——它不告诉你面积对不对。

一张 kappa 0.9 的分类图,面积照样可能偏三成。因为误差可能全集中在某一类上,而那一类的面积恰恰是最后要报的数。kappa 看到的是"整体分对了多少",看不到"你最关心的那一类差了多少"。

还有个更实际的原因:kappa 是个 0 到 1 之间的数,甲方看不懂,也没法拿去核。而"差 12 亩"是个人人都能对的事实。

一句话

kappa 小,先看行列边际,别先改模型。边际严重不均衡的时候,它低是正常的。

真要做的是换一套指标:OA 加 UA/PA,面积任务再加数量误差和位置误差。kappa 可以留着当参考,但别当成判据。