如何使用正则化的交叉验证?

机器算法验证 机器学习 交叉验证 正则化
2022-03-21 23:52:55

我想我独立地理解了这些概念(交叉验证、正则化)中的每一个,但我不太清楚如何在实践中将它们组合在一起。

粗略地说,在交叉验证中,我将在我的数据子集上训练我的模型,然后选择在数据的保留部分上表现最好的模型。在正则化中,我将试探性地选择某种正则化函数,然后尝试找到给出最佳结果我们可以使用交叉验证来选择吗?我认为每个不同的值都可以被视为产生一个新模型,但是我们不是有无限多的模型可供选择吗?λλλ

3个回答

交叉验证正则化参数选择的过程如下:

  • 离散化你的 lambdas : (例如你可以选择,但这取决于你。λ0,λ1,...,λnλ=103,3×103,102,...,103
  • 将您的数据集划分为个子样本,其中是交叉验证折叠的数量。nn
  • 对于每个训练模型时计算交叉验证误差(这是交叉验证部分:对于每个折叠,训练所有其他折叠并计算保留折叠的误差;然后平均出错误)。λλ
  • 选择给出最低交叉验证误差的 (或者,如果您想更加保守,则选择在最低交叉验证误差的一个标准差内的最小值)λλ

您通常确实有无数种可供选择。有两种方法可以解决这个困难。

  • 您可以尝试非常有创意并计算出数学来估计模型的完整路径,因为变化。这仅在某些情况下是可能的,但是当它是时,它确实是一种强大的方法。例如,lasso 线性回归的LARS方法就是这种类型。当它成功时,它非常漂亮。λ

但通常你不能或不知道如何做到这一点,所以:

  • 您只需通过选择适当的有限 lambda 序列并仅使用这些值来离散问题。这仍然有一些艺术,因为确定(最大值)和(最小值)应该取决于要解决的问题。您通常希望选择作为完全折叠模型以预测响应平均值的最小值。例如,这是著名的glmnet采用的方法。λ0<λ1<<λNλNλ0λN

(训练误差和测试误差)与(模型复杂性/容量)形成 U 形关系。在学习模型时,有两个目标:

  1. 在 U 曲线开始再次上升的模型复杂度轴上找到最优值。这发生在测试误差曲线上,即使训练误差曲线继续下降,将训练数据过度拟合到高复杂度模型(走向插值)。
  2. 减小两条 U 曲线之间的差距,意思是,减小训练误差和测试误差之间的差距。

(1) 是通过使用交叉验证来实现的 - 找到偏差和方差之间的精细平衡

(2) 是通过使用正则化来实现的 - 使测试误差 U 曲线更接近训练误差曲线。