您的位置:首页 > 编程语言 > Go语言

Linear Regression(线性回归)(一)—LMS algorithm

2014-03-02 01:16 288 查看

(整理自AndrewNG的课件,转载请注明。整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/

1.问题的引出

先从一个简单的例子说起吧,房地产公司有一些关于Portland,Oregon的房子信息,下表是房子的面积和价格的对照表:

Living area(feet^2)Price(1000﹩s)
2104400
1600330
2400369
1416232
3000540
…………
将点画在二维坐标下表示:





那么问题就来了,面积为2000的房子,价格是多少呢?表中没有直接给出答案,考虑能否根据表中给定的数据,得出价格和面积之间的一个函数,对于重新给定的面积来对其价格进行预测,这就是我们要解决的问题。有人说这不是数据拟合吗?没错这就是数据拟合!若为线性拟合,则表达式为:

,拟合结果如些图:





如果给matlab这组数据,再用一个线性拟合的指令,很快便能得到



得值。问题是在计算机内部是如何实现这种线性的数据拟合的,没错这就是线性回归的方法。

为了便于更一般描述线性回归的问题,也为了更加严谨,先对本课程中出现的一些基本符号与概念作出定义:


:输入变量(例如本例中的Living area),也称为输入特征;


:输出变量(例如本例中的Price),也成为目标变量;

一对数据

,称为一个训练样本;我们用来学习的训练样本的集合

称为训练集。这里的上标

指的是样本在训练集中的序号。


称为输入变量空间,

称为输出空间变量。

把我们的问题描述的更加正式:给定训练集,去学习一个函数



,这样就可以根据给定的

来预测

了。我们也把这个函数称为假设。过程用图表示如下:





当我们要预测的目标变量是连续时,例如本例中的房屋价格,我们把这种学习问题称为回归问题(regression problem);当目标变量只能取一些离散的值时,我们称这种问题为分类问题(classification problem)。

更一般地,为了使我们的问题更加一般化,假设输入特征可以多于一个,像在本例中除了Living area,还有#bedrooms、whether each house has a fireplace、#bathrooms,and so on。如果对于一个线性回归问题,有

个输入输入变量,则假设

可以写成:



就是我们需要确定的参数。为了使表述更加简洁,我们令

,所以假设可以写成:

,等号右侧



都是向量,

是输入向量的个数(不含

)。那么给定一个训练集,我们应该如何选择或者学习

?有种想法很显然,就是使

更加接近

,至少对于训练样本来说是这样的。为了使这个条件公式化,我们需要提出一个衡量标准的函数,我们定义了一个成本函数(cost function):



至此,线性回归问题就是学习

,使

最小。

2 .LMS算法

既然已经定义了线性回归问题,那么用什么算法求解呢?在数值分析中,遇到过类似的问题,先给

一组初始估计值,通过不断地改变

,使

不断变小,直到

收敛。这里我们应用梯度下降法,它的更新规则是:

(对

同时更新)。其中

称为学习率,通过调整此参数,可以改变迭代速度。在等式右侧,需要计算

的偏导数:









所以更新规则变为:



这个规则就是LMS(最小均方规则)。可以看出每次更新的值是和

成比例的,当

的值较大时,每次改变的值就较大,反之较小。当

已经很小时,说明已经达到拟合要求,

的值就不变了。当只有一个训练样本时,我们得到LMS算法,将LMS算法应用到线性回归有两种方式:批处理梯度下降法和随机梯度下降法。

2.1 批处理梯度下降法

算法:


{



}

可以看出,

的值每更新一次都要遍历样本集中所有的样本,得到新的

,看是否满足阈值要求,若满足,则迭代结束,根据此值就可得到

;否则继续迭代。注意到,虽然梯度下降法易受目标函数的局部极小值的影响,但是一般的线性规划问题只有一个极小值,所以梯度下降法一般可以收敛到全局的最小值。例如,

是二次凸函数,则梯度下降法的示意图:





图中,一圈上表示代价函数的函数值相同类似于地理上的等高线哈,从外圈开始逐渐迭代,最终收敛全局最小值。

2.2 随机梯度下降法

算法:


{


{





}

}

在这个算法中,我们每次更新

只用到一个训练样本。若根据当前样本进行迭代得到一个

,此时会得到一个

,有新样本进来之后,在此基础上继续迭代,有得到一组新的



,以此类推。

总结一下这两个梯度算法:批处理梯度下降法,

每更新一次,需要用到样本集中的所有样本;随机梯度下降法,

每更新一次,只用到训练集中的一个训练样本,所以一般来说,随机梯度下降法能更快的使目标函数达到最小值(新样本的加入,随机梯度下降法有可能会使目标函数

突然变大,迭代过程中在变小。所以

实在全局最小值附近徘徊,但对于实际应用来说,误差完全能满足要求。)。另外,对于批处理梯度下降法,如果样本集中增加了些许训练样本,就要重新开始迭代。由于以上原因,当训练样本集较大时,一般应用随机梯度下降法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: