caret
R 의 패키지를 통해 그라디언트 부스팅 머신 알고리즘을 실험하고 있습니다 .
소규모 대학 입학 데이터 세트를 사용하여 다음 코드를 실행했습니다.
library(caret)
### Load admissions dataset. ###
mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")
### Create yes/no levels for admission. ###
mydata$admit_factor[mydata$admit==0] <- "no"
mydata$admit_factor[mydata$admit==1] <- "yes"
### Gradient boosting machine algorithm. ###
set.seed(123)
fitControl <- trainControl(method = 'cv', number = 5, summaryFunction=defaultSummary)
grid <- expand.grid(n.trees = seq(5000,1000000,5000), interaction.depth = 2, shrinkage = .001, n.minobsinnode = 20)
fit.gbm <- train(as.factor(admit_factor) ~ . - admit, data=mydata, method = 'gbm', trControl=fitControl, tuneGrid=grid, metric='Accuracy')
plot(fit.gbm)
놀랍게도 부스팅 반복 횟수가 증가함에 따라 모델의 교차 검증 정확도가 증가 하지 않고 ~ 450,000 반복에서 약 .59의 최소 정확도에 도달했습니다.
GBM 알고리즘을 잘못 구현 했습니까?
편집 : Underminer의 제안에 따라 위 caret
코드를 다시 실행했지만 100 ~ 5,000 부스팅 반복 실행에 중점을 두었습니다.
set.seed(123)
fitControl <- trainControl(method = 'cv', number = 5, summaryFunction=defaultSummary)
grid <- expand.grid(n.trees = seq(100,5000,100), interaction.depth = 2, shrinkage = .001, n.minobsinnode = 20)
fit.gbm <- train(as.factor(admit_factor) ~ . - admit, data=mydata, method = 'gbm', trControl=fitControl, tuneGrid=grid, metric='Accuracy')
plot(fit.gbm)
결과 플롯은 정확도가 ~ 1,800 회 반복에서 거의 .705로 실제로 최고점에 도달 함을 보여줍니다.
궁금한 점은 정확도가 ~ .70에서 정점에 도달하지 않고 5,000 회 반복하여 감소한다는 것입니다.