Cohen’s Kappa 系数(κ系数)是一种用于评估两个标注者(或分类器)之间一致性的统计指标,适用于分类任务。它考虑了随机一致性的影响,提供比简单的准确率(Accuracy)更可靠的评估方式。
1. 计算公式
Cohen’s Kappa 计算方式如下:
[
\kappa = \frac{p_o - p_e}{1 - p_e}
]
其中:
- ( p_o )(Observed Agreement):观察到的一致性,即两个标注者给出相同标签的概率。
- ( p_e )(Expected Agreement):随机一致性,即如果两个标注者独立标注,理论上应达到的一致性概率。
计算步骤:
- 构造混淆矩阵(contingency table)
- 计算 ( p_o ):
[
p_o = \frac{\sum \text{对角线上的样本数}}{N}
] - 计算 ( p_e ):
[
p_e = \sum (\text{行总数比例} \times \text{列总数比例})
] - 计算 ( \kappa )
2. Kappa 评分的解释
Kappa 值范围在 ([-1,1]) 之间:
- ( \kappa = 1 ) : 完全一致
- ( \kappa = 0 ) : 仅有随机一致性
- ( \kappa < 0 ) : 一致性低于随机水平
- ( \kappa ) 评分标准(Landis & Koch):
- 0.81 - 1.00 : 近乎完美一致 (Almost Perfect)
- 0.61 - 0.80 : 强一致性 (Substantial)
- 0.41 - 0.60 : 中等一致性 (Moderate)
- 0.21 - 0.40 : 轻微一致性 (Fair)
- 0.00 - 0.20 : 微弱一致性 (Slight)
- < 0.00 : 不一致 (Poor)
3. 示例计算
假设两位标注者对 100 个样本进行二分类(A/B),得到如下混淆矩阵:
标注者2: A | 标注者2: B | 总计 | |
---|---|---|---|
标注者1: A | 50 | 10 | 60 |
标注者1: B | 5 | 35 | 40 |
总计 | 55 | 45 | 100 |
- 观察一致性:
[
p_o = \frac{50 + 35}{100} = 0.85
] - 期望一致性:
[
p_e = \left(\frac{60}{100} \times \frac{55}{100} \right) + \left(\frac{40}{100} \times \frac{45}{100} \right)
]
[
= (0.6 \times 0.55) + (0.4 \times 0.45) = 0.33 + 0.18 = 0.51
] - 计算 ( \kappa ):
[
\kappa = \frac{0.85 - 0.51}{1 - 0.51} = \frac{0.34}{0.49} = 0.69
]
结果:Kappa = 0.69,表示一致性较强。
4. Python 计算
from sklearn.metrics import cohen_kappa_score
# 标注者1 和 标注者2 的分类结果
y1 = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0] # 标注者1
y2 = [1, 0, 1, 0, 0, 1, 0, 1, 1, 0] # 标注者2
kappa = cohen_kappa_score(y1, y2)
print(f'Cohen’s Kappa: {kappa:.2f}')
5. 局限性
- 不适用于多个标注者 → 可用 Fleiss’ Kappa
- 类别不均衡时可能高估或低估一致性
- 敏感于样本大小
如果需要更鲁棒的指标,可结合 Gwet’s AC1 或 Krippendorff’s Alpha 进行验证。