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

时间:2017-08-03 09:59:14

标签: validation machine-learning statistics cross-validation statistics-bootstrap

我正在阅读关于交叉验证以及如何使用它来选择最佳模型和估计参数,我并不真正理解它的含义。

假设我构建一个线性回归模型并进行10倍交叉验证,我认为10个中的每一个都会有不同的系数值,现在来自10个不同的值,我应该选择它作为我的最终模型或估计参数。

或者我们是否仅将交叉验证用于查找平均误差(在我们的情况下平均为10个模型)并与另一个模型进行比较?

5 个答案:

答案 0 :(得分:2)

您基本上将网格搜索与交叉验证混淆。交叉验证背后的想法基本上是检查模型在说真实世界的应用程序中的表现。因此,我们基本上尝试以不同的比例随机分割数据并验证其性能。应该注意的是,在整个交叉验证过程中,模型的参数保持不变。

在网格搜索中,我们尝试找到最佳的参数,这些参数可以在特定的数据分割中获得最佳结果(比如70%的列车和30%的测试)。因此,在这种情况下,对于同一模型的不同组合,数据集保持不变。

详细了解cross-validation here

答案 1 :(得分:1)

交叉验证用于查看模型预测的好坏程度。通过按照您可能知道的方式进行分割,对相同的数据进行多次测试非常聪明(例如,如果您没有足够的训练数据,这很好用)。

作为一个例子,它可能用于确保您不会过度拟合该功能。所以基本上你在使用交叉验证完成它时会尝试你的功能,如果你看到错误在某个地方增长很多,你会回到调整参数。

修改 阅读维基百科,以便更深入地了解它的工作原理:https://en.wikipedia.org/wiki/Cross-validation_%28statistics%29

答案 2 :(得分:0)

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

答案 3 :(得分:0)

如果您构建线性回归模型并进行10倍交叉验证,则实际上10个中的每个将具有不同的系数值。使用交叉验证的原因是,您对线性模型的误差有一个清晰的认识-而不是仅在一个火车/测试区间对它进行评估,这可能很不幸或太幸运了。 CV更加强大,因为十个分裂不可能全是十个幸运儿,也不是十个不幸的事。

然后在整个训练集上训练您的最终模型-这是您最终系数的来源。

答案 4 :(得分:0)

交叉验证或 CV 使我们能够比较不同的机器学习方法,并了解它们在实践中的效果。

Scenario-1(与问题直接相关)

  • 是的,CV 可用于了解哪种方法(SVM、随机森林等)效果最好,我们可以选择该方法进一步发挥作用。

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

  • 获得有关最佳方法/或最佳参数的信息后,我们可以在训练数据集上训练/重新训练我们的模型。
  • 对于参数或系数,这些可以通过网格搜索技术确定。 See grid search

场景 2:

假设您有少量数据,并且想要对数据进行训练、验证和测试。然后将如此少量的数据分成三组会大大减少训练样本,结果将取决于训练集和验证集对的选择。 CV 会在这里派上用场。在这种情况下,我们不需要验证集,但我们仍然需要保存测试数据。 模型将在 k-1 折训练数据上进行训练,剩余的 1 折将用于验证数据。将生成均值和标准差指标,以了解模型在实践中的表现。