交叉验证和参数优化

机器算法验证 交叉验证 优化 参数化
2022-01-18 20:01:43

我在使用 10 倍交叉验证时对参数优化有疑问。

我想问在每个折叠的模型训练期间参数是否应该固定,即(1)为每个折叠的平均精度选择一组优化参数。

或者

(2)我应该找到每个折叠的优化参数,然后每个折叠使用不同的优化参数来训练它的模型,然后分别测试折叠的测试数据,最后平均每个折叠的精度作为结果?

哪一种是正确的交叉验证方法?非常感谢。

2个回答

我认为目前接受的答案以一种不幸的方式是不完整的。我不同意这句话

交叉验证的目的是确定学习参数,这些参数可以很好地概括我们在每个折叠中学习的总体样本。

这确实是交叉验证的一个非常重要的应用,但不是唯一的。通常,你想做两件事:

  1. 建立最好的模型
  2. 准确了解其表现如何

现在,要根据您的算法完成目标 1,您可能需要调整一些超参数,这通常通过交叉验证来完成。但这还不能帮助您实现目标 2。为此,您基本上需要嵌套交叉验证,如下所示:

  • 将整个数据分成n个折叠
  • 对于每一个,将训练数据再次折叠成子折叠
  • 在子折叠上使用交叉验证来学习好的超参数
  • 使用这些超参数在该折叠的训练数据上构建模型
  • 在测试数据上测试模型
  • 重复下一个折叠

要构建一个好的模型,您只需要内部交叉验证。您仍然需要这样做才能获得一个好的模型。但是要对您的模型性能进行良好的估计,您需要在交叉验证方案中执行模型构建的整个过程。这还包括插补等步骤。

让我们首先区分两组参数:模型参数(例如回归中特征的权重)和学习算法的参数(和超参数)。交叉验证的目的是确定学习参数,这些参数可以很好地概括我们在每个折叠中学习的总体样本。

更具体地说:我们在学习参数上全局搜索空间,但在每个折叠中,我们固定学习参数并学习模型参数。结果应该是在所有方面平均产生最佳性能的学习参数。然后我们可以使用这些在整个数据集上训练模型。