美文网首页
线性回归

线性回归

作者: 天行剑 | 来源:发表于2015-09-18 20:19 被阅读1529次

    什么是回归?

    1. 统计回归的任务,是根据自变量x1,x2...xn以及应变量y的观测样本,去估计两者之间近似的函数关系f
    2. 通常,我们假设函数f的数学形式是已知的,但其中的若干个参数是未知的。通过自变量和应变量的观测样本去估计未知的参数值,这种做法叫参数回归。如果函数f是线性函数,则称为线性回归
    3. 自变量x只有一个时,称为一元线性回归,自变量有多个时,称为多元线性回归
    4. 回归属于Supervised Learning,另一种重要的Supervised Learning是分类,两者的区别是回归用于预测连续的实数值,而分类则用于预测有限个离散值

    线性回归

    线性回归的hypothesis表示为:

    J(θ)平面

    梯度下降法

    对上式直接求导来解,复杂度是很高的(O(n3)),所以我们可以使用梯度下降法(Gradient Descent)来求解。
    梯度下降法的来源于负梯度是函数下降最快的方向这一思想,具体的方法如下:

    1. 首先对θ赋值,这个值可以是随机的,但通常让θ是一个全零的向量。
    2. 改变θ的值,使得J(θ)按梯度下降的方向进行减少。

    梯度下降法在数学上可以表示为:
    ![][04]其中α表示学习速率(learning rate),它代表函数在负梯度方向每一次移动的步长。学习速率太大,会使最终结果无法达到最小值,而学习速率太小怎会导致迭代次数过多。我们可以通过观察算法迭代次数—minJ(θ)曲线,判断梯度下降的过程是否正常,如果随着迭代次数的增加,minJ(θ)逐渐减小,并在达到某个值后几乎不再减少,则梯度下降过程正常。如果minJ(θ)不断增大或时增时减,则算法最终可能会无法收敛于J(θ)的最小值处,最可能的原因是学习速率过大,需要减少α的值。
    实际工作中,可以通过选取不同的α值,并观察算法迭代次数—minJ(θ)曲线曲线,来选取最好的学习速率。经验上来说,学习速率的候选值可以按{... , 0.01, 0.03, 0.1, 0.3, ... , 1, ...}这样大约3倍的递增来取。
    梯度下降法不能保证得到全局最优解,只能得到局部最优解,这与参数的初始值有关。从两幅图中可以看到,最终的解与初始位置有密切的关系。

    梯度下降过程

    梯度下降法的思想可以做如下理解:当你在一座高山上的某一点准备下山时,为了能够最快的下山,你会选择最陡的方向走一步。到达新的位置后,重新选择一个最陡的方向再走一步。不断重复上述步骤,就可以以最快的速度下山。

    对于线性回归问题,梯度下降的公式变为:
    ![][05]需要注意的是,参数θ01...θ2在每一轮的迭代中是同步更新的。也就是说,在某一轮更新中,任意参数的更新值,不会参与其他参数的更新计算中。
    同时,由于线性回归的loss function是一个凸函数,所以用梯度下降法可以得到唯一的全局最优解。

    批量梯度下降

    在批量梯度下降中,每一次参数更新都会遍历全部的训练数据{x1, y1}, {x2, y2}, ... , {xm,ym}对于线性回归问题,这种方法可以得到一个全局最优解,但是当样本数据量很大的时候,会非常耗时。

    Feature scaling

    器学习中的一个常用方法,它的主要作用是将不同feature的取值映射到同一个范围中,如(-1, 1),(-0.3, 0.3)等,通常做法如下:![][06]
    其中a为特征xi的均值,b为特征xi的最大值、最大值与最小值之差或标准差。
    在batch gradient descent中,对feature做scaling,可以加速算法收敛,尤其是不同特征的取值范围相差很大的情况。
    除此之外,feature scaling对学习算法精度也有一定的影响。当两个feature取值范围差距很大时,范围更大的feature可能会在模型中起更大的作用,但实际情况中两者的重要性可能是接近的,这就需要做feature scaling。

    多项式回归

    我们可以通过设计高阶特征在线性回归的基础上实现多项式回归。对于线性回归的hypothesis,![][07]令x2=x12, x3=x13,实现了一个3次多项式的回归:![][08]这也是用线性模型实现非线性的常用方法。

    [02]: http://latex.codecogs.com/png.latex?\J(\theta)=\frac{1}{2m}\sum_{i=1}{m}(h_{\theta}(x{(i)})-y{(i)})2
    [03]: http://latex.codecogs.com/png.latex?\\theta^{*}=\arg\min_{\theta}J(\theta)
    [05]: http://latex.codecogs.com/png.latex?\\theta_{j}:=\theta_{j}-\frac{\alpha}{m}\sum_{i=1}{m}(h_\theta(x{(i)})-y{(i)})x_j{(i)}
    [04]: http://latex.codecogs.com/png.latex?\\theta_{j}:=\theta_{j}-\alpha\frac{\partial{J(\theta)}}{\partial\theta}
    [06]: http://latex.codecogs.com/png.latex?\x'{i}=\frac{x{i}-a}{b}
    [07]: http://latex.codecogs.com/png.latex?\h_{\theta}(x)=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+\theta_{3}x_{3}
    [08]: http://latex.codecogs.com/png.latex?\h_{\theta}(x)=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{1}2+\theta_{3}x_{1}3

    相关文章

      网友评论

          本文标题:线性回归

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