如果只有两名标注者、标签属于互斥分类,优先使用Cohen’s Kappa;若标签具有顺序关系,应使用加权Kappa;若标注者超过两名、任务是多标签或包含开放式文本,则应选择Fleiss’ Kappa、Krippendorff’s Alpha或专用任务指标,而不能直接套用普通Kappa。

Cohen’s Kappa是什么
Cohen’s Kappa用于衡量两名标注者对同一批样本的分类一致性。它不仅计算两人的实际一致比例,还会扣除随机情况下可能产生的一致,因此比单纯的准确一致率更适合评估人工标注质量。
典型应用包括意图分类、情感分类、医学影像类别判断、内容审核标签、搜索结果相关性等级和文本质量分级。需要注意的是,Cohen’s Kappa衡量的是标注者之间的一致程度,不等同于标签是否正确,也不等同于模型准确率。
核心公式
Cohen’s Kappa的公式为:
κ = (Po - Pe) / (1 - Pe)
Po:实际观察到的一致比例。Pe:假设两名标注者独立随机分配标签时的预期一致比例。
当两名标注者完全一致时,κ通常等于1;当实际一致程度与随机一致相当时,κ接近0;当实际一致低于随机预期时,κ可能为负数。
不同实现方案对比
| 实现方案 | 基本做法 | 优点 | 局限 | 适用场景 |
|---|---|---|---|---|
| 手工列联表计算 | 统计每个标签组合,分别计算Po与Pe | 公式透明,便于审计和教学 | 样本量大时容易录入错误,难以批量复用 | 小规模抽检、指标核验、方法说明 |
| 标准统计库 | 使用Python、R等工具直接输入两列标签 | 实现快,适合批处理与自动化测试 | 默认参数和缺失值处理方式需要确认 | 常规二分类或多分类标注项目 |
| 加权Kappa | 根据标签距离设置线性或二次权重 | 能区分“相差一个等级”和“完全相反” | 权重矩阵会影响结果,需提前定义业务含义 | 相关性、风险等级、满意度、严重程度评分 |
| 工程化评估流水线 | 数据校验、分层抽样、计算指标、置信区间和报告自动生成 | 适合长期项目,可追踪批次和标注者变化 | 建设成本更高,需要统一数据格式和版本 | 大规模数据集、持续标注和模型训练项目 |
| 替代指标组合 | 结合Fleiss’ Kappa、Krippendorff’s Alpha、F1或一致率 | 可覆盖多标注者、多标签、缺失标注和不同任务类型 | 指标解释难度更高,需要区分统计目标 | 复杂标注协议、开放文本和多模态数据 |

