Tôi đang thử nghiệm thuật toán máy tăng cường độ dốc thông qua caret
gói trong R.
Sử dụng một bộ dữ liệu tuyển sinh đại học nhỏ, tôi đã chạy đoạn mã sau:
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)
và thật ngạc nhiên khi độ chính xác xác thực chéo của mô hình giảm thay vì tăng khi số lần lặp tăng cường tăng lên, đạt độ chính xác tối thiểu khoảng 0,59 tại ~ 450.000 lần lặp.
Tôi đã thực hiện không chính xác thuật toán GBM?
EDIT: Theo đề xuất của Underminer, tôi đã chạy lại caret
đoạn mã trên nhưng tập trung vào việc chạy 100 đến 5.000 lần lặp tăng cường:
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)
Biểu đồ thu được cho thấy độ chính xác thực sự đạt cực đại ở mức gần 0,705 tại ~ 1.800 lần lặp:
Điều gây tò mò là độ chính xác không cao nguyên ở mức ~ .70 mà thay vào đó đã giảm sau 5.000 lần lặp.