【问题标题】:Is there any function in SKlearn to solve a large linear regression with l2 norm efficient?SKlearn 中是否有任何函数可以解决具有 l2 范数有效的大型线性回归?
【发布时间】:2021-03-26 20:48:46
【问题描述】:

现在,我需要用 L2 范数 (y=xw, y.shape=[5,1],x.shape=[5,100K+]) 求解一个非常大的线性回归。 我试过sklearn.linear_model.Ridge,但速度太慢(花费超过 30 分钟) 那么,SKlearn 是否还有其他功能可以有效地解决大型线性回归?

【问题讨论】:

  • 我认为您的回归根本没有任何意义。您有 5 个观察值和 100K+ 变量要回归?
  • 我认为是这样,但是“通过回归局部二元特征以 3000 FPS 进行人脸对齐”解决了第 3.2 节中 [y=68*2 x=100k+] 的大型线性回归,并预测了人脸对齐成功。我猜 X 的稀疏性促成了这个过程

标签: scikit-learn linear-regression


【解决方案1】:

尝试使用不同的求解器,例如一个迭代并设置max_iter 更低或tol 更高。来自documentation

  • ‘sparse_cg’使用 scipy.sparse.linalg.cg 中的共轭梯度求解器。作为一种迭代算法,这个求解器更 比“cholesky”更适合大规模数据(可以设置 tol 和 max_iter)。

  • ‘lsqr’使用专用的正则化最小二乘例程 scipy.sparse.linalg.lsqr。它是最快的并且使用迭代 过程。

  • “sag”使用随机平均梯度下降,“saga”使用其改进的、无偏的版本,名为 SAGA。这两种方法也使用 迭代过程,并且通常比其他求解器更快 n_samples 和 n_features 很大。注意‘sag’和‘saga’快 只有在具有大致相同的特征上才能保证收敛 规模。您可以使用缩放器对数据进行预处理 sklearn.preprocessing.

【讨论】:

  • 非常感谢!另外,我忘了提一下:x 是一个非常稀疏的二进制矩阵。我相信稀疏求解器可能会提高速度。
  • 不客气,如果它解决了您的问题,请随时投票并接受我的回答;)
猜你喜欢
  • 2015-12-29
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 2014-05-05
  • 2017-07-29
  • 2019-01-23
  • 2015-01-08
  • 2016-10-25
相关资源
最近更新 更多