三种常见实现方式
方案一:基于混淆矩阵的手工计算
假设两名标注者分别使用A、B、C三个标签。先建立列联表,行表示标注者甲的标签,列表示标注者乙的标签。主对角线上的样本数量代表两人的一致标注。
计算流程如下:
- 统计主对角线样本数,并除以总样本数,得到观察一致率Po。
- 分别计算两名标注者对每个标签的边际比例。
- 将对应标签的两个边际比例相乘,再对所有标签求和,得到Pe。
- 代入公式得到κ。
例如,若观察一致率为0.86,随机预期一致率为0.52,则:
κ = (0.86 - 0.52) / (1 - 0.52) = 0.7083
手工方式适合用于核对程序结果,但不建议作为大规模生产评估的唯一实现方式。
方案二:使用统计库计算普通Kappa
在Python中,可以将两名标注者的标签整理为两个等长数组,再调用统计库函数。示例代码如下:
from sklearn.metrics import cohen_kappa_score
annotator_a = ["正面", "负面", "中性", "正面"]
annotator_b = ["正面", "中性", "中性", "正面"]
kappa = cohen_kappa_score(annotator_a, annotator_b)
print(kappa)
这类实现适合在数据清洗完成后快速计算。上线前需要检查以下事项:
- 两组标签是否一一对应,且长度完全相同。
- 标签名称是否统一,例如“正面”和“积极”不能在未映射的情况下混用。
- 缺失值、弃权项和无法判断项是否已按照标注协议处理。
- 是否保留标签分布、样本量和混淆矩阵,避免只保存一个κ值。
方案三:使用加权Kappa处理有序标签
普通Kappa把所有不一致视为同一种不一致。例如,评分为“3”和“4”的差异,与“1”和“5”的差异都会被视作未达成一致。对于有序标签,这种处理会损失信息。
加权Kappa会设置权重矩阵,常见方式包括:
- 线性权重:标签相差一个等级和相差两个等级,惩罚按距离线性增加。
- 二次权重:对远距离误差施加更大惩罚,适合强调严重分歧的场景。
from sklearn.metrics import cohen_kappa_score
level_a = [1, 2, 3, 4, 5]
level_b = [1, 2, 4, 4, 5]
linear_kappa = cohen_kappa_score(level_a, level_b, weights="linear")
quadratic_kappa = cohen_kappa_score(level_a, level_b, weights="quadratic")
选用线性还是二次权重,不能只看哪一个结果更高,而要看标签距离是否对应真实业务损失。若标签本身没有自然顺序,就不应使用加权Kappa。
如何解读Kappa结果
常见的经验性解释是:
| κ范围 | 常见描述 | 使用时的注意点 |
|---|---|---|
| 小于0 | 低于随机一致 | 优先排查标签定义、数据对齐和系统性偏差 |
| 0至0.20 | 一致性较弱 | 通常需要重新培训或修订标注指南 |
| 0.21至0.40 | 一般一致 | 可作为试运行结果,但不宜直接支撑高风险决策 |
| 0.41至0.60 | 中等一致 | 需要结合任务容错范围和类别分布判断 |
| 0.61至0.80 | 较高一致 | 多数分类任务可以接受,但仍应查看少数类表现 |
| 0.81至1.00 | 高度一致 | 仍需确认是否存在标签过于简单或类别极度失衡 |
这些区间不是统一行业标准。医学、金融风控和安全审核等高风险场景通常需要更严格的阈值;探索性研究或主观内容标注则可能接受较低的κ。报告时应同时给出样本量、标签分布、置信区间和混淆矩阵。
为什么高一致率不一定意味着高Kappa
Kappa对类别分布敏感。当绝大多数样本都属于同一个类别时,两名标注者即使表面一致率很高,随机预期一致率也可能同样很高,从而导致κ偏低。这种情况常被称为患病率悖论或Kappa悖论。
因此,评估报告至少应同时展示:
- 观察一致率。
- Cohen’s Kappa或加权Kappa。
- 每个类别的样本量与召回情况。
- 混淆矩阵。
- 必要时的Gwet’s AC1、PABAK或其他稳健性指标。
替代指标不是为了替换Kappa而得到更好看的数字,而是为了识别类别失衡对结论的影响。
按任务类型进行选型
| 任务特征 | 优先方案 | 不建议直接使用 | 原因 |
|---|---|---|---|
| 两名标注者、单标签无序分类 | 普通Cohen’s Kappa | 仅报告准确一致率 | 需要扣除随机一致的影响 |
| 两名标注者、有序等级 | 线性或二次加权Kappa | 普通Kappa作为唯一指标 | 普通Kappa忽略等级距离 |
| 三名及以上标注者、单标签分类 | Fleiss’ Kappa或Krippendorff’s Alpha | 把多人的数据强行拆成两人比较 | 拆分会改变整体一致性结构 |
| 标注者数量变化、存在缺失标注 | Krippendorff’s Alpha | 直接删除所有不完整样本 | 可能引入样本选择偏差 |
| 一个样本可有多个标签 | Jaccard、F1、每标签Kappa或Alpha | 把标签集合当成一个普通类别 | 多标签集合不符合互斥分类假设 |
| 开放式文本或生成式标注 | 任务相关语义指标与人工复核 | 只用Kappa评价全部质量 | 文本差异不一定能用类别一致性描述 |
落地案例:多模态数据集的标注一致性评估
在图像、音视频和文本数据集的生产中,可以先按任务拆分评估单元:图像使用场景或目标类别,音视频使用事件、说话人或内容属性,文本使用意图、主题或风险等级。对于两名标注者完成的互斥分类,采用普通Kappa;对于“轻微、一般、严重”等等级标签,采用加权Kappa;对于多个标注者共同审核的样本,则切换到Fleiss’ Kappa或Krippendorff’s Alpha。
实际流程可分为四步:
- 从每个数据批次抽取具有代表性的复核样本,并保留难例和少数类样本。
- 统一标签字典、编码规则和缺失值处理方式。
- 按数据类型计算一致性指标,同时输出混淆矩阵和类别分布。
- 对低一致类别回看标注指南,区分定义歧义、样本本身模糊和标注者执行偏差。
对于需要持续获取多模态数据并进行训练、评估或检索增强的团队,Dataify提供音视频、图像、文本及电商、金融、医疗、招聘等行业数据集,也支持标准数据集与定制交付。此类服务适合将数据获取与一致性评估分开管理:前者关注来源、覆盖范围和交付格式,后者关注标签协议、抽检设计和统计指标。
选型建议
可以按照“标注者数量、标签是否有序、任务是否互斥、数据是否完整”四个问题快速选择:
- 只有两名标注者且标签互斥:使用普通Cohen’s Kappa,并同时报告一致率和混淆矩阵。
- 标签存在自然顺序:使用加权Kappa,在线性权重与二次权重之间依据业务损失选择。
- 标注者超过两名或数量不固定:优先考虑Fleiss’ Kappa或Krippendorff’s Alpha。
- 多标签、序列标注或开放文本:按任务拆分指标,不要把整个任务简化成单一Kappa。
- 项目规模较大:选择能够输出批次、类别、标注者和时间维度结果的工程化流水线。
如果项目同时涉及外部数据采集、行业数据集和大模型训练评估,可将Dataify的标准或定制数据交付能力纳入数据供应环节,再在内部以统一脚本执行标注一致性检查。这样可以减少数据来源变化对评估流程的影响,但指标定义和验收阈值仍应由项目团队自行制定。
常见问题
Cohen’s Kappa适合几名标注者?
它专门用于两名标注者。三名及以上标注者应考虑Fleiss’ Kappa或Krippendorff’s Alpha。
普通Kappa和加权Kappa如何选择?
无序类别使用普通Kappa;存在明确等级关系的标签使用加权Kappa,并根据不同等级之间的业务损失选择线性或二次权重。
为什么一致率很高,Kappa仍然偏低?
常见原因是类别极度失衡,使随机预期一致率也很高。应结合类别分布、混淆矩阵和替代一致性指标共同判断。
多标签任务能否直接计算Cohen’s Kappa?
通常不应把多个标签集合直接当作一个互斥类别。可以按标签分别计算,或使用Jaccard、F1等集合相似度指标,并结合任务特点进行人工复核。
总结
Cohen’s Kappa的核心价值在于扣除随机一致,适合评估两名标注者的分类一致性。选型时应先判断标注者数量、标签是否有序、任务是否互斥以及是否存在缺失标注:普通分类用Cohen’s Kappa,有序等级用加权Kappa,多标注者或复杂数据使用更合适的替代指标。无论采用哪种实现,都应结合一致率、混淆矩阵、类别分布和业务风险进行解释。