R语言:如何确定模型预测判定 0/1 的最佳阈值
可以使用 ROC 曲线和 AUC 值来确定最佳阈值。具体步骤如下:
-
利用模型预测测试数据集的概率值,将概率值从小到大排序。
-
从最小的概率值开始,依次将概率值作为阈值,将测试数据集分成两类:预测为 1 和预测为 0。
-
计算每个阈值下的真实正例率(True Positive Rate, TPR)和假正例率(False Positive Rate, FPR)。
-
以 TPR 为纵轴,FPR 为横轴,绘制 ROC 曲线。
-
计算 ROC 曲线下面积(Area Under Curve, AUC),AUC 越大,模型效果越好。
-
取 ROC 曲线上最靠近左上角的点对应的阈值作为最佳阈值。
以下是具体的 R 代码实现:
# 假设模型为 model3,测试数据集为 test
library(pROC)
# 预测测试数据集的概率值
pred_prob <- predict(model3, newdata = test, type = 'response')
# 计算 ROC 曲线和 AUC 值
roc_obj <- roc(test$y, pred_prob)
auc_value <- auc(roc_obj)
# 绘制 ROC 曲线
plot(roc_obj, main = 'ROC Curve')
# 获取最佳阈值
coords <- coords(roc_obj, 'best')
best_threshold <- coords$threshold
# 打印 AUC 值和最佳阈值
cat(paste('AUC value:', auc_value, '\n'))
cat(paste('Best threshold:', best_threshold, '\n'))
原文地址: http://www.cveoy.top/t/topic/lMvT 著作权归作者所有。请勿转载和采集!