CARET 会在选择最终模型之前自动使用预先指定的调整网格来构建各种模型,然后在完整的训练数据上训练最终模型。我可以只用一种参数组合来提供我自己的调整网格。然而,即使在这种情况下,CARET 在调整参数中“选择”最佳模型(即使在这种情况下只有一个),然后将最终模型拟合到所有训练数据。这是我想避免的额外步骤。
我如何简单地跳过调整网格中变化的模型搜索步骤并强制 CARET 建立在所有训练数据上(而不是直接调用底层模型库)?
CARET 会在选择最终模型之前自动使用预先指定的调整网格来构建各种模型,然后在完整的训练数据上训练最终模型。我可以只用一种参数组合来提供我自己的调整网格。然而,即使在这种情况下,CARET 在调整参数中“选择”最佳模型(即使在这种情况下只有一个),然后将最终模型拟合到所有训练数据。这是我想避免的额外步骤。
我如何简单地跳过调整网格中变化的模型搜索步骤并强制 CARET 建立在所有训练数据上(而不是直接调用底层模型库)?
您可以method="none"
在trainControl
. 例如:
train(Species ~ ., data=iris, method="rf", tuneGrid=data.frame(mtry=3),
trControl=trainControl(method="none"))
我不确定这是什么时候实施的。
最好的方法是明确提供 tuneGrid 数据框。例如,随机森林只有一个调整参数“mtry”,它控制为每棵树选择的特征数量。
要将 mtry 设置为特定值,您可以选择 randomForest 默认值 (?randomForest) 执行以下操作:
model <- train(x = X, y = Y, method = 'rf', tuneGrid = data.frame(.mtry = M))
其中 M 是您希望使用的调整参数的一个值。
对于多个调整参数,请执行以下操作:
tuneGrid = data.frame(.par1 = P1, .par2 = P2, .par3 = P3)
我认为这是不可能的(至少在几个版本之前是不可能的)。可以通过在训练数据中仅设置一个重采样分区来降低性能影响(但插入符号仍会训练模型两次)
这听起来像是一个有用的功能,所以我会 ping 包的作者。