gpt4 book ai didi

julia - Julia中的线性回归和矩阵除法

转载 作者:行者123 更新时间:2023-12-04 16:50:37 24 4
gpt4 key购买 nike

OLS的众所周知的公式是(X'X)^(-1)X'y,其中XnxKynx1

在Julia中实现此功能的一种方法是(X'*X)\X'*y

但是我发现X\y给出了几乎相同的输出,只是微小的计算错误。

他们是否总是计算相同的东西(只要n>k)?如果是这样,我应该使用哪一个?

最佳答案

X是正方形时,有一个唯一的解决方案,而LU-factorization (with pivoting)是一种数值稳定的计算方法。这就是反斜杠在这种情况下使用的算法。

X不为平方时(在大多数回归问题中都是这种情况),则没有唯一的解,但有唯一的最小二乘解。用于解决Xβ = yQR factorization方法是一种用于生成最小二乘解的数值稳定方法,在这种情况下X\y使用QR分解,从而提供了OLS解。

注意单词在数值上是稳定的。虽然(X'*X)\X'*y在理论上始终会提供与反斜杠相同的结果,但实际上反斜杠(使用正确的分解因子选择)将更加精确。这是因为分解算法被实现为numerically stable。由于更改(X'*X)\X'*y时会累积浮点错误,因此不建议您将此形式用于任何实际的数值运算。

相反,(X'*X)\X'*y在某种程度上等效于SVD因数分解,这是数值上最稳定的算法,但也是最昂贵的(实际上,它基本上是在写Moore-Penrose pseudoinverse,这是SVD factorization用于解决线性系统的方式)。要使用枢轴SVD直接执行SVD因式分解,请在v0.6上执行svdfact(X) \ y或在v0.7上执行svd(X) \ y。直接执行此操作比(X'*X)\X'*y更稳定。请注意,qrfact(X) \ yqr(X) \ y(v0.7)适用于QR。 See the factorizations portion of the documentation有关所有选择的更多详细信息。

关于julia - Julia中的线性回归和矩阵除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51517147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com