2016-06-28 9 views
-1

Я пытаюсь использовать модель регрессии Rgbm. Я хочу вычислить коэффициент определения (квадрат R) между прогнозируемыми значениями ответа перекрестной проверки и истинными значениями ответа. Однако значения cv.fittedgbm.object обеспечивают только прогнозируемые значения отклика для 1- train.fraction. Поэтому, чтобы получить то, что я хочу, мне нужно найти, какое из наблюдений соответствует значениям cv.fitted.GBM cross validation

Любая идея, как получить эту информацию?

ответ

1

Вы можете использовать функцию прогнозирования, чтобы легко получить предсказания модели, если я правильно понимаю ваш вопрос.

dat <- data.frame(y = runif(1000), x=rnorm(1000)) 

gbmMod <- gbm::gbm(y~x, data=dat, n.trees=5000, cv.folds=0) 

summary(lm(predict(gbmMod, n.trees=5000) ~ dat$y))$adj.r.squared 

Но разве мы не должны держать данные в стороне и оценивать точность модели на тестовых данных? Это будет соответствовать следующему, где я разделения данных в обучающем наборе (70%) и набора тестирования (30%):

inds <- sample(1:nrow(dat), 0.7*nrow(dat)) 

train <- dat[inds, ] 
test <- dat[-inds, ] 

gbmMod2 <- gbm::gbm(y~x, data=train, n.trees=5000) 

preds <- predict(gbmMod2, newdata = test, n.trees=5000) 

summary(lm(preds ~ test[,1]))$adj.r.squared 

Стоит также отметить, что количество деревьев в gbm могут быть настроены используя функцию gbm.perf и аргумент cv.folds функции gbm. Это помогает избежать переобучения.

 Смежные вопросы

  • Нет связанных вопросов^_^