2016-06-28 149 views
-1

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

任何想法如何获取该信息?

回答

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