gpt4 book ai didi

r - 绘制引导插入符号模型的 ROC 曲线

转载 作者:行者123 更新时间:2023-12-01 22:53:50 26 4
gpt4 key购买 nike

我有一个如下所示的模型:

library(mlbench)
data(Sonar)

library(caret)
set.seed(998)

my_data <- Sonar

fitControl <-
trainControl(
method = "boot632",
number = 10,
classProbs = T,
savePredictions = T,
summaryFunction = twoClassSummary
)


model <- train(
Class ~ .,
data = my_data,
method = "xgbTree",
trControl = fitControl,
metric = "ROC"
)

如何绘制该模型的 ROC 曲线?据我了解,必须保存概率(我在 trainControl 中这样做),但由于 Bootstrap 使用随机采样来生成“测试”集,我不确定插入符号如何计算 ROC 值以及如何生成曲线。

为了隔离最佳性能参数的类概率,我正在这样做:

for (a in 1:length(model$bestTune))       
{model$pred <-
model$pred[model$pred[, paste(colnames(model$bestTune)[a])] == model$bestTune[1, a], ]}

请指教。

谢谢!

最佳答案

首先解释一下:

如果您不打算检查每个重新样本中每个样本的每个可能的超参数组合的预测方式,您可以将 trainControl 中的 savePredictions = "final" 设置为节省空间:

fitControl <-
trainControl(
method = "boot632",
number = 10,
classProbs = T,
savePredictions = "final",
summaryFunction = twoClassSummary
)

运行模型后:

model <- train(
Class ~ .,
data = my_data,
method = "xgbTree",
trControl = fitControl,
metric = "ROC"
)

感兴趣的结果位于model$pred

在这里可以查看每次重新采样测试了多少个样本(我设置了25次重复)

nrow(model$pred[model$pred$Resample == "Resample01",]) 
#83

插入符始终提供模型构建中未使用的行的预测。

nrow(my_data) #208

83/208 对于 boot632 的测试示例有意义

现在构建 ROC 曲线。您可以在此处选择多个选项:

-平均每个样本的概率并使用它(这对于 CV 来说很常见,因为所有样本都重复相同的次数,但也可以在启动时完成)。

-按原样绘制所有内容,而不进行平均

-绘制每次重新采样的 ROC。

我将向您展示第二种方法:

创建类别概率和真实结果的数据框架:

for_lift = data.frame(Class = model$pred$obs,  xgbTree = model$pred$R)

绘制 ROC:

pROC::plot.roc(pROC::roc(response = for_lift$Class,
predictor = for_lift$xgbTree,
levels = c("M", "R")),
lwd=1.5)

enter image description here

您也可以使用 ggplot 来完成此操作,为此我发现使用插入符函数 lift

lift_obj = lift(Class ~ xgbTree, data = for_lift, class = "R")

指定使用哪个类的概率^。

library(ggplot2)

ggplot(lift_obj$data)+
geom_line(aes(1-Sp , Sn, color = liftModelVar))+
scale_color_discrete(guide = guide_legend(title = "method"))

enter image description here

关于r - 绘制引导插入符号模型的 ROC 曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48476452/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com