Batch 梯度下降算法求解线性回归

线性回归函数

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=1m(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} θjJ(θ0,θ1)=m1i=0m(hθ(xi)yi)θj(hθ(xi)yi)=m1i=0m(hθ(xi)yi)θj(yij=0nθjxji)=m1i=0m(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=1m(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值