2016-05-16 7 views
1

予測回帰モデルを構築するのにgbmを使用しています。私は列車とテストセットを持っています(あらかじめ定義されており、は無作為に選ばれました)。以下はコードの概要です。gbmでテスト予測を再現できません

私は列車データで約600行、テストデータで約150行あります。私は彼らが非常に少ないが、まだ知っている。どういうわけか

train <- .... 
test <- .... 

set.seed(123) 
model <- gbm(target ~., data = train, 
       distribution = "gaussian", 
       n.trees = 4000, 
       interaction.depth = 2, 
       n.minobsinnode = 5, 
       shrinkage = 0.01, 
       bag.fraction = 1, 
       train.fraction = .95, 
       verbose = TRUE 
      ) 

best_iter <- gbm.perf(model) 

set.seed(123) 
predictions <- predict(model, newdata = test, n.trees = best_iter) 

set.seed(123) 
predictions <- predict(model, newdata = train, n.trees = best_iter) 

、私は私がテストセットに予測を再現することはできませんよ、まったく同じパラメータで何度も何度もGBMモデルを実行します。しかし、同時に私は列車のセットで常に予測を再現することができます。私はモデルを構築して予測する前に種を設定しています。誰かが何が起こっているのか把握して私を助けてくれますか?列車とテストのデータは常に同じであることに注意してください。実行するたびに変更はありません。

+2

データなしでは答えにくいです。 –

答えて

0

問題を解消しましたか?私はあなたとまったく同じモデルアプローチをしています。私が見ることができる私たちのコードの唯一の違いは、予測するあなたの呼び出しです。列車とテストのそれぞれについて、新しいデータから従属変数を削除することができます。また、n.treesを直接設定してください。現在どのようになっているのかはわかりません。予測を2つの別々のオブジェクトに保存します。

PredEst <- predict(model, newdata = train[-which(names(train) %in% as.character("target"))], n.trees = 4000) 

PredVal <- predict(model, newdata = test[-which(names(test) %in% as.character("target"))], n.trees = 4000) 
関連する問題