交叉验证后选择模型
一直对这个概念缺乏理解,今天搜索学习之后茅塞顿开。以下摘录一段话,可能是爬虫后翻译的,但精髓仍在。
让我们直接讲一些术语,通常当我们说“模型”时,我们指的是一种特定的方法,用于描述某些输入数据与我们要预测的内容之间的关系。通常,我们通常不会将该方法的特定实例称为不同的模型。因此,您可能会说“我有线性回归模型”,但是不会将两组不同的训练系数称为不同模型。至少不是在模型选择的情况下。
因此,当您进行K折交叉验证时,您正在测试模型能够通过某些数据进行训练的能力,然后预测未看到的数据。我们为此使用交叉验证,因为如果您使用所拥有的所有数据进行训练,那么您将没有任何数据可以进行测试。您可以执行一次操作,例如使用80%的数据进行训练而使用20%的数据进行测试,但是如果您碰巧选择了20%的数据进行测试会碰巧包含一堆特别容易(或特别困难)的点,该怎么办?预测?我们将不会对模型的学习和预测能力提出最佳估计。
我们要使用所有数据。因此,继续上面的80/20拆分示例,我们将通过对80%的数据进行5次训练并对20%的数据进行测试,进行5次交叉验证。我们确保每个数据点仅在20%测试集中结束一次。因此,我们已经使用每个数据点来帮助理解我们的模型执行从某些数据中学习并预测一些新数据的任务的效果。
但是交叉验证的目的不是要提出最终模型。我们不使用我们训练后的模型的这5个实例来进行任何真实的预测。为此,我们要使用所有数据,我们必须提供最佳模型。交叉验证的目的是模型检查,而不是模型构建。
现在,假设我们有两个模型,例如线性回归模型和神经网络。我们如何说哪种模式更好?我们可以进行K折交叉验证,看看哪种方法在预测测试设定点方面更有效。但是,一旦我们使用交叉验证来选择性能更好的模型,便会在所有数据上训练该模型(无论是线性回归还是神经网络)。对于最终的预测模型,我们不使用在交叉验证过程中训练的实际模型实例。
请注意,有一种称为引导程序聚合的技术(通常简称为“装袋”),该技术使用以类似于交叉验证的方式生成的模型实例来构建集成模型,但这是一种超出范围的高级技术。
也就是说交叉验证是评估模型的技术,不是生成最后模型的技术。当然,可能有一些高级技术能够集成不同数据子集模型的结果建模。
参考:
https://qastack.cn/stats/52274/how-to-choose-a-predictive-model-after-k-fold-cross-validation