使用 K 折交叉验证和机器学习方法进行最终模型预测

机器算法验证 回归 机器学习 交叉验证
2022-04-15 05:26:28

类似主题:

在机器学习中执行交叉验证时“最终”模型的特征选择

k折交叉验证后如何选择预测模型?


我的问题很简单,肯定与上面的类似线程有关,但我正在寻找的是对以下问题的具体是/否:

我正在研究一个回归问题,其中我有 1 个变量的目标函数,我试图使用 5 个解释变量进行预测。我有 1200 个响应和解释数据的示例。我决定将我的 1200 个示例拆分为包含 1000 个示例的校准集和包含 200 个示例的测试集。校准集用于训练我的模型,测试集完全独立。

假设我正在使用特定配置/参数化的神经网络,并且我正在寻找可能的最佳网络权重和偏差,以便它在我的测试集上提供最佳性能。

为此,我选择对校准数据执行 k 折交叉验证。假设我选择 10 折。因此,我使用上述神经网络生成了 10 个不同的校准模型(使用每个 k 折的训练和验证集)每个相同的配置。我现在想使用神经网络在我的测试集上提供输出,使用从 k 折交叉验证确定的参数(权重和偏差)。 为了对测试集进行估计,我是否只需对 10 个不同校准模型中的每一个的权重和偏差进行平均,并使用此参数化来生成输出以与目标函数的测试集进行比较?

谢谢大家的帮助!

2个回答

“要对测试集进行估计,我是否只需对 10 个不同校准模型中的每一个的权重和偏差进行平均,并使用此参数化来生成输出,以与目标函数的测试集进行比较?”

不是。交叉验证是一种评估模型生成方法的测试性能的过程,而不是模型本身的测试性能。所以最好的办法是执行 k 折交叉验证以确定最佳超参数设置,例如隐藏单元的数量、正则化参数的值等。然后在整个校准集(或几个和选择具有最佳值的正则化训练标准以防止局部最小值)。使用测试集评估该模型的性能。

在神经网络的情况下,对单个模型的权重和偏差进行平均是行不通的,因为不同的模型会选择不同的内部表示,因此不同网络的相应隐藏单元将代表不同的(分布式)概念。如果你平均它们的权重,它们对这些概念的意义将毫无意义。

我认为这个问题的正确答案是由 sklearn 的文档提供的:http: //scikit-learn.org/stable/modules/cross_validation.html

基本上通过交叉验证(CV),与保留验证相比,我们可以减少验证集所用的数据量,从而增加训练集使用的数据量。这解决了训练数据量不够而我们仍然想要训练、验证和测试集的问题。

正如文档中所写:“k-fold 交叉验证报告的性能度量是循环中计算的值的平均值。这种方法在计算上可能很昂贵,但不会浪费太多数据(事实上就是这样)在修复任意测试集时),这在样本数量非常少的逆推理等问题中是一个主要优势。”