Linear Regression
线性回归简介
回归的由来
FrancisGalton,英国生物学家,他研究了父母身高与子女身高之间关系后得出,若父母身高高于平均大众身高,则其子女身高倾向于倒退生长,即会比其父母身高矮一些而更接近于大众平均身高。若父母身高小于平均身高,则其子女身高倾向于向上生长,以更接近于大众平均身高。此现象,被Galton称之为回归现象,即regression.
什么是线性回归?
回归分析是一种统计工具,它利用两个或两个以上变量之间的关系,由一个或几个变量来预测另一个变量。
回归分析中:
- 自变量只有一个时,叫做一元线性回归, h(x)=b0+b1x h ( x ) = b 0 + b 1 x
- 自变量有多个时,叫做多元线性回归, h(x1,x2,...,xp)=b0+b1x1+...+bpxp h ( x 1 , x 2 , . . . , x p ) = b 0 + b 1 x 1 + . . . + b p x p
分类(Classification)与回归(Regression)都属于监督学习,它们的区别在于:
分类:定性输出称为分类,或者说是离散变量预测。如识别正常邮件/垃圾邮件;识别图像中的人脸/非人脸;识别信贷中的正常行为/欺诈行为。(左图)
回归:定量输出称为回归,或者说是连续变量预测。如给定了房子的面积、地段和房间数,预测房子的价格。(右图)
房屋面积和卧室数目与房屋价格的关系
- m: 训练数据的大小
- x: 输入变量,是向量
- y: 输出变量,是实数
- (x,y): 一个训练实例
- (x(i),y(i)) ( x ( i ) , y ( i ) ) : 第i个训练实例,i是上标而不是指数
- n: 特征向量的个数,例如本实例中为2
模型:线性回归
如果假设训练集中的数据使用线性回归解决的话,假设函数如下:
the θi θ i are the parameters (also called weights)
如果将
θ
θ
表示为向量:
θ=[θ0,θ1,θ2]T
θ
=
[
θ
0
,
θ
1
,
θ
2
]
T
,
x
x
表示为向量:,其中
x0=1
x
0
=
1
,则
其中, hθ(x) h θ ( x ) 表示以 θ θ 为参数。对于一般问题,公式如下:
策略:最小二乘法(估计点和观测点之间的距离平方和达到最小)
基本思想:
简单地说,最小二乘(LMS algorithm )的思想就是要使得估计点和观测点之间的距离平方和达到最小.这里的 二乘 指的是用平方来度量观测点与估计点的远近(在古汉语中“平方”称为“二乘”),“最小”指的是参数的估计值要保证各个观测点与估计点的距离的平方和达到最小。
最小二乘的作用
用于得到回归方程的参数的一个最优估值。在统计学上,该估值可以很好的拟合训练样本。并且对于新的输入样本,当有了参数估值后,带入公式可以得到输入样本的输出。
损失函数(cost function)
算法:梯度下降(gradient descent)
使用梯度下降(gradient descent)来求参数,更新规则为:
(This update is simultaneously performed for all values of j = 0, … , n.)
Here, α is called the learning rate.
当只有一个训练样例时,偏导数的计算公式如下:
将上面结果带入公式(6)得:
或
当然,公式(7) /(8)只是针对一个训练实例时的更新规则。The rule is called the LMS update rule (LMS stands for “least mean squares”),and is also known as the Widrow-Hoff learning rule.
从公式(8)中可以看出每次更新的值是和误差项(error): (y(i)−hθ(x(i))) ( y ( i ) − h θ ( x ( i ) ) ) 成比例的,当 (y(i)−hθ(x(i))) ( y ( i ) − h θ ( x ( i ) ) ) 的值较大时,每次改变的值就较大,反之较小。当 (y(i)−hθ(x(i))) ( y ( i ) − h θ ( x ( i ) ) ) 已经很小时,说明已经达到拟合的要求, θ θ 的值就不变了。
We’d derived the LMS rule for when there was only a single training example. There are two ways to modify this method for a training set of more than one example:
- 批处理梯度下降
- 随机梯度下降
批处理梯度下降(batch gradient descent)
算法:
可以看出, θj θ j 的值每更新一次都要遍历样本集中的所有样本,得到新的 θj θ j ,看是否满足阈值要求,若满足,则迭代结束,根据此值可得到 hθ(x) h θ ( x ) ; 否则继续迭代。注意到,虽然梯度下降法易受到目标函数的局部极小值的影响,但是一般的线性规划问题只有一个极小值,所以梯度下降法一般可以收敛到全局的最小值。例如, J J 是二次凸函数,则梯度下降法的示意图:
图中,一圈上表示代价函数的函数值相同,类似于地理上的等高线,从外圈开始逐渐迭代,最终收敛到全局最小值。
上图中的立体图为:
更通俗化的解释是:
(1)上图中图形其实像一个碗一样,有一个最低点。找这个最低点的办法就是,先随便找一个,然后沿着这个碗下降的方向找,最后就能找到碗的最低点。
(2)如何找某一点下降的方向?找那一点导数的反方向。如下图:
(3)只要将任意一个点,沿着使导数的反方向慢慢移动,那么最终会到达使最小的那一点。(注:最小二乘法是个凸函数,所以局部最优值也即为全局最优值)
(4) 是自定义的,叫学习速率(learning rate)。
- 设置太小,经过多次才能收敛,导致收敛速度很慢很慢。
- 设置太大,会导致超过最优点发生震荡现象,可能永远无法收敛。
一般程序里会写明最多循环次数以及收敛条件。若能自动收敛,甚好,若不能,则循环指定次数后,强行退出。此时,你需要调参数或者重新慎视假设模型!
梯度下降算法会导致局部极值点的产生,解决这个的方法是随机进行初始化,寻找多个最优点结果,在这些最优点中找到最终结果。
批梯度下降算法(batch gradient descent),当数据量较大时,每迭代一次就要遍历全部数据一次,这样会使得运行速度变成龟速。为了解决这个问题,可以使用随机梯度下降算法
随机梯度下降(stochastic gradient descent)
算法:
该方法更新参数时,不必遍历整个数据集,每次更新只需要一个样本。该算法可以达到很高的效果,但是会导致遍历次数的增多,不能精确收敛到最优值等问题。该方法被称为随机梯度下降(stochastic gradient descent)或增量梯度下降(incremental gradient descent)。
注意:需要同步更新权值
批梯度下降 VS 随机梯度下降
批处理梯度下降法, θ θ 每更新一次,需要用到样本集中的所有样本;随机梯度下降法, θ θ 每更新一次,只用到训练集中的一个训练样本,所以一般来说,随机梯度下降法能更快的使目标函数达到最小值(新样本的加入,随机梯度下降法有可能会使目标函数 J J 突然变大,迭代过程中在变小。所以 是在全局最小值附近徘徊,但对于实际应用来说,误差完全能满足要求。另外,对于批处理梯度下降法,如果样本集中增加了些许训练样本,就要重新开始迭代。由于以上原因,当训练样本集较大时,一般应用随机梯度下降法。
另,判断收敛的方法有两种规则:
- 两次迭代后参数的变化很小很小
- 两次迭代后目标函数的变化很小很小
正规方程组(Normal Equation)
梯度下降算法是求目标函数最优解的一种解法,对于本问题,我们可以直接求出参数值而不用迭代的方法。这种方法称为正规方程法。
正规化方程的实质即:最小二乘法
梯度下降 VS 正规方程组
Gradient Descent | Normal Equation |
---|---|
自定义 | 不需要定义 |
盾环N次才能得到最佳w值 | 不需要任何循环操作 |
特征个数非常大时,也适用 | X X <script type="math/tex" id="MathJax-Element-33">X</script> 的转阵与逆矩阵的计算量很大,导致特征个数多时,会很慢 |
需要特征缩放(feature scaling) | 不需要feature scaling |
特征缩放(feature scaling)
当有多个特征时,若多个特征的表达之的范围不一样,会有什么影响和后果?
比如,继续拿预测房价作为例子。现在它的特征增加了,特征1是面积,特征2是房间数,特征3是房子的年龄。很明显,这三个特征的值的范围是有很大差异的。
- 特征1:100到300之间
- 特征2: 2到5之间
- 特征3:20到60年之间
若不做任何处理,则特征1和3对结果的影响远大于特征2,而可能扭曲了真实情况下各特征在最终结果中所应占的权重比例。
所以,一般情况下,特征与特征之间的值变化范围差异过大时,我们用 feature scaling 的手段来规范化特征值,使每个特征的特征值都处于-1至1之间。
如果不同变量之间的大小不在一个数量级,feature scaling 能大大减少寻找最优解的时间;
feature scaling 的方法可自定义,常用的有:
- rescaling:(X - mean(X))/(max - min)
- 中值正规化(mean normalization):(X-mean(X))/ std, std是标准方差
常见问题
问题1:固定步长,会不会在接近最小值点时步长过大?
答: 不会。因为实际起作用的步长是 步长 * 斜率值,而越接近最小值点时斜率约接近0,步长 * 斜率就会变小。
问题2: 步长大小如何选择?
答:步长过小会导致成本函数收敛速度慢,过大可能会导致成本函数不收敛。可以用0.1,0.01,0.001这样间隔10倍或者3倍尝试,看成本函数变化曲线。曲线下降太平缓需要加大步长,曲线波动较大、不收敛时需要减小步长。
问题3:随机梯度下降能找到使代价函数最小的值么?
答:不见得,但是随着迭代次数的增加,它会在最优解附近晃悠,但是这个值对我们而言就够用了,机器学习本身就不是100%正确的算法。
问题4:既然有正规组方程,可以直接求解,何必使用梯度下降法?
答:因为正规方程组涉及矩阵求逆操作,但并不是任何时候这个逆矩阵都存在,比如样本数少于特征值数时即m