作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想尝试使用 LSMR 算法,所以我生成了一些数据并运行了最小二乘法。为什么 LSMR 解决方案和封闭形式的解决方案与我用来生成数据的真实 $\beta$ 不同?
using Distributions: Normal
using IterativeSolvers: lsmr
# Settings
n = 500
k = 50
# Generate data
X = rand(Normal(0.0, 0.1), (n, k)) + rand(Normal(0.0, 0.2), (n, k))
β = randn(k)
y = (X * β) + rand(Normal(0.0, 0.1), n)
# Solutions
closed_form_solution = (X'X) \ (X'y)
lsmr_solution = lsmr(X, y)
# Check solutions
β ≈ closed_form_solution, β ≈ lsmr_solution # returns false, false
最佳答案
我刚刚运行了您的代码并可视化了这些值,这就是我得到的结果。
using Plots
scatter(β)
scatter!(closed_form_solution)
scatter!(lsmr_solution)
如您所见,它们实际上非常接近,因此算法按预期工作。
现在它们不是一样的,因为您已经添加了残差,而算法对此一无所知。他们必须适应他们。如果存在的话,您只能找到底层模型的近似值,而这基本上就是机器学习试图做的事情。
如果你像这样生成y
y = X * β
再次比较你会得到更接近的结果(≈
可能仍然返回 false
,尽管因为浮点错误)。
关于Julia - 最小二乘 - LSMR 和封闭形式的解决方案不同于真实的 `\beta`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70037080/
我是一名优秀的程序员,十分优秀!