我正在尝试使用R
的{{1}}回归模型。
我想计算交叉验证预测响应值和真实响应值之间的确定系数(R平方)。但是,gbm
的{{1}}值仅提供1 - cv.fitted
的预测响应值。所以为了得到我想要的东西,我需要找到哪些观察结果与gbm.object
值相对应。
知道如何获取这些信息吗?
答案 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
参数进行调整。这有助于避免过度拟合。