从K折交叉验证中选择哪个模型

9

我在阅读关于交叉验证的内容,了解到它用于选择最佳模型和估计参数。但我并不真正理解其含义。

假设我建立了一个线性回归模型,并进行了10折交叉验证,我认为这10个模型将具有不同的系数值,那么从这10个不同的模型中,我应该选择哪一个作为我的最终模型或参数估计呢?

或者我们只使用交叉验证来查找平均误差(在我们的情况下是10个模型的平均值),并与另一个模型进行比较吗?


4
我的理解是交叉验证可以为在所有数据上训练的模型提供误差估计。因此,我认为在您按照所描述的方式制作了10个模型之后,仍然需要使用全部10个折叠进行第11个模型的训练。然后,您可以将平均交叉验证误差作为对这第11个模型误差的估计。 - Dan
5个回答

9
如果你构建一个线性回归模型并进行10倍交叉验证,每个模型的系数值都会不同。使用交叉验证的原因是为了获得关于线性模型误差的稳健想法,而不仅仅是在一个训练/测试拆分上评估它,这可能是不幸或太幸运的。由于没有十个拆分都能很幸运或不幸,所以CV更加稳健。
然后,最终模型将在整个训练集上进行训练-这就是您最终系数的来源。

你有任何书籍或论文可以引用这个句子吗?"你的最终模型是在整个训练集上进行训练的,这是你最终系数的来源。" - Murilo

2
交叉验证用于评估模型的预测效果。它通过将数据拆分成多个部分并进行多次测试来智能地对同一数据进行测试(如果您没有足够的训练数据,这是很好的选择)。
例如,可以使用它来确保您没有过度拟合函数。因此,基本上,您可以在完成函数后使用交叉验证尝试您的函数,如果您发现错误在某些地方增长了很多,则返回调整参数。
编辑:深入了解其工作原理,请参阅维基百科:https://en.wikipedia.org/wiki/Cross-validation_%28statistics%29

1
我的困惑源于这样一个事实,当我们进行k折交叉验证时,本质上是在构建k个单独的模型,因此为了检查模型效率,即估计误差,我们需要从K个折中取平均误差。 - av abhishiek
也许Mohammad Kashif关于你将其与网格搜索混淆是正确的。请查看他的回答。 - Hampus Londögård

2

你可能将网格搜索和交叉验证混淆了。交叉验证的基本思想是检查模型在实际应用中的表现如何。因此我们尝试随机地将数据以不同比例分割,然后验证其性能。需要注意的是,在整个交叉验证过程中,模型的参数保持不变。

在网格搜索中,我们尝试找到最佳参数组合,以便在特定的数据拆分(例如70%训练和30%测试)上获得最佳结果。因此,在这种情况下,对于相同模型的不同组合,数据集保持不变。

了解更多关于交叉验证的内容


1

交叉验证或 CV 允许我们比较不同的机器学习方法,并了解它们在实践中的表现。

情景1(直接回答问题)

  • 是的,CV 可以用来确定哪种方法(SVM、随机森林等)表现最佳,我们可以选择该方法进行进一步工作。

(从这些方法中,将为每种方法生成和评估不同的模型,并计算每种方法的平均指标,最佳平均指标将有助于选择方法)

  • 在获取关于最佳方法/或最佳参数的信息之后,我们可以在训练数据集上训练/重新训练我们的模型。
  • 对于参数或系数,可以使用网格搜索技术来确定。查看网格搜索

情景2:

假设您有少量数据,并且想对数据进行训练、验证和测试。将这么少的数据分成三组会大大减少训练样本,结果将取决于训练和验证集对的选择。
在这种情况下,交叉验证(CV)将会提供帮助。在这种情况下,我们不需要验证集,但仍需要保留测试数据。
模型将在k-1个训练数据折叠上进行训练,剩余的1个折叠将用于验证数据。将生成平均值和标准差指标,以查看模型在实践中的表现如何。

1
交叉验证主要用于比较不同的模型。对于每个模型,您可以得到k个验证集上的平均泛化误差。然后,您将能够选择平均生成误差最低的模型作为您的最佳模型。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接