可以使用 ROC 曲线和 AUC 值来确定最佳阈值。具体步骤如下:

  1. 利用模型预测测试数据集的概率值,将概率值从小到大排序。

  2. 从最小的概率值开始,依次将概率值作为阈值,将测试数据集分成两类:预测为 1 和预测为 0。

  3. 计算每个阈值下的真实正例率(True Positive Rate, TPR)和假正例率(False Positive Rate, FPR)。

  4. 以 TPR 为纵轴,FPR 为横轴,绘制 ROC 曲线。

  5. 计算 ROC 曲线下面积(Area Under Curve, AUC),AUC 越大,模型效果越好。

  6. 取 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'))
R语言:如何确定模型预测判定 0/1 的最佳阈值

原文地址: http://www.cveoy.top/t/topic/lMvT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录