如何在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 中caret包中的fusionMatrix()函数来计算给定逻辑回归模型的 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 。这与我们之前手动计算的值相符。

注意:我们需要指定mode=”everything”以便 F1 分数显示在输出中。

如果使用 F1 分数来比较多个模型,则具有最高 F1 分数的模型代表最能够将观察结果分类的模型。

例如,如果您将另一个逻辑回归模型拟合到数据,并且该模型的 F1 分数为 0.85,则该模型将被认为更好,因为它具有更高的 F1 分数。

其他资源

如何在 R 中执行逻辑回归
F1 分数与准确度:您应该使用哪个?

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注