python-解决线性最小二乘的最快方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-解决线性最小二乘的最快方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2233字,纯文字阅读大概需要4分钟。
内容图文
![python-解决线性最小二乘的最快方法](/upload/InfoBanner/zyjiaocheng/670/4a099fe71a6b48388012f3e0067c2539.jpg)
在https://math.stackexchange.com/a/2233298/340174中提到,如果通过LU分解完成线性方程“ M·x = b”(矩阵M为平方)的求解会很慢(但使用QR分解则更慢).现在我注意到numpy.linalg.solve实际上正在使用LU分解.实际上,我想针对最小平方的非平方范德蒙设计矩阵V求解“ V·x = b”.我不要正则化.我看到了多种方法:
>使用numpy.linalg.lstsq解决“ V·x = b”,该问题使用基于SVD的Fortran“ xGELSD”. SVD应该比LU分解还要慢,但是我不需要计算“(V ^ T·V)”.
>使用numpy.linalg.solve解决“(V ^ T·V)·x =(V ^ T·b)”,该问题使用LU分解.
>使用numpy.linalg.solve解决“ A·x = b”,它使用LU分解,但直接根据https://math.stackexchange.com/a/3155891/340174计算“ A = xV ^ T·V”
或者,我可以使用scipy(https://docs.scipy.org/doc/scipy-1.2.1/reference/generated/scipy.linalg.solve.html)的最新解决方案,该解决方案可以对对称矩阵“ A”使用对角线旋转(我想这比使用LU分解要快),但是我的scipy停留在1.1.0上,所以我不无法访问.
从https://stackoverflow.com/a/45535523/4533188开始,包括计算“ V ^ T·V”在内,求解似乎比lstsq快,但是当我尝试使用它时,lstsq更快.也许我做错了什么?
解决我的线性问题的最快方法是什么?
没有实际选择
> statsmodels.regression.linear_model.OLS.fit使用Moore-Penrose伪逆或QR分解np.linalg.inv np.linalg.svd numpy.linalg.solve,这对我来说似乎不太有效.
> sklearn.linear_model.LinearRegression使用scipy.linalg.lstsq.
> scipy.linalg.lstsq也使用xGELSD.
>我希望计算“(V ^ T·V)”的逆数会非常昂贵,因此我放弃了“ x =(V ^ T·V)^-1·(V ^ T·b)”的直接计算.
解决方法:
我将忽略该问题的Vandermonde部分(气泡评论指出它具有解析的逆函数),而是回答有关其他矩阵的更一般的问题.
我认为这里可能会混淆一些事情,因此我将区分以下几点:
>使用LU的V x = b的精确解
>使用QR精确求解V x = b
>使用QR的V x = b的最小二乘解
>使用SVD的V x = b的最小二乘解
>使用LU的V ^ T V x = V ^ T b的精确解
>使用Cholesky精确求解V ^ T V x = V ^ T b
您链接的第一个maths.stackexchange答案是关于案例1和案例2.当它说LU很慢时,表示相对于特定类型矩阵的方法,例如正定,三角形,带状…
但是我想您实际上是在询问3-6.最后一个stackoverflow链接指出6比4快.正如您所说,4应该比3慢,但是4是唯一适用于秩不足的V的链接.通常6应该比5快.
我们应该确保您做的是6,而不是5.要使用6,您需要将scipy.linalg.solve与假定_a =“ pos”一起使用.否则,您将完成5.
我还没有找到一个在numpy或scipy中执行3的功能. Lapack例程是xGELS,似乎没有暴露于科学.您应该可以先使用scupy.linalg.qr_multiply,然后再执行scipy.linalg.solve_triangular.
内容总结
以上是互联网集市为您收集整理的python-解决线性最小二乘的最快方法全部内容,希望文章能够帮你解决python-解决线性最小二乘的最快方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。