Scikit 中的线性回归和梯度下降学习?

Linear Regression and Gradient Descent in Scikit learn?

在机器学习的 coursera 课程中 https://share.coursera.org/wiki/index.php/ML:Linear_Regression_with_Multiple_Variables#Gradient_Descent_for_Multiple_Variables,它说梯度下降应该收敛。

我正在使用 scikit 学习中的线性回归。它不提供梯度下降信息。我在Whosebug上看到很多关于用梯度下降实现线性回归的问题。

我们如何在现实世界中使用 scikit-learn 的线性回归? 要么 为什么 scikit-learn 不在线性回归输出中提供梯度下降信息?

Scikit learn 为您提供了两种线性回归方法:

  1. LinearRegression 对象使用 scipy 中的普通最小二乘求解器,因为 LR 是具有 封闭形式解 的两个分类器之一.尽管有 ML 课程 - 您实际上可以通过反转和乘以一些矩阵来学习这个模型。

  2. SGDRegressor 这是 随机梯度下降 的一种实现,非常通用,您可以在其中选择惩罚项。要获得线性回归,您选择损失为 L2,惩罚也为 none(线性回归)或 L2(岭回归)

没有“典型的梯度下降法”,因为它在实践中很少使用。如果您可以将损失函数分解为附加项,那么已知随机方法表现更好(因此 SGD)并且如果您可以节省足够的内存 - OLS 方法更快更容易(因此第一个解决方案)。