繁体   English   中英

带有插入符号包的GBM分类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM