如何在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 分数与准确度:您应该使用哪个?