如何解决sklearn 的 LinearRegression 是否使用 SVD?
我找不到 sklearn 的 LinearRegression
实现的实现细节。在 https://scikit-learn.org/stable/modules/linear_model.html 中,第 1.1.1.2 节。似乎暗示它使用SVD。我认为我见过的大多数实现都使用 QR 分解。
有谁知道为什么 sklearn 使用 SVD(假设确实是它使用的)?
解决方法
Scikit-learn 的 LinearRegression
使用不同的算法来拟合回归模型:
-
scipy.linalg.lstsq
在具有positive=False
的密集情况下 -
scipy.sparse.linalg.lsqr
在带有positive=False
的稀疏情况下 -
scipy.optimize.nnls
当positive=True
有关这些算法的更多详细信息,请参阅 scipy 文档:
-
scipy.linalg.lstsq
默认使用名为gelsd
的 LAPACK 求解器?gelsd。 使用 A 的奇异值分解和分治法计算线性最小二乘问题的最小范数解。
-
scipy.sparse.linalg.lsqr
使用“迭代方法来近似解” -
scipy.optimize.nnls
使用基于“活动集方法”的“FORTRAN 求解器”
关于 scipy 在 gelsd
中默认使用 scipy.linalg.lstsq
的选择,请参见示例 this thread。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。