Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 2——多元线性回归和正规方程
此系列为 Coursera 网站机器学习课程个人学习笔记(仅供参考)
课程网址:https://www.coursera.org/learn/machine-learning
参考资料:http://blog.csdn.net/SCUT_Arucee/article/details/49448111
http://blog.csdn.net/sinat_30071459/article/details/50721565
一、多元线性回归(Multivariate Linear Regression)
1.1 多元线性回归
在之前的房价预测问题上,我们只考虑了房间面积这一个变量(特征)来预测房屋价格,但是当我们使用房屋面积
我们首先定义几个符号方便之后的讲解:
此时,我们的假设函数为:
扩展到
定义两个
则假设函数可以表示为:
代价函数
也可以写为:
1.2 用梯度下降解决多元线性回归问题
同前面的相同,梯度下降更新公式为:
有
也可以表示为:
同在前面提过的一样,这里之所以会多乘一项
1.3 特征缩放(Feature Scaling)
处理多变量问题时,如果使不同的变量取值都在相似的范围内,那么梯度下降收敛的速度会加快。
下面我们将举例说明为什么以及如何处理。
我们假设上述房价问题中房屋面积大小
在这种情况下,算法很难找到一条捷径快速找到最优解。为了解决这个问题,我们需要进行特征缩放(feature scaling),将特征变量值除以其可以取到的最大值:
这样可确保让不同特征变量的取值在相近的范围内(具有可比性),轮廓图变得更圆,梯度下降算法收敛更快。
进行特征缩放时,通常让每一个特征取值大概在
均值归一化(mean normalization)
除了特征缩放(feature scaling),有时还可以进行均值归一化(mean normalization),使特征值的均值近似于0。
即:
均值归一化不需要太精确(即到底取标准差还是取值范围或者纠结于取某个固定值),其目的只是为了让梯度下降算法收敛速度更快。
1.4 梯度下降的两个问题
梯度下降有两个常见的问题:
- 如何确定梯度下降是正常工作的
- 如何选择学习率
Debugging gradient descent
对于梯度下降,我们的目的是
在这里,我想先区分一下几个在后面的学习中容易混乱的概念:
batchsize: 批大小,在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;
iteration: 1个iteration等于使用batchsize个样本训练一次;
epoch: 1个epoch等于使用训练集中的全部样本训练一次;
需要注意的是,对于不同的问题,梯度下降收敛所需的迭代次数也不同。我们很难确定地说出在第几次迭代算法收敛,因此,我们常常需要
自动收敛测试(Automatic convergence test)
除了可以根据如上所述的
如果选择的学习率
但这里的
同时,
如上图,如果
如果
总结:
- 若
α 太小,则收敛太慢;- 若
α 太大,则J(θ) 可能不会每次迭代都减小,可能无法收敛。
实际上,应该尝试一系列的
1.5 特征选择与多项式回归
特征选择
我们现在已经了解了多变量线性回归,接下来会了解到如何选择特征和如何得到不同的算法。当我们选择了合适的特征,算法会变得非常有效。
仍然以房价问题为例,假设房价受街道临宽(frontage)和纵向深度(depth)共同影响,则假设函数为:
实际上,我们用房屋的面积来预测房价更合适,因此我们可以定义新的特征:
多项式回归(Polynomial Regression)
多项式回归可以帮助我们利用线性回归的方法拟合非常复杂的函数,甚至是非线性函数。
假设房价只与房屋面积大小有关,我们得到的数据集如下图所示:
我们可以有很多模型可供选择来拟合这些数据。我们可以看出,直线(线性回归)无法很好地拟合这些数据,所以,我们可以如下图右上的二次函数来拟合,但二次函数上升到顶点会下降(如下图蓝线所示),而我们不认为房价会随面积的增加而降低,所以选择右下的三次函数来拟合可能更为合适(如下图绿线所示)。
此时,
联想到之前的多变量线性回归:
我们可以通过设置特征变量:(
将多项式回归和多变量线性回归联系起来。
需要注意的是,如果房屋的大小取值范围是:
不同的特征变量取值范围差异会变得非常大,这时,我们就需要进行前面所说的归一化过程,才能将这些变量的值变得具有可比性。
在上述例子中,除了选择三次函数模型,我们还有其他合理的选择,例如平方根函数:
只要能够通过设计不同的特征,取得更好的拟合效果就行。在之后的学习中我们会介绍一些算法可以帮助你自动选择合理有效的特征。
二、正规方程(Normal Equation)
2.1 正规方程(Normal Equation)
在之前所讲的梯度下降算法中,我们通过多次迭代来计算梯度下降,而正规方程提供了一种可以一次性求解最优
首先我们回忆一下微积分是怎样处理最小值问题
1、
2、
然而,这种计算很复杂。下面我们会介绍一种新的方法。
举一个例子,如下图:
我们可以在数据前面补一列
接下来,我们要对特征变量
其中,
对
利用刚刚创建的
使用正规方程法时不需要归一化特征变量。
正规方程与梯度下降的对比
对比梯度下降法和正规方程法求解
通常,
2.2 Normal Equation Noninvertibility
在选择正规方程法的时候,我们往往会遇到下面两个问题:
如果
(XTX)−1 不可逆怎么办?
首先,这种情况并不多见;其次,Andrew Ng教授强调了Octave里的pinv()伪逆函数依旧可以求解。为什么
(XTX)−1 会不可逆?
(联系线性代数的知识)
① 存在多余的特征,即存在特征变量之间是线性相关的。
针对这种情况,可删除一些特征变量直至特征变量之间没有互相线性相关的特征存在。
② 特征变量太多(e.g.m⩽n )
针对这种情况,可删除一些特征变量或使用正则化(regularization)的方法使得即使只有很小的训练集(m 很小),也能找到适合很多特征的θ 值,后面我们会介绍正则化(regularization)。
附:课后测试题答案
答案:C