Как рассчитать балл F1 в R (включая пример)


При использовании моделей классификации в машинном обучении общей метрикой, которую мы используем для оценки качества модели, является F1 Score .

Этот показатель рассчитывается как:

Оценка F1 = 2 * (Точность * Отзыв) / (Точность + Отзыв)

куда:

  • Точность : правильные положительные прогнозы по отношению к общему количеству положительных прогнозов.
  • Вспомнить : исправить положительные прогнозы по отношению к общему количеству фактических положительных результатов.

Например, предположим, что мы используем модель логистической регрессии, чтобы предсказать, попадут ли 400 разных баскетболистов из колледжа в НБА.

Следующая матрица путаницы суммирует прогнозы, сделанные моделью:

Вот как рассчитать оценку F1 модели:

Точность = истинный положительный результат / (истинный положительный результат + ложный положительный результат) = 120/(120+70) = 0,63157

Отзыв = истинно положительный / (истинно положительный + ложноотрицательный) = 120 / (120 + 40) = 0,75

Оценка F1 = 2 * (0,63157 * 0,75) / (0,63157 + 0,75) =.6857

В следующем примере показано, как рассчитать оценку F1 для этой точной модели в R.

Пример: расчет F1 Score в R

В следующем коде показано, как использовать функцию путаницыMatrix() из пакета вставки в R для вычисления оценки 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 
 Precision : 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 отображался на выходе.

Если вы используете оценку F1 для сравнения нескольких моделей, модель с наивысшей оценкой F1 представляет собой модель, которая лучше всего способна классифицировать наблюдения по классам.

Например, если вы подгоняете другую модель логистической регрессии к данным, и эта модель имеет показатель F1 0,85, эта модель будет считаться лучшей, поскольку она имеет более высокий показатель F1.

Дополнительные ресурсы

Как выполнить логистическую регрессию в R
Оценка F1 против точности: что использовать?