>source

GBM (그라디언트 부스팅 머신) 알고리즘을 사용하여 신용 위험 모델링을 수행하고 있으며 기본 확률 (PD)을 예측하는 데 set.seed(1234) 가 있어도 각 실행에 대해 다른 PD를 계속 얻습니다.  내 코드에서.

이 문제를 일으킬 수있는 원인과 해결 방법은 무엇입니까? 아래 코드는 다음과 같습니다.

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")

  • 답변 # 1

    train() 를 사용한다고 가정합니다.   caret 에서 . 더 복잡하지만 사용자 정의 가능한 trainControl() 를 사용하는 것이 좋습니다.  같은 패키지에서. 당신이 ?trainControl 에서 볼 수 있듯이 매개 변수 seeds  입니다 :

    와이즈 비즈

    고정

    an optional set of integers that will be used to set the seed at each resampling iteration. This is useful when the models are run in parallel. A value of NA will stop the seed from being set within the worker processes while a value of NULL will set the seeds using a random set of integers. Alternatively, a list can be used. The list should have B+1 elements where B is the number of resamples, unless method is "boot632" in which case B is the number of resamples plus 1. The first B elements of the list should be vectors of integers of length M where M is the number of models being evaluated. The last element of the list only needs to be a single integer (for the final model). See the Examples section below and the Details section.

     트릭을해야합니다. 다음에 seeds 를 제공하십시오  o 재현 할 수 있도록 데이터와 유사합니다. 최고!

    dput

  • 이전 angular6 - 각도 6을 사용하여 HTML 요소에 동적 함수를 바인딩하는 방법은 무엇입니까?
  • 다음 jquery - (Javascript-HTML) TD에 공식 변수를 넣습니다