Scikit-Learn线性回归四:梯度下降
- 1、梯度下降
- 1.1、梯度下降概述
- 1.2、梯度下降及原理
- 1.3、梯度下降的实现
- 2、梯度下降法求解线性回归的最优解
- 2.1、梯度下降法求解的原理
- 2.2、梯度下降法求解线性回归的最优解
- 2.3、梯度下降法求解线性回归案例(波士顿房价预测)
- 3、Scikit-Learn梯度下降法
- 3.1、随机梯度下降
- 3.2、Scikit-Learn梯度下降法API
- 3.3、Scikit-Learn梯度下降法案例(波士顿房价预测)
1、梯度下降
1.1、梯度下降概述
在第一篇文章 Scikit-Learn线性回归(一) 中,我们给出了线性回归的损失函数的定义:
L = ∑ i = 1 m ( y i − f ( x i ) ) 2 L=\sum_{i=1}^m(y_i-f(x_i))^2 L=i=1∑m(yi−f(xi))2
回忆一下,损失函数主要用于评估模型拟合的好坏,损失函数衡量了我们构造的模型的预测值与真实值的差异,因此,我们希望我们的预测结果与真实值的差异越小越好。也就是我们希望损失函数取得最小值
损失函数取得最小值是我们构建模型的本质要求,求解模型的特征向量 ω \omega ω是我们构建模型的核心问题
根据损失函数(最小二乘法),我们的求解目标可以转换为求解误差平方和(残差平方和)的最小值:
m i n ω = ∣ ∣ Y − X ω ∣ ∣ 2 2 min_\omega={||Y-X\omega||_2}^2 minω=∣∣Y−Xω∣∣22
而根据数学知识,当我们的误差平方和取得最小值时,线性回归模型特征 ω \omega ω就是最优解
最优解的求解方法主要有两种:最小二乘法(数学方式)和梯度下降法。最小二乘法通过数学求导的方式求函数的极值进而推导出线性回归的解;而梯度下降采用近似逼近,是一种迭代方法
在线性回归(详见:传送门)一文中,我们已经通过最小二乘法推导了线性回归的解析解的正规方程:
ω = ( X T X ) − 1 X T Y \omega=(X^TX)^{-1}X^TY ω=(XTX)−1XTY
然而,很多模型通过这种数学方式求解是推导不出解析解的,所以就需要使用梯度下降法来搜索最优解。基于梯度下降我们可以推导出线性回归的最优解析解。梯度下降法是使用最广泛的一种优化方法
梯度下降法不是机器学习专属的算法,它是一种基于搜索的优化方法,也就是通过不断的搜索然后找到损失函数的最小值
1.2、梯度下降及原理
观察我们的损失函数转换后的求解目标,根据数学知识,误差平方和(函数)为二次函数形式,且函数开口向上,因此,函数一定有唯一最小值。当函数取得最小值时的 ω \omega ω就是最优解
上图中,纵坐标表示损失函数L的值,横坐标表示系数 ω \omega ω,每一个 ω \omega ω都会对应一个损失函数L的值,我们希望损失函数收敛,即找到一个 ω \omega ω值,使得损失函数L的值最小
根据数学知识,要判断一个点A是否是损失函数L的最小值,即求该点的导数。点A的导数就是该点切线的斜率,所以导数描述了一个函数在某一点附近的变化率,并且导数大于零时,函数在区间内单调递增,导数小于零时函数在区间内单调递减
所以, ∂ L ∂ ω \frac{\partial L}{\partial\omega} ∂ω∂L表示损失函数L增大的变化率,- ∂ L ∂ ω \frac{\partial L}{\partial\omega} ∂ω∂L表示损失函数L减小的变化率
再在曲线上定义一点B,B点的 ω \omega ω就是A点的 ω \omega ω值加上损失函数L递减变化率- η ∂ L ∂ ω \eta\frac{\partial L}{\partial\omega} η∂ω∂L:
ω B = ω A − η ∂ L ∂ ω = ω A + ∇ J (