[英]GBM classification with the caret package
当使用插入符号的训练函数拟合GBM分类模型时,函数predictFunction根据概率阈值0.5将概率预测转换为因子。
out <- ifelse(gbmProb >= .5, modelFit$obsLevels[1], modelFit$obsLevels[2])
## to correspond to gbmClasses definition above
如果用户试图最大化ROC曲线(AUROC)下的面积,则此转换似乎为时过早。 尽管灵敏度和特异性对应于单个概率阈值(因此需要进行因子预测),但我还是更喜欢使用gbmPredict输出的原始概率来计算AUROC。 以我的经验,我很少关心分类模型的校准。 我希望提供尽可能多信息的模型,而不考虑模型预测“ 1”与“ 0”的概率阈值。 是否可以将原始概率强加到AUROC计算中? 这似乎很棘手,因为无论使用什么汇总功能,都将传递已经为二进制的预测。
“由于使用了任何汇总函数,都会传递已经是二进制的预测”
绝对不是这样。
它不能使用这些类来计算ROC曲线(除非您竭尽所能)。 请参阅下面的注释。
train
可以预测作为因素的类(使用您显示的内部代码)和/或类概率。
例如,此代码将计算类概率,并使用它们来获得ROC曲线下的面积:
library(caret)
library(mlbench)
data(Sonar)
ctrl <- trainControl(method = "cv",
summaryFunction = twoClassSummary,
classProbs = TRUE)
set.seed(1)
gbmTune <- train(Class ~ ., data = Sonar,
method = "gbm",
metric = "ROC",
verbose = FALSE,
trControl = ctrl)
实际上,如果省略classProbs = TRUE
位,则会得到错误:
train()'s use of ROC codes requires class probabilities. See the classProbs option of trainControl()
马克斯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.