首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在建立梯度助推机(GBM)模型,但我不断得到不同的预测

我正在建立梯度助推机(GBM)模型,但我不断得到不同的预测
EN

Stack Overflow用户
提问于 2019-03-14 15:54:15
回答 1查看 475关注 0票数 1

我正在使用梯度助推机(GBM)算法进行信用风险建模,在对违约概率(PD)进行预测时,即使我的代码中有set.seed(1234),每次运行时我也会得到不同的PD。

是什么导致了这种情况的发生,以及我如何修复它。下面是我的代码:

代码语言:javascript
复制
fitControl <- trainControl(
  method = "repeatedcv",
  number = 5,
  repeats = 5)

modelLookup(model='gbm')

#Creating grid
grid <- expand.grid(n.trees=c(10,20,50,100,500,1000),shrinkage=c(0.01,0.05,0.1,0.5),n.minobsinnode
                    = c(3,5,10),interaction.depth=c(1,5,10))

#SetSeed
set.seed(1234)


# training the model
model_gbm<-train(trainSet[,predictors],trainSet[,outcomeName],method='gbm',trControl=fitControl,tuneGrid=grid)
# summarizing the model
print(model_gbm)

plot(model_gbm)

#using tune length
model_gbm<-train(trainSet[,predictors],trainSet[,outcomeName],method='gbm',trControl=fitControl,tuneLength=10)

print(model_gbm)

plot(model_gbm)

#Checking variable importance for GBM
#Variable Importance
library(gbm)
varImp(object=model_gbm, numTrees = 50)

#Plotting Varianle importance for GBM
plot(varImp(object=model_gbm),main="GBM - Variable Importance")

#Checking variable importance for RF
varImp(object=model_rf)

#Plotting Varianle importance for Random Forest
plot(varImp(object=model_rf),main="RF - Variable Importance")

#Checking variable importance for NNET
varImp(object=model_nnet)

#Plotting Variable importance for Neural Network
plot(varImp(object=model_nnet),main="NNET - Variable Importance")

#Checking variable importance for GLM
varImp(object=model_glm)

#Plotting Variable importance for GLM
plot(varImp(object=model_glm),main="GLM - Variable Importance")

#Predictions
predictions<-predict.train(object=model_gbm,testSet[,predictors],type="raw")
table(predictions)

confusionMatrix(predictions,testSet[,outcomeName])

PD <- predict.train(object=model_gbm,credit_transformed[,predictors],type="prob")
EN

回答 1

Stack Overflow用户

发布于 2019-03-14 16:06:25

我假设您使用的是来自carettrain()。我建议您使用同一个包中更复杂但可自定义的trainControl()。正如您在?trainControl中看到的,参数seeds是:

一组可选的整数,用于在每次重采样迭代时设置种子。当模型并行运行时,这很有用。Na值将阻止在工作进程中设置种子,而null值将使用随机的整数集设置种子。或者,也可以使用列表。列表应具有B+1元素,其中B是重采样数,除非方法是"boot632“,在这种情况下,B是重采样数加1。列表的前B元素应是长度为M的整数向量,其中M是要评估的模型数。列表的最后一个元素只需要是一个整数(对于最终模型)。请参阅下面的示例部分和详细信息部分。

修复seeds应该可以做到这一点。请下次尝试提供与您的数据类似的dput o,以便可重现。最好的!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55157420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档