Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 带插入符号包的GBM分类_R_R Caret - Fatal编程技术网

R 带插入符号包的GBM分类

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

当使用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$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”
等)。这也是一个基于类概率值重新定义类的示例,可能会有所帮助。