gbm モデルに合わせてキャレットを使用しています。を呼び出すとtrainedGBM$finalModel$fit
、正しいように見える出力が得られます。
しかし、 を呼び出すとpredict(trainedGBM$finalModel, origData, type="response")
、非常に異なる結果がpredict(trainedGBM$finalModel, type="response")
得られ、origData がアタッチされている場合でも、さらに異なる結果が得られます。私の考えでは、これらの呼び出しは同じ出力を生成するはずです。誰かが問題を特定するのを手伝ってくれますか?
library(caret)
library(gbm)
attach(origData)
gbmGrid <- expand.grid(.n.trees = c(2000),
.interaction.depth = c(14:20),
.shrinkage = c(0.005))
trainedGBM <- train(y ~ ., method = "gbm", distribution = "gaussian",
data = origData, tuneGrid = gbmGrid,
trControl = trainControl(method = "repeatedcv", number = 10,
repeats = 3, verboseIter = FALSE,
returnResamp = "all"))
ntrees <- gbm.perf(trainedGBM$finalModel, method="OOB")
data.frame(y,
finalModelFit = trainedGBM$finalModel$fit,
predictDataSpec = predict(trainedGBM$finalModel, origData, type="response", n.trees=ntrees),
predictNoDataSpec = predict(trainedGBM$finalModel, type="response", n.trees=ntrees))
上記のコードは、次の部分的な結果をもたらします。
y finalModelFit predictDataSpec predictNoDataSpec
9000 6138.8920 2387.182 2645.993
5000 3850.8817 2767.990 2467.157
3000 3533.1183 2753.551 2044.578
2500 1362.9802 2672.484 1972.361
1500 5080.2112 2449.185 2000.568
750 2284.8188 2728.829 2063.829
1500 2672.0146 2359.566 2344.451
5000 3340.5828 2435.137 2093.939
0 1303.9898 2377.770 2041.871
500 879.9798 2691.886 2034.307
3000 2928.4573 2327.627 1908.876