R语言Caret包逻辑回归调整概率阈值提升特异性方法咨询
R语言Caret包逻辑回归自定义分类阈值操作方法
你当前使用默认predict输出分类结果时,Caret默认使用0.5作为概率切分阈值,要自定义阈值只需先输出预测概率,再按阈值自行判定分类即可,具体操作如下:
第一步:输出测试集预测概率
将predict函数的type参数设置为"prob",即可得到每个样本对应“No”、“Yes”两类的预测概率:
# 输出测试集各类别预测概率 pred_probs <- predict(model_default, newdata = test_default, type = "prob")
第二步:按自定义阈值生成分类结果
Default数据集的正类为default变量的"Yes"水平,只需按阈值判断Yes类的概率是否达标即可生成对应分类,注意生成分类结果时要和真实标签的因子水平保持一致,避免混淆矩阵计算错误。
阈值设为0.2的示例代码
# 0.2阈值:Yes类概率>0.2则判定为Yes,否则为No pred_0.2 <- factor(ifelse(pred_probs$Yes > 0.2, "Yes", "No"), levels = levels(test_default$default)) # 输出对应混淆矩阵与指标 confusionMatrix(pred_0.2, test_default$default)
阈值设为0.7的示例代码
# 0.7阈值:Yes类概率>0.7则判定为Yes,否则为No pred_0.7 <- factor(ifelse(pred_probs$Yes > 0.7, "Yes", "No"), levels = levels(test_default$default)) # 输出对应混淆矩阵与指标 confusionMatrix(pred_0.7, test_default$default)
阈值调整的指标变化规律
- 阈值从0.5下调到0.2:被判定为
Yes的样本会增加,灵敏度上升,特异性会比当前27%更低 - 阈值从0.5上调到0.7:被判定为
Yes的样本会减少,特异性会明显上升,灵敏度会下降
内容的提问来源于stack exchange,提问作者Abhishek Mishra
相关产品推荐
相关产品推荐

