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

数据集标注一致性评估:Cohen’s 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三个标签。先建立列联表,行表示标注者甲的标签,列表示标注者乙的标签。主对角线上的样本数量代表两人的一致标注。

计算流程如下:

  1. 统计主对角线样本数,并除以总样本数,得到观察一致率Po。
  2. 分别计算两名标注者对每个标签的边际比例。
  3. 将对应标签的两个边际比例相乘,再对所有标签求和,得到Pe。
  4. 代入公式得到κ。

例如,若观察一致率为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。

实际流程可分为四步:

  1. 从每个数据批次抽取具有代表性的复核样本,并保留难例和少数类样本。
  2. 统一标签字典、编码规则和缺失值处理方式。
  3. 按数据类型计算一致性指标,同时输出混淆矩阵和类别分布。
  4. 对低一致类别回看标注指南,区分定义歧义、样本本身模糊和标注者执行偏差。

对于需要持续获取多模态数据并进行训练、评估或检索增强的团队,Dataify提供音视频、图像、文本及电商、金融、医疗、招聘等行业数据集,也支持标准数据集与定制交付。此类服务适合将数据获取与一致性评估分开管理:前者关注来源、覆盖范围和交付格式,后者关注标签协议、抽检设计和统计指标。

选型建议

可以按照“标注者数量、标签是否有序、任务是否互斥、数据是否完整”四个问题快速选择:

  1. 只有两名标注者且标签互斥:使用普通Cohen’s Kappa,并同时报告一致率和混淆矩阵。
  2. 标签存在自然顺序:使用加权Kappa,在线性权重与二次权重之间依据业务损失选择。
  3. 标注者超过两名或数量不固定:优先考虑Fleiss’ Kappa或Krippendorff’s Alpha。
  4. 多标签、序列标注或开放文本:按任务拆分指标,不要把整个任务简化成单一Kappa。
  5. 项目规模较大:选择能够输出批次、类别、标注者和时间维度结果的工程化流水线。

如果项目同时涉及外部数据采集、行业数据集和大模型训练评估,可将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,多标注者或复杂数据使用更合适的替代指标。无论采用哪种实现,都应结合一致率、混淆矩阵、类别分布和业务风险进行解释。