【问题标题】:Why ridge regression minimizes test cost when lambda is negative为什么当 lambda 为负时岭回归最小化测试成本
【发布时间】:2014-12-30 04:02:48
【问题描述】:

我正在使用岭回归处理一组数据。将学习到的函数应用于数据时,我发现了一个非常有趣的现象。即,当岭参数从零开始增加时,测试误差不断增加。但是如果我们惩罚小系数(设置参数

这是我的 matlab 代码:

for i = 1:100
  beta = ridgePolyRegression(ty_train,tX_train,lambda(i));
  sqridge_train_cost(i) =  computePolyCostMSE(ty_train,tX_train,beta);
  sqridge_test_cost(i) = computePolyCostMSE(ty_valid,tX_valid,beta);
end
plot(lambda,sqridge_test_cost,'color','b');

lambda 是岭参数。 ty_train 是训练数据的输出,tX_train 是训练数据的输入。此外,我们在这里使用二次函数回归。

function [ beta ] = ridgePolyRegression( y,tX,lambda )
X = tX(:,2:size(tX,2));
tX2 = [tX,X.^2];
beta = (tX2'*tX2 + lambda * eye(size(tX2,2))) \ (tX2'*y);
end

绘制的图片是:

为什么当 lambda 为负数时误差最小?是不是拟合不足的迹象?

【问题讨论】:

标签: matlab machine-learning regression


【解决方案1】:

你不应该使用负 lambdas。

从(概率)理论来看,lambda与参数先验分布的方差的倒数有关,方差不能为负。

从计算的角度来看,它可以(假设它小于协方差矩阵的最小特征值)将您的正定形式变为不定形式,这意味着您将没有最大值,而是鞍点。这也意味着在某些点上,您的目标函数可以随心所欲地小(或大),因此您可以无限期地减少损失,并且根本不存在最小值/最大值。

您的优化算法只给您一个固定点,当且仅当形式为正定时,它才是全局最大值。

【讨论】:

  • 我只是想了解为什么负 lambda 会给出更小的测试错误。这似乎很荒谬......
  • 在某些情况下,narxiv.org/abs/1805.10939
【解决方案2】:

简短回答:当 lambda 为负数时,您实际上是在过度拟合数据。因此,减少错误是合理的。

长答案

正则化项(或许多统计学家所描述的惩罚项)旨在惩罚权重(或即将到来的方程式中所写的贝塔)过高(过度拟合) ) 太低了(欠拟合)。赋予您控制模型行为方式的能力,并且您通常瞄准“正确拟合”模型。

对于数学直觉,您可以检查以下方程式。 (P. S. Equation 截图自 Trevor Hastie 等人的 Elements of Statistical Learning)

当你决定让你的 lambda 为负时,惩罚项确实变成了一个效用项,有助于增加权重(即过度拟合)。

简单地说,过度拟合就是对数据和特征的理解超出了应有的程度,因为您还没有全部人口;因此,您到目前为止所理解的内容在不同的数据集上可能是错误的。

所以,你永远不应该使用 lambdas 的负值。

【讨论】:

    猜你喜欢
    • 2010-12-07
    • 2017-03-06
    • 1970-01-01
    • 2018-02-21
    • 2018-11-17
    • 2018-08-01
    • 2018-09-29
    • 2021-05-28
    • 1970-01-01
    相关资源
    最近更新 更多