线性回归函数
h θ ( x ( i ) ) = θ 1 x ( i ) + θ 0 h_θ(x^{(i)})=θ_1x^{(i)}+θ_0 hθ(x(i))=θ1x(i)+θ0
其中 i i i =1,2,……,m表示样本
损失函数
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ_0,θ_1)=\frac{1}{2m}\sum_{i=1}^m(h_θ(x^{(i)})−y^{(i)})^2 J(θ0,θ1)=2m1i=1∑m(hθ(x(i))−y(i))2
1 2 \frac{1}{2} 21 在这里是为了之后求导运算,将系数归1
函数图形如图
1. 对损失函数求偏导
∂ J ( θ 0 , θ 1 ) ∂ θ j = 1 m ∑ i = 0 m ( h θ ( x i ) − y i ) ∂ ∂ θ j ( h θ ( x i ) − y i ) = 1 m ∑ i = 0 m ( h θ ( x i ) − y i ) ∂ ∂ θ j ( y i − ∑ j = 0 n θ j x j i ) = 1 m ∑ i = 0 m ( h θ ( x i ) − y i ) x j i \begin{aligned} \frac{\partial J(θ_0,θ_1)}{\partial\theta_j} & = \frac1m\sum_{i=0}^m(h_\theta(x^i)-y^i) \frac{\partial}{\partial\theta_j}(h_\theta(x^i)-y^i) \\ & = \frac1m\sum_{i=0}^m(h_\theta(x^i)-y^i) \frac{\partial}{\partial\theta_j}(y^i-\sum_{j=0}^n\theta_jx_j^i) \\ & = \frac1m\sum_{i=0}^m(h_\theta(x^i)-y^i)x^i_j \end{aligned} ∂θj∂J(θ0,θ1)=m1i=0∑m(hθ(xi)−yi)∂θj∂(hθ(xi)−yi)=m1i=0∑m(hθ(xi)−yi)∂θj∂(yi−j=0∑nθjxji)=m1i=0∑m(hθ(xi)−yi)xji
其中j=0,1表示特征数,i表示样本数, x 0 i = 1 x_0^i=1 x0i=1 (用F代替偏导数)
2. 每次迭代同步更新 θ 1 θ 2 θ_1 θ_2 θ1θ2
θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) θ_j:=θ_j−α\frac{1}{m}\sum_{i=1}^m(hθ(x^{(i)})−y^{(i)})x^{(i)}_j θj:=θj−αm1i=1∑m(hθ(x(i))−y(i))xj(i)
temp1 = θ1-αF
temp2 = θ2-αF
θ1 = temp1
θ2 = temp2
每次更新θ值,图像上的点会向梯度反方向移动,同时意味着θ值也不断接近最小值靠近。当θ值不变时,也就意味着此时导数为0,到达最小值
3. 不同学习率α值对于整个梯度下降过程的影响
当α值过小时,每次下降的程度非常小,导致接近最小值的过程较长
当α值过大时,每次步幅下降程度较大,会导致容易错过,最优解,最终反而导致无法 收敛甚至发散
对于α值的选择可以通过损失函数的最小值变化与迭代次数的走势来观察,正常情况会一直下降不断趋于平缓,若反而上升或者来回波动,则说明α值可能取值较大,试着换更小值
注意
即使α值不变时,也可以通过梯度下降不断迭代到最小值。当θ值较大时,所计算的到的梯度值也较大,此时如粉色,下降较大的一步,而此后,新的θ值所计算得到的偏导值会不断减小,也就是说函数图像下降的比较缓慢,此时下降的步幅也就较小。
所以并不一定需要在迭代的过程中修改α值
此方法属于贪心算法的一种,所以容易陷入局部最优解,而无法取得全局最优。最终结果取值与初始值的选取关系很大。
当然,若是凸函数只有一个最优解,则局部最优解也是全局最优解
另外Batch意味着每次迭代更新参数时,都需要计算所有数据,所以才被称作批处理,数据量大时,计算时间会较长
附矩阵方程直接求解
Θ = ( X T X ) − 1 X T Y \Theta = (\pmb{X^TX})^{-1}\pmb{X^TY} Θ=(XTXXTXXTX)−1XTYXTYXTY