我了解 Kappa 统计值背后的公式以及如何从混淆矩阵中计算 O 和 E 值。
我的问题是这个措施背后的直觉是什么?为什么它对于给定的数据集工作得这么好,为什么它是一个很好的基准度量,用于比较不同分类器在不同数据上的性能
我了解 Kappa 统计值背后的公式以及如何从混淆矩阵中计算 O 和 E 值。
我的问题是这个措施背后的直觉是什么?为什么它对于给定的数据集工作得这么好,为什么它是一个很好的基准度量,用于比较不同分类器在不同数据上的性能
它通常描述的方式是偶然预期的协议正确的协议量。但是,从技术上讲,它不是偶然更正的,而是会报告协议是否大于偶然。尽管 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(接收器操作曲线下的区域),并为您的数据做出最明智的决定。