机器学习笔记02:多元线性回归、梯度降落和Normal equation
在《机器学习笔记01》中已经讲了关于单变量的线性回归以及梯度下降法。今天这篇文章作为之前的扩展,讨论多变量(特征)的线性回归问题、多变量梯度下降、Normal equation(矩阵方程法),以及其中需要注意的问题。
单元线性回归
首先来回顾一下单变量线性回归的假设函数:
Size( |
Price( |
---|---|
2104 | 460 |
1416 | 232 |
1534 | 315 |
852 | 178 |
… | … |
我们的假设函数为
多元线性回归
下面介绍多元线性回归(Linear Regression with Multiple features/variables)。同样以预测房价为例,假设我们对房价的预测涉及到4个因素:Size、Number of bedrooms、Number of floors、Age of house。假设我们的训练集如下:
Size( |
Number of bedrooms | Number of floors | Age of house(years) | Price( |
---|---|---|---|---|
2104 | 5 | 1 | 43 | 460 |
1416 | 3 | 2 | 40 | 232 |
1534 | 3 | 2 | 30 | 315 |
852 | 2 | 1 | 36 | 178 |
… | … | … | … | … |
符号说明(Notation):
符号 | 含义 |
---|---|
|
number of features(特征的数量,上表中为4) |
|
input(features) of |
|
value of feature j in |
|
number of training examples(训练集样本的数量,比如上表为4) |
1、假设函数(Hypothesis function)
既然是线性回归,我们的假设函数当然应该是一条直线:
为了方便,我们记
所以有
其中,
2、多变量梯度下降(Gradient descent for Multiple Variables)
1.假设函数(Hypothesis function):
2.误差函数(Cost function):
注意:上面三种形式都是等价的。
在单元线性回归中,我们只对
注意:在一次迭代过程中,必须同时更新每个
上面的
在执行足够次数的迭代 (iteration) 之后,我们就能取得最佳的
3、特征缩放(Feature scaling)
我们来考虑这样一个实例:还是预测房价,但是假设每个训练样本有两个特征:
Size( |
Number of bedrooms | |
---|---|---|
Range | 0-2000 | 1-5 |
如果直接进行梯度下降的话,速度可能会非常的慢。至于为什么我们先来看看
假如只考虑假设函数的
特征缩放(feature scaling),顾名思义,就是将特征的取值范围进行缩放,我们采用如下公式对特征进行缩放(还是以上面那个例子来解释):
由此可见,缩放之后的等高线图更接近一个圆,而不是一个很扁的椭圆,这样梯度下降法将运行得更加快速。
另外需要说的是,我们一般会希望将每个特征的范围都缩放到 -1 与 1 之间,并且对于偏离这个范围不太大的特征不进行缩放(当然也可以按自己喜好进行缩放)。例如:
Origin range | Need feature scaling? |
---|---|
|
not need |
|
not need |
|
need |
|
need |
上面的need和not need并没有一个准确的界限,大可酌情而定。
3、均值归一化(Mean normalization)
正如上面提到的,我们希望将每个特征的范围都缩放到 -1 与 1 之间,并且对于偏离这个范围不太大的特征不进行缩放。
Mean normalization的具体方法是用
4、学习速率 α (Learning rate α )
关于学习速率
1.确保梯度下降(gradient descent)能够正确地工作:
一方面,我们先来思考一下梯度下降的速率,先来看一个关于梯度下降的图:
注意到,在100次迭代之后,误差还是很大的,在200次迭代之后误差任然很可观,但是在300次迭代之后,误差算是比较小了,在400次迭代之后,误差也比较令人满意。但这里我们的关注点在300和400这两个阶段上,300次迭代之后,我们发现误差还比较令人满意,而却需要花费额外的100次才能使得误差好那么一点点,所以我们可以声明一个低度下降的下界,比如将
另一方面,来看看,梯度下降无法正常工作的情况,看图:
出现这三种情况的原因都是因为学习速率
Causes | Results |
---|---|
If |
Slow convergence |
If |
|
2.如何选取一个合适的 α :
如何选取一个合适的
在自己选定的一个大致范围内进行debug。一般间隔为三倍的关系:
5、特征和多项式回归(Features and Polynomial Regression)
这部分只是额外的一些关于选择假设函数的东西。下面看个例子,还是房价预测。
假设函数为:
假设训练数据的分布如下:
我们可能选则次数更高的函数比如二次函数(红色)
再来看看三次函数(绿色)
以上就是关于这个例子的一些候选函数。
另外,我们需要注意一下特征缩放。加入有一个假设函数为:
features | range |
---|---|
|
|
|
|
|
|
在进行feature scaling的时候一定要注意除以对应的正确的range。
5、Normal equation(矩阵方程法)
由于篇幅限制,而且normal equation内容较多,所以暂时留个位置在这里,或者会新开一篇。
如有错误,期望您能纠正,留言或者是e-mail:artprog@163.com