-1

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

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

4

1 回答 1

3

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

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。这有助于避免过度拟合。

于 2016-06-29T07:11:32.137 回答