线性回归-理论篇

 【转载】http://blog.csdn.net/pakko/article/details/36641561

 “回归”的由来

FrancisGalton,英国生物学家,他研究了父母身高与子女身高之间关系后得出,若父母身高高于平均大众身高,则其子女身高倾向于倒退生长,即会比其父母身高矮一些而更接近于大众平均身高。若父母身高小于平均身高,则其子女身高倾向于向上生长,以更接近于大众平均身高。此现象,被Galton称之为回归现象,即regression.

 

什么是线性回归?

回归分析是一种统计工具,它利用两个或两个以上变量之间的关系,由一个或几个变量来预测另一个变量。

回归分析中:

  • 自变量只有一个时,叫做一元线性回归,
  • 自变量有多个时,叫做多元线性回归,

分类(Classification)与回归(Regression)都属于监督学习,它们的区别在于:

  • 分类:定性输出称为分类,或者说是离散变量预测。如识别正常邮件/垃圾邮件;识别图像中的人脸/非人脸;识别信贷中的正常行为/欺诈行为。(左图)
  • 回归:定量输出称为回归,或者说是连续变量预测。如给定了房子的面积、地段和房间数,预测房子的价格。(右图)

 

一元线性回归

问题描述

我想要一套200平方米的房子价格大概是多少呢?这时在数据表中我又找不到到对应的数据,那么这时就要做线性回归分析了。如图找到这样的一条直线,使图中的所有点到直线的距离最小(即误差最小)。

下面我们用数学语言来表达“使图中的所有点到直线的距离最小”这句话。

(1)X与y的关系可以表示为:(b叫偏移,w叫超越平面参数)。

这样的表达还不够统一,不方便计算,我们把上面改写成向量形式,以便于推广到N维形式,改写成正式:


(2)“使图中的所有点到直线的距离最小”用数学的语言描述如下:

 

         这里是变量w的函数,故我们的目标就成了获取使值最小时的w的值。


下图中,该图表示当取各个值时对应的的值,从图中可看出,当分别取特定的某一值时,可达到全局最小值。

 

解决方法

梯度下降算法(Gradient Descent)

循环直到收敛{

 

}

对于线性回归模型,成本函数的导数如下:

           

更通俗化的解释是:

(1)上图中图形其实像一个碗一样,有一个最低点。找这个最低点的办法就是,先随便找一个,然后沿着这个碗下降的方向找,最后就能找到碗的最低点。

(2)如何找某一点下降的方向?找那一点导数的反方向。如下图:


(3)只要将任意一个点,沿着使导数的反方向慢慢移动,那么最终会到达使最小的那一点。(注:最小二乘法是个凸函数,所以局部最优值也即为全局最优值)

(4)是自定义的,叫学习速率(learning rate)。

  • 值设得太大,可能永远无法收敛;
  • 设得太小,则收敛会很慢很慢。

一般程序里会写明最多循环次数以及收敛条件。若能自动收敛,甚好,若不能,则循环指定次数后,强行退出。此时,你需要调参数或者重新慎视假设模型!

 

正规方程组(Normal Equation)

成本函数写成向量形式如下: 

  

我们的目标是使最小,上式对W求导得: 

X是矩阵,代表训练集,每一行是一个样本的各特征值。Y是个向量,对应每个样本的结果值。

 

梯度下降与正规方程组的对比:

 Gradient Descent

 Normal Equation

 自定义

不需要定义

 盾环N次才能得到最佳w值

不需要任何循环操作

 特征个数非常大时,也适用

X的转阵与逆矩阵的计算量很大,导致特征个数多时,会很慢;

适用于特征个数小于100000时使用

 需要特征缩放(feature scaling)

不需要feature scaling

 

多元线性回归(LinearRegression with Multiple Variables)

跟一元线性回归的参数回归方式如出一辙,唯一区别在回归函数的假设上:

多元,故名思义,就是说有多个特征做为输入。那问题就来了,若多个特征的表达值的范围不一样,会有什么影响和后果?

比如,继续拿预测房价作为例子。现在它的特征增加了,特征1是面积,特征2是房间数,特征3是房子的年龄。很明显,这三个特征的值的范围是有很大差异的。

  • 特征1:100到300之间
  • 特征2: 2到5之间
  • 特征3:20到60年之间

若不做任何处理,则特征1和3对结果的影响远大于特征2,而可能扭曲了真实情况下各特征在最终结果中所应占的权重比例。

 

所以,一般情况下,特征与特征之间的值变化范围差异过大时,我们用feature scaling的手段来规范化特征值,使每个特征的特征值都处于-1至1之间。

如果不同变量之间的大小不在一个数量级,作feature scaling能大大减少寻找最优解的时间;

NG给的建议:最大变量和最小变量均值差3倍以内为佳;


注:feature scaling的方法可自定义,常用的有:
1) rescaling
(X - mean(X))/max - min

2) 中值正规化(mean normalization)

(X-mean(X))/ std,  std是标准方差


参考链接:

http://hi.baidu.com/einyboy/item/5ee49dd9c853f1f8cb0c39ae

http://blog.163.com/phoenixbai@126/blog/static/1086513492013953817839

http://blog.sciencenet.cn/blog-427701-688352.html

posted @ 2016-11-25 09:51  花心土豆  阅读(224)  评论(0编辑  收藏  举报