如何计算线性回归调整参数(How to calculate the regularization p

2019-06-27 12:52发布

当我们有用来拟合一组点的线性回归的设置,以防止过度拟合程度高线性多项式,我们使用正规化,我们包括在成本函数的拉姆达参数。 然后,该拉姆达被用于更新在梯度下降算法的θ参数。

我的问题是我们如何计算这个拉姆达调整参数?

Answer 1:

正则化参数(拉姆达)是输入到模型等什么,你可能想知道的是你如何选择拉姆达的价值。 正则化参数减少过度拟合,从而降低了您估计的回归参数的方差; 但是,它会在这个加偏压你估计的代价。 增加少过拟合拉姆达的结果,但也有较大的偏差。 所以真正的问题是“多少偏见,你愿意在你的估计容忍?”

你可以采取一种方法是随机子采样数据的次数,看看在你估计的变化。 然后重复这个过程拉姆达稍大的值,看看它是如何影响你估计的可变性。 请记住,无论拉姆达的价值你决定适合您的二次抽样数据,可以使用可能较小的值来实现对整个数据集相媲美正规化。



Answer 2:

封闭的形式(吉洪诺夫)与梯度下降

嗨! 好的解释了直观和一流的数学方法在那里。 我只是想补充一些特殊性的是,这里没有“解决问题”,可以肯定有助于加快并给予一定的一致性,以找到一个好的正规化超参数的过程。

我假设你正在谈论的L2(AK“权衰减”)转正,由项线性加权,并且正在优化模型的权重或者与封闭形式吉洪诺夫方程 (强烈推荐给低维线性回归模型),或具有与反向传播梯度下降一些变体。 而且,在这种情况下,你要选择一个提供同类最佳的推广能力的λ值。


封闭的形式(吉洪诺夫)

如果你能够去吉洪诺夫方式与您的模型( 安德鲁·吴说,在10K的尺寸,但是这个建议是至少5岁) 维基百科-测定吉洪诺夫因子提供了一个有趣的封闭形式的解决方案,这已经被证明提供的最佳值 。 但是,这种解决方案可能引发某种形式的执行问题(时间复杂度/数字稳定性),我不知道的,因为没有主流算法来执行它。 这2016纸看起来虽然非常有前途的,可能是值得一试,如果你真的有你的线性模型优化到最佳状态。

  • 为了更快的原型实现,这个2015年 Python包似乎反复对付它,你可以让它优化,然后提取拉姆达终值:

在这种新的创新方法,我们得出一个迭代的方法来解决一般的正则化问题,收敛到无声的解决方案,不会对拉姆达的选择在很大程度上取决于,并仍然避免了反演问题。

而从GitHub的README项目: InverseProblem.invert(A, be, k, l) #this will invert your A matrix, where be is noisy be, k is the no. of iterations, and lambda is your dampening effect (best set to 1) InverseProblem.invert(A, be, k, l) #this will invert your A matrix, where be is noisy be, k is the no. of iterations, and lambda is your dampening effect (best set to 1)


梯度下降

这部分的所有的链接都来自迈克尔·尼尔森的惊人的在线书“神经网络和深度学习”,推荐演讲!

对于这种做法,似乎更不值得一说:成本函数通常是非凸的,优化的数字上进行,该模型的性能是通过某种形式的交叉验证测量(参见过拟合和规范化和为什么正规化有助于减少过度拟合 ,如果你没有足够的那个)。 但即使交叉验证,尼尔森暗示的东西:你可能想看看这个详细的说明就如何在L2正规化提供了重衰减效果,但总结是,它是成反比的样本数n ,所以与L2项计算梯度下降方程时,

只使用反向传播,像往常一样,然后添加(λ/n)*w到所有的重量而言的偏导数。

而他的结论是,希望用不同数量的样品类似的正规化的效果时,拉姆达必须要成比例地变化:

我们需要修改调整参数。 其理由是因为大小n训练集的已经从n=1000n=50000 ,并且这改变了权重衰减因子1−learning_rate*(λ/n) 。 如果我们继续使用λ=0.1这将意味着少得多的重量衰变,且因此太大的正则化的影响较小。 我们通过改变补偿λ=5.0

采用同型号不同量的相同数据时,这是唯一有用的,但我认为它开辟了它应该如何工作的一些直觉的大门,而且,更重要的是,通过允许您微调拉姆达加快hyperparametrization过程在较小的子集,然后扩大规模。

对于选择精确值,他在他的结论表明, 如何选择一个神经网络的超参数纯粹的实证方法:从1开始,然后逐渐繁衍和除以10,直到找到幅度的正确顺序,然后做内的本地搜索区域。 在评论这个SE相关的问题 ,用户布赖恩Borchers的也表明一个非常著名的方法可能是针对本地搜索有用:

  1. 就拿训练和验证套小的子集(能够使许多人在合理的时间量)
  2. 与启动λ=0和一些区域内的少量增加,执行模型的快速训练和验证,并绘制两个损失函数
  3. 您会发现三件事情:
    1. 该CV损失函数将始终比培训一个更高的,因为你的模型训练数据优化的专门( 编辑:一段时间后,我已经看到了MNIST情况下加入L2帮助CV损失减少比培训一个,直到快收敛性。这可能是由于数据的荒谬一致性和次优hyperparametrization虽然 )。
    2. 培训损失函数将其最小为λ=0 ,然后用正则增加,因为防止从模型拟合最佳训练数据正是正规化一样。
    3. 该CV损失函数将开始高在λ=0 ,然后下降,然后会在某一时刻再次增加( 编辑:这个假设的设置是能够过度拟合为λ=0 ,即该模型具有足够的动力并没有其他的正规化装置被大量应用 )。
  4. 为最佳值λ将大概在最小的CV损失函数的地方,它也可能取决于如何训练损失函数看起来像一个小。 请参阅可能的(但不是唯一的一个)的这种表示的画面:而不是“模型的复杂性”,你应该解释x轴λ在适当为零,并向左增加

希望这可以帮助! 干杯,
安德烈斯



Answer 3:

上述的交叉验证是在机器学习经常使用的方法。 然而,选择一个安全可靠的正规化参数仍然是在数学研究的一个非常热门的话题。 如果你需要一些想法(并有机会获得一个体面的大学图书馆),你可以看看本文: http://www.sciencedirect.com/science/article/pii/S0378475411000607



文章来源: How to calculate the regularization parameter in linear regression