GBM交叉验证

时间:2016-06-28 21:06:05

标签: r cross-validation gbm

我正在尝试使用R的{​​{1}}回归模型。 我想计算交叉验证预测响应值和真实响应值之间的确定系数(R平方)。但是,gbm的{​​{1}}值仅提供1 - cv.fitted的预测响应值。所以为了得到我想要的东西,我需要找到哪些观察结果与gbm.object值相对应。

知道如何获取这些信息吗?

1 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您可以使用预测功能轻松获得模型预测。

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参数进行调整。这有助于避免过度拟合。