有没有办法禁用CARET中的参数调整(网格)功能?


15

在选择最终模型之前,CARET将自动使用预先指定的调整网格来构建各种模型,然后在完整的训练数据上训练最终模型。我可以只用一种参数组合来提供自己的调整网格。但是,即使在这种情况下,CARET也会在调整参数中“选择”最佳模型(即使在这种情况下只有一个),然后将最终模型拟合到所有训练数据。这是我要避免的额外步骤。

如何简单地跳过调整网格中各种变化的模型搜索步骤,并强制CARET建立在所有训练数据上(而不是直接调用基础模型库)?


1
这个问题还不清楚,这可能可以解释您为什么收到回答不同问题的答复,即1)我如何告诉插入符号跳过模型验证和调整?和2)如何仅关闭模型调整?
约翰·拉尔森

Answers:


17

您可以method="none"在中指定trainControl。例如:

train(Species ~ ., data=iris, method="rf", tuneGrid=data.frame(mtry=3),
  trControl=trainControl(method="none"))

我不确定何时实施。


9

最好的方法是显式提供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)

欢迎来到我们的网站,布伦特!感谢您跟进这个老问题。
ub

4
下面的建议method="none"是更好的解决方案。
topepo 2014年

1

我认为这是不可能的(至少在某些版本之前是不可能的)。可以通过在训练数据中仅设置一个重采样分区来降低性能影响(但插入符号仍会训练模型两次)

这听起来像是一个有用的功能,所以我将对软件包的作者执行ping操作。


对不起这个答案现在已经过时了
SMCI
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.