2016-05-16 23 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,不知道你現在有什麼樣的方式。並將預測保存到兩個單獨的對象。

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)