基于混淆矩阵的Kappa系数的计算

1. kappa系数是什么

  • Kappa系数是一个用于一致性检验的指标,也可以用于衡量分类的效果。
  • 因为对于分类问题,所谓一致性就是模型预测结果和实际分类结果是否一致。
  • kappa系数的计算是基于混淆矩阵的,取值为-1到1之间,通常大于0。值越大代表分类结果越正确。

2. kappa系数的计算

  • 基于混淆矩阵的kappa系数计算公式如下:
  • 其中:

  • 为什么使用kappa系数:

    • 分类问题中,最常见的评价指标是acc,它能够直接反映分正确的比例,同时计算非常简单。但是实际的分类问题种,各个类别的样本数量往往不太平衡
    • 在这种不平衡数据集上如不加以调整,模型很容易偏向大类别而放弃小类别(例如:正负样本比例1:9,直接全部预测为负,acc也有90%。但正样本就完全被“抛弃”了)。此时整体acc挺高,但是部分类别完全不能被召回

    • 这时需要一种能够惩罚模型的“偏向性”的指标来代替acc。而根据kappa的计算公式,越不平衡的混淆矩阵, $p_e$越高,kappa值就越低,正好能够给“偏向性”强的模型打低分。

  • python实现kappa系数的计算:

1
2
3
4
5
6
7
8
import numpy as np
def kappa(confusion_matrix):
pe_rows = np.sum(confusion_matrix, axis=0)
pe_cols = np.sum(confusion_matrix, axis=1)
sum_total = sum(pe_cols)
pe = np.dot(pe_rows, pe_cols) / float(sum_total ** 2)
po = np.trace(confusion_matrix) / float(sum_total)
return (po - pe) / (1 - pe)
-------------The End-------------
谢谢大锅请我喝杯阔乐~