在这门Coursera机器学习课程中,提到梯度下降应该会收敛。
我使用的是Scikit-learn中的线性回归。它没有提供关于梯度下降的信息。我在StackOverflow上看到很多关于如何使用梯度下降实现线性回归的问题。
我们如何在现实世界中使用Scikit-learn的线性回归?或者为什么Scikit-learn在线性回归输出中不提供梯度下降信息?
回答:
Scikit-learn为线性回归提供了两种方法:
-
LinearRegression
对象使用来自scipy的普通最小二乘法求解器,因为线性回归是两种具有闭合形式解的分类器之一。尽管机器学习课程中提到,你实际上可以通过简单地对一些矩阵进行求逆和乘法来学习这个模型。 -
SGDRegressor
是随机梯度下降的一种实现,非常通用,你可以选择惩罚项。要获得线性回归,你可以选择损失函数为L2
,并且惩罚项设置为none
(线性回归)或L2
(岭回归)
没有“典型的梯度下降”,因为在实践中它很少使用。如果你能将损失函数分解成可加项,那么随机方法被认为表现更好(因此使用SGD),如果你有足够的内存,OLS方法更快更简单(因此使用第一种解决方案)。