机器学习--线性回归

2018-10-19  本文已影响0人  下雨天的蓝

本文参考吴恩达机器学习课程第2章
线性回归公式:
f(x)=\theta_0 + \theta_1x
代价公式(误差均值中的2用来抵消求导得来的2):
J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m(f_{\theta}(x)^i - y^i)^2

目标:代价最小化
这里演示单变量线性回归时:
\theta_0=0, f(x)=\theta_1x
可对J(\theta_1)求导,
J^{'}(\theta_1)=\frac{1}{m}\sum_{i=1}^m(\theta_1x^i - y^i)
此时J^{'}(\theta_1)=0方可求出\theta_1

实际上,由于代价函数经常含有2个及以上参数,目前函数处于三维空间x, y, z分别为\theta_0,\theta_1,J(\theta_0,\theta_1),无法直接求导获得最佳参数组合
所以我们实际上,是不断尝试\theta_0,\theta_1不同的值,找到损失结果最小的那组(\theta_0,\theta_1)
我们如何找到合适的尝试方法来找到这组参数呢,目前使用梯度下降法

梯度下降.png

算法特点:从不同的起始值开始,获得的局部最优解是不一样
为了方便,设 \theta_0=0,\theta_1=0
\alpha为学习率(不变),\frac{d}{d\theta_i}J(\theta_i)为偏导数,参数更新公式:
\theta_i:= \theta_i - \alpha\frac{d}{d\theta_i}J(\theta_0,\theta_1)(i=0,1)

具体展开:
\theta_0:=\theta_0-\alpha\frac{d}{d\theta_0}J(\theta_0,\theta_1)=\theta_0-\frac{1}{m}\sum_{i=1}^m(\theta_0 + \theta_1x^i-y^i)
\theta_1:=\theta_1-\alpha\frac{d}{d\theta_1}J(\theta_0,\theta_1)=\theta_0-\frac{1}{m}\sum_{i=1}^m(\theta_0 + \theta_1x^i-y^i)*x^i

  1. 达到局部最优解时(图中某一处局部最低点时),此时导数项为0,\theta_i:= \theta_i - \alpha*0,参数不再更新,且随着J(\theta)接近最低点,导数项也会越来越小,所以暂时学习率可不变。

  2. 梯度下降可以用于更新任何可微(因为需要求导)的代价函数J,目前使用的梯度下降用到了\sum_{i=1}{m},意味着每下降一次遍历一整个数据集,也称batch梯度下降算法。

上一篇下一篇

猜你喜欢

热点阅读