如何解释R中的混淆矩阵

问题描述 投票:0回答:1

我正在使用混淆矩阵,并且对输出有非常基本的了解。但是,由于我不熟悉R和R,因此详细说明常常使它听起来更加复杂。我有以下输出,我只是想知道是否可以向我解释

  • 矩阵中的TP,TN,FP和FN是什么?
  • kappa代表什么?
  • 准确度和kappa有什么区别?

    > confusionMatrix(predRF, loanTest2$grade)
    
    Confusion Matrix and Statistics
    
              Reference
    Prediction     A    B    C    D    E    F    G
     A          2298  174   63   29   26   12    3
     B           264 3245  301   65   16    3    3
     C             5  193 2958  399   61   15    4
     D             1    1   39 1074  236   33    6
     E             0    0    2   32  249   97   30
     F             0    0    0    0    8   21   11
     G             0    0    0    0    0    0    0
    
    Overall Statistics
    
               Accuracy : 0.822          
                 95% CI : (0.815, 0.8288)
    No Information Rate : 0.3017         
    P-Value [Acc > NIR] : < 2.2e-16      
    
                   Kappa: 0.7635         
    
                         Class: A Class: B Class: C Class: D Class: E Class: F Class: G
    Sensitivity            0.8949   0.8981   0.8796  0.67167  0.41779 0.116022 0.000000
    Specificity            0.9674   0.9220   0.9214  0.96955  0.98585 0.998389 1.000000
    Pos Pred Value         0.8821   0.8327   0.8138  0.77266  0.60732 0.525000      NaN
    Neg Pred Value         0.9712   0.9545   0.9515  0.95041  0.97000 0.986596 0.995241
    Prevalence             0.2144   0.3017   0.2808  0.13351  0.04976 0.015112 0.004759
    Detection Rate         0.1919   0.2709   0.2470  0.08967  0.02079 0.001753 0.000000
    Detection Prevalence   0.2175   0.3254   0.3035  0.11606  0.03423 0.003340 0.000000
    Balanced Accuracy      0.9311   0.9101   0.9005  0.82061  0.70182 0.557206 0.500000
    
r rstudio random-forest r-caret confusion-matrix
1个回答
0
投票

假设这是您的混淆矩阵:

tab = structure(list(A = c(2298L, 264L, 5L, 1L, 0L, 0L, 0L), B = c(174L, 
3245L, 193L, 1L, 0L, 0L, 0L), C = c(63L, 301L, 2958L, 39L, 2L, 
0L, 0L), D = c(29L, 65L, 399L, 1074L, 32L, 0L, 0L), E = c(26L, 
16L, 61L, 236L, 249L, 8L, 0L), F = c(12L, 3L, 15L, 33L, 97L, 
21L, 0L), G = c(3L, 3L, 4L, 6L, 30L, 11L, 0L)), class = "data.frame", row.names = c("A", 
"B", "C", "D", "E", "F", "G"))
  1. 矩阵中的TP,TN,FP和FN是什么?

[您需要按每个标签,例如对于A类,这些术语在关于A的预测方面是有意义的。

A_confusion_matrix = cbind(c(x[1,1],sum(x[-1,1])),c(sum(x[1,-1]),sum(x[2:7,2:7])))

     [,1] [,2]
[1,] 2298  307
[2,]  270 9102

基本上计算出上述数值的方法是将所有的预测和参考错误地结合在一起,而不是A。

这些数字代表:

A_confusion_matrix [1,1]是预测为A且实际为A的数字->TP

A_confusion_matrix [1,2]是预测为A而不是A的数字-> FP

A_confusion_matrix [2,1]是不是预测为A而是A的数字-> FN

A_confusion_matrix [2,2]是无法预测的数字AA-> TN

[例如,您可以从此处计算A的灵敏度,TP /(TP + FN)= 2298 /(2298 + 270)= 0.8948598

  1. kappa代表什么?

它是cohen's kappa,基本上是一种度量,用于衡量您的预测与随机猜测/分配相比有多好。

enter image description here

  1. 精度和kappa有什么区别?

您可以从上面的公式中看到,当您的数据集不平衡时,它将产生巨大的变化。例如,如果90%的标签属于一个类别,则模型预测所有内容都属于该类别,那么您将获得90%的准确性。但是,如果您使用科恩的kappa,则p预期为0.9,因此您需要比p更好才能显示出好分数。

© www.soinside.com 2019 - 2024. All rights reserved.