R/caret:训练和测试集与交叉验证?

机器算法验证 r 机器学习 交叉验证 插入符号
2022-03-20 18:39:44

这可能是一个愚蠢的问题,但是当使用插入符号生成模型并使用类似LOOCVor 的东西时(更重要的是)LGOCV,如果这本质上是交叉验证步骤,那么将数据拆分为训练集和测试集有什么好处反正呢?

我阅读了一些相关问题,他们建议某些交叉验证方法(例如,在插入符号站点上描述的方法)是出于特征选择的目的。但就我而言,我使用的是randomForest( method = "rf") 和kernlab( method = svmRadial),它们未列在试图清除预测变量的组中。

所以,我的问题是,如果我使用类似的东西cross_val <- trainControl(method = "LGOCV", p = 0.8),这与对我的 80% 数据进行训练、在剩下的 20% 上测试结果模型并一遍又一遍地执行此操作以了解模型有效吗?

如果是这样,是否需要将我的数据拆分为训练/测试集?

PS 我在对经验生成的 DOE 原型进行模型处理时提出部分问题(想想我们调整输入然后使用测试方法测量原型的各种属性的硬商品)。

因此,我没有一个庞大的数据集,其中包含许多重叠的预测变量级别来建模——我们经常在每个 DOE 兴趣点运行一次试验,因为在这种情况下数据生成成本很高。因此,我想使用我能找到的所有数据来建立一个准确的模型,但我想在这里检查一下我没有遗漏一些明显的东西,并且没有通过拆分来制作一个糟糕的模型。


编辑:针对@topepo 的问题,我正在根据调整公式的化学输入来模拟化合物的物理测量属性。我无法讨论我的实际应用,但我会根据配方内部乳胶漆来制作一个示例。我正在进行设计的实验,我们混合 4-5 种化学品,可能会使用 % 固体,以及加热聚合物溶液以调整聚合度的时间。

然后我们可能会测量流变学、分子量、油漆涂层的硬度、防水性等。

我们对几个变量进行了不错的复制,但从每个 DOE 级别完全相同的意义上说,很少有真正的复制。总数据集约为 80 个观察值,可能有 4-5 个是精确重复。我们已经进行了 15 次不同的测试,也许每次观察都进行了 5-6 次。一些响应存在于 25-50% 的数据中。

从这里开始,我们想对 7 个预测变量对输出属性的影响进行建模,然后针对最有可能提供所需属性的新设计空间进行优化。

(因此我的问题在这里。一旦我有一个训练有素的模型,最好进行“反向”并提供所需的响应,以获得对可能输入水平的最佳猜测,然后再尝试)。

1个回答

我的一般想法:

因此,当您评估不同的模型时,您可能想要调整它们,尝试不同类型的预处理等,直到找到您认为是好的模型。在此过程中,重新采样可以帮助您朝着正确的方向前进。

但是,仍然存在过度拟合的可能性,发生这种情况的几率很大程度上受您拥有的数据量(和预测变量)的影响。如果你有一点数据,有几种方法可以考虑这一点:

  • 使用所有数据进行训练,因为每个数据点都会显着提高模型的性能。
  • 留出一个小的测试集作为由于过度拟合导致的严重错误的最​​终检查。小样本过拟合的机会并不小,而且随着样本数量的增加而变得更大。

我属于第二个阵营,但第一个完全没有错。

如果您有大量数据,那么这并不重要(除非您的事件率很小)。

为你:

你有一个能源部。设计类型将有助于回答这个问题。您是否尝试在设计点之间进行插值或预测迄今为止尚未测试的设计点?

你有一个复制品。我跌倒了,就像随机森林用大锤敲钉子一样,可能会导致过度拟合。我会尝试一些更平滑的东西,比如 SVM 或(gasp)神经网络。

最大限度