我在使用 10 倍交叉验证时对参数优化有疑问。
我想问在每个折叠的模型训练期间参数是否应该固定,即(1)为每个折叠的平均精度选择一组优化参数。
或者
(2)我应该找到每个折叠的优化参数,然后每个折叠使用不同的优化参数来训练它的模型,然后分别测试折叠的测试数据,最后平均每个折叠的精度作为结果?
哪一种是正确的交叉验证方法?非常感谢。
我在使用 10 倍交叉验证时对参数优化有疑问。
我想问在每个折叠的模型训练期间参数是否应该固定,即(1)为每个折叠的平均精度选择一组优化参数。
或者
(2)我应该找到每个折叠的优化参数,然后每个折叠使用不同的优化参数来训练它的模型,然后分别测试折叠的测试数据,最后平均每个折叠的精度作为结果?
哪一种是正确的交叉验证方法?非常感谢。
我认为目前接受的答案以一种不幸的方式是不完整的。我不同意这句话
交叉验证的目的是确定学习参数,这些参数可以很好地概括我们在每个折叠中学习的总体样本。
这确实是交叉验证的一个非常重要的应用,但不是唯一的。通常,你想做两件事:
现在,要根据您的算法完成目标 1,您可能需要调整一些超参数,这通常通过交叉验证来完成。但这还不能帮助您实现目标 2。为此,您基本上需要嵌套交叉验证,如下所示:
要构建一个好的模型,您只需要内部交叉验证。您仍然需要这样做才能获得一个好的模型。但是要对您的模型性能进行良好的估计,您需要在交叉验证方案中执行模型构建的整个过程。这还包括插补等步骤。
让我们首先区分两组参数:模型参数(例如回归中特征的权重)和学习算法的参数(和超参数)。交叉验证的目的是确定学习参数,这些参数可以很好地概括我们在每个折叠中学习的总体样本。
更具体地说:我们在学习参数上全局搜索空间,但在每个折叠中,我们固定学习参数并学习模型参数。结果应该是在所有方面平均产生最佳性能的学习参数。然后我们可以使用这些在整个数据集上训练模型。