分类中 Kappa 统计值背后的直觉是什么

机器算法验证 机器学习 分类 大车 直觉 科恩斯-卡帕
2022-03-11 17:43:27

我了解 Kappa 统计值背后的公式以及如何从混淆矩阵中计算 O 和 E 值。

我的问题是这个措施背后的直觉是什么?为什么它对于给定的数据集工作得这么好,为什么它是一个很好的基准度量,用于比较不同分类器在不同数据上的性能

1个回答

它通常描述的方式是偶然预期的协议正确的协议量但是,从技术上讲,它不是偶然更正的,而是会报告协议是否大于偶然。尽管 Kappa 统计量被广泛使用,但我相信它最常用于根据不平衡数据(即类分布不等价)构建的预测模型。你说你了解统计背后的数学,所以我不会在这里讨论它。让我们看一个使用 R 的例子。

# build a starting dataframe, will change shortly
df <- data.frame(act = rep(LETTERS[1:2], each=10), pred = rep(sample(LETTERS[1:2], 20, replace=T)))

# create working frequency table
tab <- table(df)

# A balanced dataset
tab[1,1] <- 45
tab[1,2] <- 5
tab[2,1] <- 5
tab[2,2] <- 45

#truncated output
caret::confusionMatrix(tab)
> caret::confusionMatrix(tab)
Confusion Matrix and Statistics

   pred
act  A  B
  A 45  5
  B  5 45

 Accuracy : 0.9            
 ...                              
 Kappa : 0.8            
 ...    

# An unbalanced datasest
tab[1,1] <- 85
tab[1,2] <- 5
tab[2,1] <- 5
tab[2,2] <- 5

caret::confusionMatrix(tab)
> caret::confusionMatrix(tab)
Confusion Matrix and Statistics

   pred
act  A  B
  A 85  5
  B  5  5

 Accuracy : 0.9            
 ...                              
 Kappa : 0.444            
 ...    

如您所见,您可以使用两个不同的数据集获得完全相同的准确度,但 Kappa 非常不同。这里的想法是,对于不平衡的数据,您更有可能随机对不太常见的组进行分类,因此您应该在评估模型时考虑到这一点。如果您的数据集是平衡的,那么您的性能指标将具有更大的灵活性。重要的是要记住,Kappa 并不总是最好的指标。这里报告了 Kappa 的一些优点和缺点您应该始终牢记其他方法,例如 AUROC(接收器操作曲线下的区域),并为您的数据做出最明智的决定。