2016-06-28 191 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函數。這有助於避免過度配合。