R で f1 スコアを計算する方法 (例あり)


機械学習で分類モデルを使用する場合、モデルの品質を評価するために使用する一般的な指標はF1 スコアです。

このメトリクスは次のように計算されます。

F1 スコア= 2 * (適合率 * 再現率) / (適合率 + 再現率)

金:

  • 精度: 陽性予測の合計に対する正しい陽性予測
  • リマインダー: 実際の陽性合計に対する陽性予測の修正

たとえば、ロジスティック回帰モデルを使用して、400 人の異なる大学バスケットボール選手が NBA にドラフトされるかどうかを予測するとします。

次の混同行列は、モデルによって行われた予測を要約したものです。

モデルの F1 スコアを計算する方法は次のとおりです。

精度 = 真陽性 / (真陽性 + 偽陽性) = 120/ (120+70) = 0.63157

リコール = 真陽性 / (真陽性 + 偽陰性) = 120 / (120+40) = 0.75

F1 スコア = 2 * (.63157 * .75) / (.63157 + .75) = 。 6857

次の例は、R でこの正確なモデルの F1 スコアを計算する方法を示しています。

例: R での F1 スコアの計算

次のコードは、R のキャレットパッケージのconfusionMatrix()関数を使用して、特定のロジスティック回帰モデルの F1 スコア (およびその他のメトリクス) を計算する方法を示しています。

 library (caret)

#define vectors of actual values and predicted values
actual <- factor(rep(c(1, 0), times=c(160, 240)))
pred <- factor(rep(c(1, 0, 1, 0), times=c(120, 40, 70, 170)))

#create confusion matrix and calculate metrics related to confusion matrix
confusionMatrix(pred, actual, mode = " everything ", positive=" 1 ")

          Reference
Prediction 0 1
         0 170 40
         1 70 120
                                          
               Accuracy: 0.725           
                 95% CI: (0.6784, 0.7682)
    No Information Rate: 0.6             
    P-Value [Acc > NIR]: 1.176e-07       
                                          
                  Kappa: 0.4444          
                                          
 Mcnemar's Test P-Value: 0.005692        
                                          
            Sensitivity: 0.7500          
            Specificity: 0.7083          
         Pos Pred Value: 0.6316          
         Neg Pred Value: 0.8095          
              Accuracy: 0.6316          
                 Recall: 0.7500          
                     F1: 0.6857          
             Prevalence: 0.4000          
         Detection Rate: 0.3000          
   Detection Prevalence: 0.4750          
      Balanced Accuracy: 0.7292          
                                          
       'Positive' Class: 1

F1 スコアは0.6857であることがわかります。これは、以前に手動で計算した値と一致します。

: F1 スコアが出力に表示されるように、 mode=”everything”を指定する必要があります。

F1 スコアを使用して複数のモデルを比較する場合、F1 スコアが最も高いモデルは、観測値をクラスに最もよく分類できるモデルを表します。

たとえば、別のロジスティック回帰モデルをデータに適合させ、そのモデルの F1 スコアが 0.85 である場合、そのモデルの方が F1 スコアが高いため、より優れていると見なされます。

追加リソース

R でロジスティック回帰を実行する方法
F1 スコアと精度: どちらを使用するべきですか?

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です