为什么使用 CV 设置参数和超参数是有效的,而不是种子?

机器算法验证 交叉验证 超参数
2022-04-09 01:35:44

这是我之前问题的规范或延续:在随机森林回归中设置种子以产生最高准确度是否“公平”?

使用交叉验证来设置参数是有效的。我们可以使用 SKL 的GridSearch方法,它使用 k 折交叉验证来训练超参数。但共识似乎是,使用交叉验证来寻找表现最好的random_state = seed.

为什么?

1个回答

如果您正确地进行交叉验证(即交叉验证整个过程),我认为这不是“错误的”,我认为最有可能的结果就是它没有帮助。但是,正确地执行此简历意味着您必须小心地将这些决定包含在每个折叠中。经常看到人们忘记在交叉验证中包含建模决策,从而使他们的评估产生偏差。我将使用术语过程而不是模型来表示这个组合过程,只是为了不混淆两者。

为此,请考虑对两个建模程序的评估:

  1. 在我们 CV 的每一折中,我们选择一个随机的随机种子并拟合我们的随机森林。

  2. 在我们 CV 的每一折中,我们为种子拟合一个 RF,并选择最好的一个。s=1,,100

在这种情况下,第一个过程是采摘种子然后拟合 RF 的组合。第二个过程是拟合 100 个 RF 并挑选出最好的一个。在这两种情况下,我们都正确地对模型进行了 CV-ing,因此我们将对它进行公平的评估。

我认为只要您认为不同的种子可能会有所帮助,就可以比较这些。如果您真的相信这没有任何帮助,那么您这样做只会让自己面临 I 类错误。但是这种事情是有先例的。在非凸优化中,您通常只能获得局部最优值,因此通常会进行多次随机重新启动,然后从结果局部最优值的集合中选择最佳值;参见例如这篇论文多少次随机重启就足够了?:作者不是在质疑是否应该进行任何随机重启,而是在质疑有多少。因此,在我们的案例中,如果我们认为它可能有好处,那么我们可以将其作为超参数包含在内,但我们需要再次明确说明它现在如何成为建模过程的一部分,因此需要对其进行交叉验证。

我敢打赌,如果你这样做,你会发现,只要你使用了足够多的树,这两者的 CV 值将无法区分。在这种情况下,您应该采用更简单的模型,即没有种子优化的模型。但这很好:您已经通过交叉验证正确比较了两个模型,并且您选择了更好的模型。我们每天都这样做。

如果有人不同意,请告诉我!