如何计算最优岭回归模型

计算科学 matlab 回归
2021-12-26 09:25:21

我发现 R 函数ridge.cv非常有用。

我想在 MATLAB 中实现等效函数。作为起点,我使用了 MATLAB function b0 = ridge(y,X,k,scale),但是它给出了完全不同的结果。为什么会发生这种情况?我应该为变量“比例”设置什么值(1 或 0,它们有什么区别?)?我如何在 MATLAB 中从头开始实现它?

2个回答

您可以获取parcor 包的源代码和文档,其中包括CRAN上的 ridge.cv 函数。

您可以通过查看源代码在matlab中实现该功能。或者,我认为应该可以从 Matlab 调用 R。

岭回归的一种形式是问题:
     最小化 |Ax - b|,并使 x 保持在给定点 x0(通常为 0)附近。
如果我们将其转换为:
     最小化 |Ax - b|^2 + w^2 |x - x0|^2,
我们可以通过在这些扩展输入上运行最小二乘来解决它:

[ A ]    [ b ]
[ w I ]  [ w x0 ]

这里 w 是平衡最小化 |Ax - b| 和保持 x 接近 x0 的权重因子。
不知道该怎么选?经验法则是使 |Ax - b| 和 |x - x0| 大致相等——打印这些值。

补充: 加权最小二乘,具有不同的权重 wi, 是一种强大的方法。
例如,wi1|xi| 推动小 xi朝向 0(想想 iPhone 的手指),“稀疏化”——
一个穷人的 L1 范数正则化方法;套索

不是 Matlab,但希望这会有所帮助。