मैं caret
आर में पैकेज के माध्यम से ढाल बूस्टिंग मशीन एल्गोरिदम का प्रयोग कर रहा हूं ।
एक छोटे से कॉलेज प्रवेश डेटासेट का उपयोग करते हुए, मैंने निम्नलिखित कोड चलाया:
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)
और मेरे आश्चर्य का विषय है कि मॉडल की क्रॉस-सत्यापन सटीकता में वृद्धि के बजाय कमी हुई क्योंकि पुनरावृत्तियों की संख्या में वृद्धि हुई, न्यूनतम सटीकता तक पहुँचने के बारे में .59 ~ 450,000 पुनरावृत्तियों पर पहुंच गया।
क्या मैंने GBM एल्गोरिथ्म को गलत तरीके से लागू किया था?
संपादित करें: अंडरमिनेर के सुझाव के बाद, मैंने उपरोक्त 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 पुनरावृत्तियों के बाद गिरावट आई।