语境
我caret
用来拟合和调整模型。通常,使用交叉验证等重采样方法可以找到最佳参数。一旦选择了最佳参数,最终模型将使用最佳参数集拟合到整个训练数据。
除了要调整的参数(通过 传递tuneGrid
)之外,还可以通过将参数传递给被调用的底层算法来传递参数train
。
我的问题
有没有办法指定仅用于最终模型的特定于模型的选项?
为了更加清楚:我确实想拟合所有中间模型(以获得可靠的性能估计),但我想用不同的参数拟合最终模型(除了最佳参数)。
具体用例
假设我想拟合bartMachine
一些数据,然后在生产中使用最终模型。我通常会将调整后的模型保存到磁盘并根据需要加载它。但我只能保存/加载一个已经序列化的 bartMachine 模型,即我需要传递serialize=T
给 bartMachine
via caret::train
。
但这将使所有模型序列化,这是非常不切实际的。我真的只需要序列化最终模型。有没有办法做到这一点?
library("caret")
library("bartMachine")
tgrid <- expand.grid(num_trees = 100,
k = c(2, 3),
alpha = 0.95,
beta = 2,
nu = 3)
# The printed log shows that all intermediate models are being serialized
fit <- train(hp ~ .,
data=mtcars,
method="bartMachine",
serialize=T,
tuneGrid=tgrid,
trControl = trainControl(method="cv", 5, verboseIter=T))