美文网首页
线性回归

线性回归

作者: 巴拉巴拉_9515 | 来源:发表于2019-07-17 20:32 被阅读0次

    一、概念引入

    线性回归,就是能够用一个直线/一个平面···较为精确地描述数据之间的关系。常见的格式为:
    Y=\theta_0+\theta_1X_1+...+\theta_nX_n

    通过计算数据的线性回归,可以得到各个变量X对于Y的权重\theta,可以由已知的X推导出Y值。

    例如:银行借贷额度由你的工资和年龄决定。
    那么对于借贷额度而言,工资和年龄哪个比较重要?
    已知你的工资和年龄,能否推断出银行为你开放借贷额度为多少?


    线性回归就是假设借贷额度Y,工资X_1和年龄X_2成线性关系: Y=\theta_0+\theta_1X_1+\theta_2X_2
    \theta_1\theta_2表示工资X_1和年龄X_2对于借贷额度的重要性权重。
    如果已知\theta_0\theta_1\theta_2的值,就可以根据工资和年龄推断出银行为你开放借贷额度

    二、成本函数

    那么如何获得\theta_0\theta_1\theta_2的值呢?
    引入一个成本函数 J(\theta),有些地方也叫“损失函数”:
    J(\theta) = \frac{1}{2m}\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2
    这个函数的输入对象为m*n的数据:

    特征1 特征2 ... 特征n Y
    x11 x12 ... x1n y1
    x21 x22 ... x2n y2
    ... ... ... ... ...
    xm1 xm2 ... xmn ym

    (y^{(i)}-\theta^Tx^{(i)})^2就是第i个实际值y_{(i)}和算法计算值之间的差距平方。

    引入成本函数 J(\theta)用来描述算法的拟合效果, J(\theta)越小说明拟合效果越好。

    所以求算法最优的参数\theta等价与计算最小J(\theta)\theta的值。

    三、梯度下降

    那么怎么才能求得最小的 J(\theta)呢?
    假设 下图为J(\theta)的空间分布图,X轴、Y轴为\theta_1\theta_2。随着\theta_1\theta_2的变化,J(\theta)的值也在变化。

    当然我们的目的是找到J(\theta)最小时的\theta_1\theta_2的值。

    是不是和我们上山下山有点像,一开始在A点,朝着下坡的方向走一步到新的A_1;然后朝着下坡的方向再走一步,···,走到局部最低点以后,朝着上坡的方向走一步,一步步走,直到最后知道全局的最低谷。

    所谓上坡、下坡其实就是J(\theta)在各个\theta上的偏度,例如计算J(\theta)\theta_j上的偏度:
    \frac{\partial J(\theta)}{\partial \theta_j} = \frac{\partial [\frac{1}{2m}\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2]}{\partial \theta_j}
    =\frac{1}{2m}\frac{\partial [\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2]}{\partial \theta_j}
    偏导数可以穿透累加器
    =\frac{1}{2m}\sum_{i=1}^m\frac{\partial [(y^{(i)}-\theta^Tx^{(i)})^2]}{\partial \theta_j}
    微分链接法则
    =\frac{1}{2m}\sum_{i=1}^m [2(y^{(i)}-\theta^Tx^{(i)})*\frac{∂}{∂θ_j}(y^{(i)} - \theta^Tx^{(i)})]
    =-\frac{1}{m}\sum_{i=1}^m((y^{(i)} - \theta^Tx^{(i)})x_j^{(i)})

    经过偏度的计算,知道下一步的方向,但每个人迈一步的长度是有限制的,我们引入学习率\alpha,相当于迈一步的长度(先这么理解)。

    以上通过偏导获得下一步的方向,通过设置学习率确定步伐的长度,因此下一个落脚点θ'_j为:
    θ'_j=θ_j−α\frac{∂}{∂θ_j}J(θ)

    例如,J(\theta)=\theta^2; 偏导数J'(\theta)=2\theta
    设置初始起点为(1,1),学习率\alpha=0.4
    \theta^0=1
    \theta^1=\theta^0-\alpha*J'(1)=0.2
    \theta^2=\theta^1-\alpha*J'(0.2)=0.04
    \theta^3=\theta^2-\alpha*J'(0.04)=0.008
    \theta^4=\theta^3-\alpha*J'(0.008)=0.0016
    ······慢慢达到谷底
    如果初始起点为(1,1),学习率为0.2
    \theta^0=1
    \theta^1=\theta^0-\alpha*J'(1)=0.6
    \theta^2=\theta^1-\alpha*J'(0.6)=0.576
    \theta^3=\theta^2-\alpha*J'(0.576)=0.3456
    \theta^4=\theta^3-\alpha*J'(0.3456)=0.20736
    \theta^5=\theta^4-\alpha*J'(0.20736)=0.124416
    \theta^6=\theta^5-\alpha*J'(0.124416)=0.0746496
    \theta^7=\theta^6-\alpha*J'(0.0746496)=0.04478976
    \theta^8=\theta^7-\alpha*J'(0.04478976)=0.026873856
    ······慢慢达到谷底
    如果初始起点为(1,1),学习率为0.8
    \theta^0=1
    \theta^1=\theta^0-\alpha*J'(1)=-0.6


    以上过程可以发现,学习率\alpha的大小和步伐的大小有关,学习率\alpha越大,步伐越大。

    初始值的设置会影响到最终J(θ)的最小值,它可能是局部最小值,也可能是全局最小值。

    学习速度的设置也会影响到梯度下降的性能和结果:
    1)当设置过小时,由于沿着最陡峭方向每次迈进的步伐太小,而导致收敛时间过长;
    2)当设置过大时,很有可能会直接越过最小值,而无法得到J(θ)的最小值。

    通过梯度下降的方法,我们得到Y=\theta_0+\theta_1X_1+...+\theta_nX_n的最优参数\theta,此时的拟合模型是最优的,和真实数据差距最小的。

    至此,我们得到训练样本X和Y之间的关系和每个X对于Y的权重。

    五、备注

    (1)微积分基本法则

    法则一:对 y(x)=cx^n ,其针对 x 的偏导数为 ∂xf(x)=cnx^{n−1}

    法则二:偏导数可以穿透累加器,即\frac{∂}{∂x_0}\sum_{i=0}^nF(x_i)=\sum_{i=0}^n\frac{∂}{∂x_0}F(x_i)

    法则三:微分链接法则,比如 f(x) 是以 x 为自变量的函数,令 J(x)=g(f(x)) ,则 J(x) 的微分方程为
    \frac{∂}{∂x}J(x)=g′(f(x))×f′(x)

    (2)参考资料

    [1] 视频学习:https://www.bilibili.com/video/av39800693?from=search&seid=7055609900300366029
    [2] 线性回归算法推导:http://blog.kamidox.com/gradient-descent.html
    [3]单变量梯度下降案例:https://blog.csdn.net/weixin_42278173/article/details/81511646

    相关文章

      网友评论

          本文标题:线性回归

          本文链接:https://www.haomeiwen.com/subject/rldclctx.html