首页 > 解决方案 > sklearn 的 LinearRegression 是否使用 SVD?

问题描述

我找不到 sklearn 的实现细节LinearRegression。在https://scikit-learn.org/stable/modules/linear_model.html,第 1.1.1.2 节。似乎暗示它使用SVD。我认为我见过的大多数实现都使用 QR 分解。有谁知道为什么 sklearn 使用 SVD 代替(假设这确实是它使用的)?

标签: scikit-learnscipyregressionlinear-regression

解决方案


Scikit-learnLinearRegression使用不同的算法来拟合回归模型:

  • scipy.linalg.lstsq在密集的情况下positive=False
  • scipy.sparse.linalg.lsqr在稀疏的情况下positive=False
  • scipy.optimize.nnls什么时候positive=True

有关这些算法的更多详细信息,请参阅 scipy 文档:


关于 scipy 在gelsd中默认使用的选择scipy.linalg.lstsq,例如参见这个线程


推荐阅读