如何在线性回归中计算正则化参数
data-mining
machine-learning
regression
5
0

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

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

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

正则化参数(lambda)是模型的输入,因此您可能想知道的是如何选择 lambda的值。正则化参数减少了过拟合,从而减小了估计的回归参数的方差;但是,这样做会以给您的估计增加偏见为代价。 lambda的增加会导致过度拟合的减少,但也会带来更大的偏差。因此,真正的问题是“您愿意承受多少偏差?”

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

收藏
评论

上述交叉验证是机器学习中经常使用的一种方法。然而,选择可靠且安全的正则化参数仍然是数学研究中非常热门的话题。如果您需要一些想法(并可以访问一家体面的大学图书馆),则可以阅读以下文章: http : //www.sciencedirect.com/science/article/pii/S0378475411000607

收藏
评论

封闭式(TIKHONOV)与梯度下降

嗨!那里的直观和一流的数学方法很好的解释。我只是想添加一些特殊性,这些特殊性不是“解决问题”的地方,无疑可以帮助加快速度,并使寻找良好正则化超参数的过程保持一致。

我假设您正在谈论通过lambda项线性加权的L2 (ak“权重衰减”)正则化,并且您正在使用封闭形式的Tikhonov方程来优化模型的权重(强烈建议用于低维线性回归模型),或带有反向传播梯度下降的某些变体。并且在这种情况下,您想选择提供最佳泛化能力的lambda值。


闭表(TIKHONOV)

如果您能够使用模型进行Tikhonov处理( Andrew Ng说尺寸小于10k,但是这个建议至少有5年的历史了) Wikipedia-确定Tikhonov因子提供了一种有趣的封闭形式解决方案,事实证明该解决方案可以提供最佳价值 。但是此解决方案可能会引起我不知道的某种实现问题(时间复杂度/数值稳定性),因为没有主流算法可以执行。不过,这份2016年的论文看起来很有希望,如果您确实必须将线性模型最优化至最佳状态,则值得一试。

  • 为了更快地实现原型,此2015 Python软件包似乎可以迭代处理,您可以让它进行优化,然后提取lambda的最终值:

在这种新的创新方法中,我们推导了一种迭代方法来解决一般的Tikhonov正则化问题,该方法收敛于无噪声解决方案,并且不依赖于lambda的选择,但仍然避免了反演问题。

并且从该项目的GitHub自述文件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)


梯度下降

这部分的所有链接均来自迈克尔·尼尔森(Michael Nielsen)令人惊叹的在线图书“神经网络与深度学习”,推荐讲座!

对于这种方法,似乎更不用说了:成本函数通常是非凸的,优化是通过数值执行的,并且模型的性能通过某种形式的交叉验证来衡量(请参见过度拟合和正则化以及正则化 为何如此)如果您还没有足够的帮助,可以减少这种情况。但是,即使在交叉验证时,尼尔森也提出了一些建议:您可能想看一下有关L2正则化如何提供权重衰减效果的详细说明 ,但总结是,它与样本数n成反比 ,因此,当使用L2项计算梯度下降方程时,

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

他的结论是,当想要对不同数量的样本具有相似的正则化效果时,必须按比例更改lambda:

我们需要修改正则化参数。原因是因为训练集的大小nn=1000变为n=50000 ,这改变了权重衰减因子1−learning_rate*(λ/n) 。如果我们继续使用λ=0.1 ,则意味着重量衰减少得多,因此正规化效果也少得多。我们通过更改为λ=5.0补偿。

这仅在将相同模型应用于不同数量的相同数据时才有用,但我认为这为应该如何工作提供了一些直觉,并且更重要的是,通过允许您微调lambda来加速超参数化过程。以较小的子集进行扩展。

为了选择准确的值,他在他的结论中提出了关于如何选择神经网络的超经验的纯经验方法:从1开始,然后逐步乘以10,直到找到合适的数量级,然后在该范围内进行局部搜索区域。在与SE相关的问题的注释中,用户Brian Borchers建议使用一种非常知名的方法,该方法可能对该本地搜索有用:

  1. 选取训练和验证集的一小部分(以便能够在合理的时间内制作出许多)
  2. λ=0并在某个区域内少量增加,对模型进行快速训练和验证,并绘制两个损失函数
  3. 您将观察到三件事:
    1. CV损失函数将始终高于训练变量,因为您的模型专门针对训练数据进行了优化( 编辑:一段时间后,我看到了MNIST的情况,添加L2可以使CV损失的下降速度快于训练变量,直到可能是由于数据的荒谬一致性和次优超参数化
    2. 训练损失函数的最小值为λ=0 ,然后随着正则化而增加,因为防止模型最佳地拟合训练数据正是正则化所做的。
    3. CV损失函数将从λ=0开始高,然后降低,然后在某个点再次开始增加( 编辑:这是假设设置能够满足λ=0 ,即该模型具有足够的功效并且没有其他正则化意味着大量使用 )。
  4. λ的最佳值可能在CV损失函数最小值附近,也可能取决于训练损失函数的样子。请参见图片,以获取可能的(但不是唯一的)表示形式:代替“模型复杂性”,您应该将x轴解释λ在右侧为零并向左递增

L2诊断:应当将x轴解释为<code>λ</ code>在右侧为零并向左递增,而不是“模型复杂性”

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

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号