Чтобы приспособить модели ко всему набору данных без настройки параметров или повторной выборки, измените метод управления поездом на «none»:
tgrid <- expand.grid(num_trees = 100,
k = 2,
alpha = 0.95,
beta = 2,
nu = 3)
fit <- train(hp ~ .,
data=mtcars,
method="bartMachine",
serialize=TRUE,
tuneGrid=tgrid,
trControl = trainControl(method="none"))
Обратите внимание, что я удалил одно из двух значений k в коде вопроса.В противном случае возникает ошибка: Only one model should be specified in tuneGrid with no resampling
.Я предлагаю построить отдельную модель с другим значением k.
Приведенный выше код дает следующий вывод:
bartMachine initializing with 100 trees...
bartMachine vars checked...
bartMachine java init...
bartMachine factors created...
bartMachine before preprocess...
bartMachine after preprocess... 11 total features...
bartMachine sigsq estimated...
bartMachine training data finalized...
Now building bartMachine for regression ...
building BART with mem-cache speedup...
Iteration 100/1250 mem: 17.6/477.1MB
Iteration 200/1250 mem: 25.1/477.1MB
Iteration 300/1250 mem: 30.8/477.1MB
Iteration 400/1250 mem: 39.9/477.1MB
Iteration 500/1250 mem: 19/477.1MB
Iteration 600/1250 mem: 59.6/477.1MB
Iteration 700/1250 mem: 39.6/477.1MB
Iteration 800/1250 mem: 79.8/477.1MB
Iteration 900/1250 mem: 119.9/477.1MB
Iteration 1000/1250 mem: 40.7/477.1MB
Iteration 1100/1250 mem: 80.8/477.1MB
Iteration 1200/1250 mem: 121/477.1MB
done building BART in 1.289 sec
burning and aggregating chains from all threads... done
evaluating in sample data...done
serializing in order to be saved for future R sessions...done
Параметру serialize присвоено значение TRUE в fit$finalModel
:
fit$finalModel$serialize
[1] TRUE
Несмотря на это, внутренняя функция check_serialization в bartMachine не выдает никаких предупреждений или ошибок (или любых других выходных данных):
bartMachine:::check_serialization(fit$finalModel)
Мне не понятно, как извлечь сериализованный объектот fit$finalModel
.Я предполагаю, что он хранится в fit$finalModel$java_bart_machine
, который содержит указатель rJava.Возможно получить дальнейшее понимание, используя пакет rJava, от которого зависит bartMachine.
Обновление: состояния @ antoine-sac в комментариях ниже "serialize = T не вызывает сохранение модели, а сериализацию образцовв модель, что означает, что они сохраняются при записи модели на диск ".