线性回归-理论篇
“回归”的由来
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