web-dev-qa-db-ja.com

Rの混同行列の精度と精度を計算する

Rの混同行列の精度と精度を計算するために利用できるツール/ Rパッケージはありますか?

式とデータ構造はこちら

11
Ajay Singh

はい、Rの精度と精度は 混同行列 で計算できます。 Caret package を使用します。

次に例を示します。

lvs <- c("normal", "abnormal")
truth <- factor(rep(lvs, times = c(86, 258)),
                levels = rev(lvs))
pred <- factor(
               c(
                 rep(lvs, times = c(54, 32)),
                 rep(lvs, times = c(27, 231))),               
               levels = rev(lvs))

xtab <- table(pred, truth)
# load Caret package for computing Confusion matrix
library(caret) 
confusionMatrix(xtab)

そして、xtabの混同行列は次のようになります:

Confusion Matrix and Statistics

          truth
pred       abnormal normal
  abnormal      231     32
  normal         27     54

               Accuracy : 0.8285
                 95% CI : (0.7844, 0.8668)
    No Information Rate : 0.75
    P-Value [Acc > NIR] : 0.0003097

                  Kappa : 0.5336
 Mcnemar's Test P-Value : 0.6025370

            Sensitivity : 0.8953
            Specificity : 0.6279
         Pos Pred Value : 0.8783
         Neg Pred Value : 0.6667
             Prevalence : 0.7500
         Detection Rate : 0.6715
   Detection Prevalence : 0.7645

       'Positive' Class : abnormal

だから、ここにあなたが望むすべてがあります。

29
Nishu Tayal

@過酷なトリベディ

byClassを使用すると、precisionおよびrecall概要から。 PPVは精度です。感度は想起です。 https://en.wikipedia.org/wiki/Precision_and_recall

library(caret)

result <- confusionMatrix(prediction, truth)
precision <- result$byClass['Pos Pred Value']    
recall <- result$byClass['Sensitivity']

ここでは、精度を引き出してf-measureを計算するためにリコールしたいと思います。

f_measure <- 2 * ((precision * recall) / (precision + recall))

健全性チェック用のこの便利なオンライン計算機も見つけました。 http://www.marcovanetti.com/pages/cfmatrix/?noc=2

-bg

12
BGA

他の誰かが探している場合:上記のBGAの回答のおかげで、confusionMatrix()出力の読み方が明確になり、F [メジャー]をresult$ByClass出力からF1としてすぐに取得できることに気付きました。

 result$byClass
         Sensitivity          Specificity       Pos Pred Value       Neg Pred Value 
           0.9337442            0.8130531            0.8776249            0.8952497 
           Precision               Recall                   F1           Prevalence 
           0.8776249            0.9337442            0.9048152            0.5894641 
      Detection Rate Detection Prevalence    Balanced Accuracy 
           0.5504087            0.6271571            0.8733987 

上記のコメントと同じ式で以下のf_measureを計算すると、0.9048152も得られます。

results$overallから精度を取得することもできます

result$overall
      Accuracy          Kappa  AccuracyLower  AccuracyUpper   AccuracyNull AccuracyPValue 
  8.841962e-01   7.573509e-01   8.743763e-01   8.935033e-01   5.894641e-01   0.000000e+00 
 McnemarPValue 
  2.745521e-13

または、resultsの平衡型精度を使用します

0
Anna DW

誰かが私と同じ問題を抱えている場合、caretのメソッドconfusionMatrix()は確かに感度/特異性を提供します。 ただし、タイプtrainのオブジェクトが供給された場合、別のメソッドconfusionMatrix.train()が実行されますnotはこの情報を持っています。

解決策は、dataおよびreferencetrainオブジェクト(つまり、それぞれ_$pred$pred$_および_$pred$obs_)からconfusionMatrix() 方法。

0
ecksc