美文网首页
线性回归

线性回归

作者: 天行剑 | 来源:发表于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

相关文章

  • 机器学习实战——回归

    本章内容】 线性回归 局部加权线性回归 岭回归和逐步线性回归 例子 【线性回归】 wHat = (X.T*X).I...

  • 线性回归模型

    参考:1.使用Python进行线性回归2.python机器学习:多元线性回归3.线性回归概念 线性回归模型是线性模...

  • 通俗得说线性回归算法(二)线性回归实战

    前情提要:通俗得说线性回归算法(一)线性回归初步介绍 一.sklearn线性回归详解 1.1 线性回归参数 介绍完...

  • 第一次打卡

    线性回归主要内容包括: 线性回归的基本要素线性回归模型从零开始的实现线性回归模型使用pytorch的简洁实现线性回...

  • 2020-02-14

    线性回归:线性回归分为一元线性回归和多元线性回归,一元线性回归用一条直线描述数据之间的关系,多元回归是用一条曲线描...

  • 逻辑回归和线性回归对比

    简单说几点 线性回归和逻辑回归都是广义线性回归模型的特例。他们俩是兄弟关系,都是广义线性回归的亲儿子 线性回归只能...

  • 算法概述-02

    1.逻辑回归和线性回归的联系和区别: 逻辑回归和线性回归的都是广义的线性回归。 线性回归是根据最小二乘法来建模,逻...

  • 【机器学习实践】有监督学习:线性分类、回归模型

    线性模型 为线性模型 分类和回归的区别 分类:离散回归:连续本文主要关注线性回归模型 常用线性回归模型类型 OLS...

  • 统计学习基础复习浓缩版

    1.简单线性回归 2.多元线性回归 3.多项式回归 4.广义线性回归(含逻辑斯谛回归) 广义线性回归模型通过拟合响...

  • Linear Regression

    在线性回归模型中,我们分为单元线性回归和多元线性回归(Multivariate Linear Regression...

网友评论

      本文标题:线性回归

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