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 スコアと精度: どちらを使用するべきですか?