Machine learning 线性回归中正则化参数的计算

Machine learning 线性回归中正则化参数的计算,machine-learning,data-mining,regression,Machine Learning,Data Mining,Regression,当我们有一个高次线性多项式用于拟合线性回归设置中的一组点时,为了防止过度拟合,我们使用正则化,并在代价函数中包含lambda参数。然后使用该lambda更新梯度下降算法中的θ参数 我的问题是如何计算此lambda正则化参数?正则化参数(lambda)是模型的输入,因此您可能想知道的是如何选择lambda的值。正则化参数可减少过度拟合,从而减少估计回归参数的方差;然而,这样做的代价是给你的估计增加偏差。增加lambda会减少过度拟合,但也会增加偏差。因此,真正的问题是“你愿意在评估中容忍多少偏差?

当我们有一个高次线性多项式用于拟合线性回归设置中的一组点时,为了防止过度拟合,我们使用正则化,并在代价函数中包含lambda参数。然后使用该lambda更新梯度下降算法中的θ参数


我的问题是如何计算此lambda正则化参数?

正则化参数(lambda)是模型的输入,因此您可能想知道的是如何选择lambda的值。正则化参数可减少过度拟合,从而减少估计回归参数的方差;然而,这样做的代价是给你的估计增加偏差。增加lambda会减少过度拟合,但也会增加偏差。因此,真正的问题是“你愿意在评估中容忍多少偏差?”


您可以采取的一种方法是多次随机对数据进行二次采样,并查看估计值的变化。然后对稍大的lambda值重复此过程,以查看它如何影响估计值的可变性。请记住,无论您决定的lambda值适合于您的二次抽样数据,您都可以使用较小的值来实现完整数据集上的可比正则化。

上述交叉验证是机器学习中经常使用的方法。然而,选择一个可靠、安全的正则化参数仍然是数学研究的一个热点。 如果你需要一些想法(并且可以访问一个像样的大学图书馆),你可以看看这篇文章:

封闭形式(蒂霍诺夫)与梯度下降 嗨!对那里的直观和一流的数学方法有很好的解释。我只是想添加一些特殊性,在没有“解决问题”的情况下,这些特殊性肯定有助于加快找到一个好的正则化超参数的过程,并使其具有一定的一致性

我假设您正在谈论通过lambda项进行线性加权的L2(也称为“权重衰减”)正则化,并且您正在使用闭式方程优化模型的权重(强烈建议用于低维线性回归模型),或者使用带有反向传播的梯度下降的一些变体。在此上下文中,您需要为lambda选择一个值,该值提供了最佳泛化能力


封闭式(蒂霍诺夫) 如果您能够按照Tikhonov的方式使用您的模型(表示尺寸小于10k,但此建议至少有5年历史),则提供了一个有趣的封闭式解决方案,该解决方案已被证明提供了最佳值。但是这个解决方案可能会引起一些我不知道的实现问题(时间复杂性/数值稳定性),因为没有主流算法来执行它。这看起来很有希望,如果你真的需要优化你的线性模型,也许值得一试

  • 为了更快地实现原型,这个Python包似乎以迭代方式处理它,您可以让它进行优化,然后提取lambda的最终值:
在这种新的创新方法中,我们推导了一种迭代方法来解决一般的Tikhonov正则化问题,该方法收敛于无噪声解,不强烈依赖于lambda的选择,但仍然避免了反演问题

从该项目的实施情况来看:
InverseProblem.inverse(A,be,k,l)#这将反转A矩阵,其中be是噪声be,k是迭代次数,lambda是阻尼效果(最好设置为1)


梯度下降 这部分的所有链接都来自迈克尔·尼尔森(Michael Nielsen)令人惊叹的在线书籍《神经网络与深度学习》,推荐阅读

对于这种方法,似乎更不用说了:成本函数通常是非凸的,优化是通过数值进行的,模型的性能是通过某种形式的交叉验证来衡量的(如果你还没有足够的话,请参阅)。但即使在交叉验证时,Nielsen也提出了一些建议:您可能想看看L2正则化如何提供权重衰减效应,但总结是,它与样本数成反比,因此在使用L2项计算梯度下降方程时

只需像往常一样使用反向传播,然后将
(λ/n)*w
添加到所有权重项的偏导数中

他的结论是,当需要不同样本数的类似正则化效果时,lambda必须按比例改变:

我们需要修改正则化参数。原因是训练集的大小已从
n=1000
更改为
n=50000
,这将更改权重衰减系数
1−学习率*(λ/n)
。如果我们继续使用
λ=0.1
,这意味着重量衰减要小得多,因此正则化效果也要小得多。我们通过更改为
λ=5.0
进行补偿

这仅在将同一模型应用于不同数量的相同数据时有用,但我认为它为直觉打开了大门,让人们了解它应该如何工作,更重要的是,通过允许在较小的子集中微调lambda,然后放大,加快超参数化过程

为了选择准确的数值,他在纯经验方法的结论中建议:从1开始,然后逐步乘除10,直到找到合适的数量级,然后在该区域内进行局部搜索。在的评论中,用户Brian Borchers还建议了一种非常著名的方法,该方法可能对本地搜索有用:

  • 助教