【问题标题】:Ridge regression and OLS regression in MatlabMatlab中的岭回归和OLS回归
【发布时间】:2016-10-21 19:45:44
【问题描述】:

岭回归与 OLS 回归略有不同。在数学上,OLS 回归使用公式

其中岭回归使用公式

我想使用岭回归来避免多重共线性,但得到了非常奇怪的结果,这比简单地使用 regress() 要差得多。在 matlab 中,要调用函数 ridge,必须输入一个 X、一个 Y 和一个 k 值。理论上,如果 k 设置为零,这些方程应该是相同的;但是当它们在我的代码中被调用时,使用相同的 X 和 Y 值,我会收到两个非常不同的 B 矩阵(如下所示)。有人可以解释为什么会发生这种情况吗?

b_ridge = ridge(Y_current,X, 0)

    12.4525
    9.0099
    0.2808
    -1.5426
    -1.1107

b_regress = regress(Y_current,X)

    3.5586
    0.8805
    0.1670
    -0.3934
    -0.8526

【问题讨论】:

  • 能否给我们一些关于Y_currentX 的概念?

标签: matlab regression


【解决方案1】:

根据ridge 文档:

结果是在对x 列进行居中和缩放后计算的,因此它们的平均值为 0,标准差为 1。

这是一个使用列向量的示例:

>> x = randn(5,1);
>> y = randn(5,1);
>> ridge(y, x, 0)
ans =
  -0.045681220595243
>> regress(y, x)
ans =
  -0.028738686366027
>> regress(y, (x-mean(x))/std(x))
ans =
  -0.045681220595243

【讨论】:

  • 感谢您的回答!我正在四处寻找,您可以通过删除放入 X 作为比例因子的列并将比例因子输入设置为 0 来获得与回归相同的结果。再次感谢! b_regress = regress(Y_current,X); b_ridge = ridge(Y_current,X(:,2:5), 0, 0);
猜你喜欢
  • 2017-05-27
  • 2019-10-11
  • 2012-10-07
  • 2020-09-27
  • 1970-01-01
  • 2018-11-17
  • 2016-06-28
  • 2019-07-13
  • 2014-06-17
相关资源
最近更新 更多