2016-06-28 10 views
-1

Rの回帰モデルgbmを使用しようとしています。 クロス検証予測応答値と真の応答値との間の決定係数(R 2乗)を計算したい。しかしながら、gbm.objectcv.fittedの値は、1-の予測された応答値のみを提供する。だから、私が望むものを得るためには、どの観測値が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関数とgbm関数の引数をcv.foldsとします。これは過適合を避けるのに役立ちます。

関連する問題