【问题标题】:Linear Regression and Gradient Descent in Scikit learn?Scikit学习中的线性回归和梯度下降?
【发布时间】:2016-03-31 20:51:57
【问题描述】:

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

我正在使用来自 scikit learn 的线性回归。它不提供梯度下降信息。我在*上看到了很多关于使用梯度下降实现线性回归的问题。

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

【问题讨论】:

  • 一个注释是关于 LogisticRegression 的,它确实提供了一个名为 solver 的参数,您可以在其中选择它将使用哪个优化器。如果您设置verbose=1,它将显示优化器的调试信息。 scikit-learn.org/stable/modules/generated/…

标签: python machine-learning scikit-learn linear-regression


【解决方案1】:

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

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

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

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

【讨论】:

  • @lejlot 你的意思是 SGDRegressor 吗?
最近更新 更多