Вы получаете сообщение об ошибке, потому что вы использовали опцию keep.inbag = TRUE
в Quantregforest code , строка 95:
minoob <- min( apply(!is.na(valuesPredict),1,sum))
if(minoob<10) stop("need to increase number of trees for sufficiently many out-of-bag observations")
Поэтому для всех ваших наблюдений требуется как минимум 10 экземпляров OOB (вне сумки), чтобы сохранить прогнозы вне сумки. Поэтому, если ваши реальные данные огромны, ntrees
, необходимое для хранения вне сумки, будет огромным.
Если вы используете курсор для обучения данных, сохранение OOB и savePredictions = TRUE
кажется избыточный. В целом, внеплановые предсказания могут оказаться не столь полезными, поскольку вы все равно будете использовать тестовую свертку для предсказания.
Другой вариант, учитывая размер ваших данных, - это настроить sampsize
. В randomForest производится выборка только из sampsize
наблюдений с заменяющим подмножеством для соответствия дереву. Если вы установите меньший размер для этого, вы убедитесь, что OOB достаточно. Например, в приведенном примере мы видим:
model <- caret::train(x = preds,
y = response,
method ="qrf",
ntree = 30, sampsize=17,
metric = "RMSE",
tuneGrid = tunegrid,
trControl = finalcontrol,
importance = TRUE,
keep.inbag = TRUE)
model
Quantile Random Forest
50 samples
57 predictors
No pre-processing
Resampling: Cross-Validated (10 fold, repeated 5 times)
Summary of sample sizes: 44, 43, 44, 46, 45, 46, ...
Resampling results across tuning parameters:
mtry RMSE
2.000000 42.53061
7.549834 42.72116
10.000000 43.11533
19.000000 42.80340
RMSE was used to select the optimal model using the smallest value.
The final value used for the model was mtry = 2.