R 带插入符号包的GBM分类
当使用caret的训练函数拟合GBM分类模型时,函数predictionFunction将概率预测转换为基于概率阈值0.5的因子R 带插入符号包的GBM分类,r,r-caret,R,R Caret,当使用caret的训练函数拟合GBM分类模型时,函数predictionFunction将概率预测转换为基于概率阈值0.5的因子 out <- ifelse(gbmProb >= .5, modelFit$obsLevels[1], modelFit$obsLevels[2]) ## to correspond to gbmClasses definition above out=.5,modelFit$obsLevels[1],modelFit$obsLe
out <- ifelse(gbmProb >= .5, modelFit$obsLevels[1], modelFit$obsLevels[2])
## to correspond to gbmClasses definition above
out=.5,modelFit$obsLevels[1],modelFit$obsLevels[2])
##符合上述gbmClasses定义
如果用户试图最大化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)
库(插入符号)
图书馆(mlbench)
数据(声纳)
控制键
“因为无论使用什么摘要函数,都会传递已经是二进制的预测”
情况绝对不是这样
它不能使用这些类来计算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)
库(插入符号)
图书馆(mlbench)
数据(声纳)
ctrl谢谢,Max。我没有意识到因子预测和类别概率都包含在summary函数的data
参数中,这允许计算完整的AUROC和0.5阈值敏感性/特异性。另一个细节。。。类别概率被添加为不同的列(每个类别一列),因此确保类别是有效的R名称(例如,非“0”
,“1”
等)。这也是一个基于类概率值重新定义类的示例,可能会有所帮助。谢谢,Max。我没有意识到summary函数的data
参数中同时包含了因子预测和类概率,这允许计算完整的AUROC和0.5阈值敏感性/特异性。。。类别概率被添加为不同的列(每个类别一列),因此确保类别是有效的R名称(例如,非“0”
,“1”
等)。这也是一个基于类概率值重新定义类的示例,可能会有所帮助。