Estoy experimentando con el gradiente de impulsar el algoritmo máquina a través de la caret
paquete en R.
El uso de un pequeño de admisiones de la universidad del conjunto de datos, me encontré con el siguiente código:
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)
y descubrí para mi sorpresa que el modelo de la precisión de validación cruzada disminuido en lugar de aumentar el número de iteraciones impulsando aumentó, alcanzando un mínimo de precisión de aproximadamente .59 en ~450,000 iteraciones.
No me incorrectamente implementar el GBM algoritmo?
EDITAR:
Siguiente Underminer la sugerencia, he de volver a ejecutar el anterior caret
código, sino que se centró en la ejecución de los 100 a 5.000 iteraciones impulsando:
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)
La gráfica resultante se muestra que la precisión en la realidad de los picos en casi .705 en ~1,800 iteraciones:
Lo curioso es que la exactitud no meseta en ~.70 pero disminuyeron siguiente 5.000 iteraciones.