吴恩达(Andrew Ng)《机器学习》课程笔记(2)第2周——多变量线性回归
目录
四、多变量线性回归(Linear Regression with multiple variables)
4.2. 多变量梯度下降(Gradient descent for multiple variables)
4.3. 梯度下降法实践1——特征缩放(Feature Scaling)(归一化)
4.4. 梯度下降法实践2——学习率(Learning rate)
4.5. 特征和多项式回归(Features and polynomial regression)
5.5. 控制语句:for,while,if语句(Control Statements_ for, while, if statements)
四、多变量线性回归(Linear Regression with multiple variables)
4.1. 多维特征(Multiple features)
前面介绍的是单变量线性回归如下图所示:
现在介绍多变量线性回归,有多个输入变量x,一个输出变量y。
例如,下图所示的房屋尺寸,数量等构成多个特征。
增加新的特征后,要引入新的注释:
n代表特征向量的数量;
在矩阵中代表第i行。例如:
在矩阵中表示第i行第j个特征;例如
知道了上面后,多变量假设h表示为:
为了简化公式,引入,则公式转化为:
其中,x,θ分别表示为:
4.2. 多变量梯度下降(Gradient descent for multiple variables)
与单变量线性回归类似,在多变量线性回归中,我们也构建一个代价函数(cost function)。
我们的目标和单变量线性回归问题一样,要找出使得代价函数最小的参数。
多变量线性回归的批量梯度下降算法为:
求导可得出:
n=1,单变量(一维特征)
n>=1,多变量(多维特征)
最开始随机选择一系列的参数值,计算所有的预测结果,再给所有的参数一个新的值,不断迭代循环,直到收敛为止。
4.3. 梯度下降法实践1——特征缩放(Feature Scaling)(归一化)
多维特征,我们要保证这些特征具有相近的尺度,这样使得梯度下降算法收敛更快。
以房价问题为例,假设两个特征,房屋的尺寸和房屋的数量,尺寸的值在0-2000,而房间数量的范围在0-5,很显然,两个特征的差距很大。以两个参数分别为横纵坐标,绘制代价函数的等高线图,图像看起来很扁,这样,在梯度下降算法中,需要迭代循环很多次才能收敛,这样时间会大大增加。
特征之间差距很大这将使得算法迭代次数变多,图中红色代表收敛的次数。
所以,解决的方式,是将所有特征尽量缩放到一个区间范围内。如(-1,1)之间。
如下图所示,为一种缩放方法,使得特征缩放到(0,1)区间内。这样等高线图变得圆一些。收敛次数将减少。
特征缩放区别选择,有很多(-1,1),(0,1),(0,3)……,但区间范围不能太大或太小。这样也会影响收敛次数。
例如:均值归一化,使得特征缩放到(-0.5,0.5)区间内;
均值归一化公式如下:
有了特征缩放,在梯度下降法中,收敛次数将大大减少,速度将变得更快。
4.4. 梯度下降法实践2——学习率(Learning rate)
不同的数据,在梯度下降法收敛所需要的迭代次数将不同,当然,迭代次数我们不可预知。我们大概绘制出迭代次数和代价函数的趋势图来观测算法在什么时候收敛。
梯度下降法的每次迭代次数受学习率α影响。正如前面一节所说,如果学习率α过小,则收敛所需的迭代次数会很高;如果学习率α过大,则每次地带可能不会使代价函数减少,可能会超过局部最小值区间,导致无法收敛。
4.5. 特征和多项式回归(Features and polynomial regression)
以房屋价格为例,如上图所示:
其中,=frontage(临街宽度),
=depth(深度),
= frontage × depth =area (房屋面积),
房屋价格问题转化为:
使得,房屋价格从多元变量线性问题转化为单变量线性问题,这样可以简化算法的复杂度。 其实,并不是线性问题适合所有的数据。有时候,我们需要曲线(多项式)来解决问题。
例如,下图是房屋价格的数据,如果用直线,去拟合,当然可以。但是用多项式模型,模型预测的数据将会更接近。
如下图,对于上图的数据,如果用二次方模型,最后趋势(蓝色线)将呈现下降趋势,很显然这不符合客观规律,因为房屋价格会随着房屋大小增大而增大,整体应呈现上升趋势。若用,三次方模型,则趋势(绿色线)呈现上升趋势,并且数据拟合的较好。所以,对于这个数据,用三次方模型更合适。
一般情况,拿到数据,通常我们需要将先观察的数据,再决定用什么模型。另外我么可以令:
从而将模型转化为线性回归模型。
根据函数特性,可以使:
或者使用下面的模型:
值得注意的是:采用多项式回归模型,在运行梯度下降算法前,多维特征必须要进行特征缩放(归一化),使每个特征放到一个区间范围内。
4.6. 正规方程(Normal equation)
目前为止,我们仅仅学习梯度下降法,但对某些线性回归问题,正规方程法求解会更好,下面将介绍正规方程法解决线性回归问题。
如上图所示,梯度下降法将不断迭代,直到收敛;正规方程与此不同,正规方程将一次就可以找到最优解。下面给出利用正规方程求解得到最小参数θ :
下面举个例子进行说明:
如上面的表格所示,房屋的四维特征对应最后的房屋价格。利用正规方程的解以此为求出:
由公式可得出:
最后,使得代价函数最小的最优解可以一次得到,相比于梯度下降法简单得多。在Octave或Matlab程序中,一句话就可以解决:
Octave/Matlab: pinv(X’*X)*X’*y
注:对于不可逆矩阵,正规方程不可以用。
下面将梯度下降法和正规方程法进行比较:
总之,只要特征变量数目不太大(小于1万),通常使用正规方程法,而不是用梯度下降法。
后面,我们要学习分类算法,如逻辑回归算法,并不能使用正规方程法,对于复杂的学习算法,我们将不得不使用梯度下降法求解。因此梯度下降法可以在大量多维特征变量的线性回归问题。
五、Octave 教程
Octave最初是模彷Matlab而设计,语法基本上与Matlab一致,严谨编写的代码应同时可在Matlab及Octave运行,但也有很多细节上差别。一些软件开发小组也使用两者兼容的语法,直接开发可以同时在Matlab和Octave使用的程序。所以直接用Matlab就行了,我自己安装的是Matlab R2017b版本。
Matlab 一些基本操作可以看我的博客,比较简单,容易上手。
我的博客链接: https://blog.****.net/zaishuiyifangxym/article/details/81746332
其他的操作比较简单,下面的内容直接省略。需要的可以查阅书籍:《MATLAB R2016a完全自学一本通》
电子版pdf链接:https://download.****.net/download/zaishuiyifangxym/10552738
5.1. 基本操作(Basic Operations)
5.2. 移动数据(Moving Data Around)
5.3. 计算数据(Computing on Data)
5.4. 绘图数据(Plotting Data)
5.5. 控制语句:for,while,if语句(Control Statements_ for, while, if statements)
5.6. 矢量化(Vectorization)
参考资料
[1] Andrew Ng Coursera 机器学习 第二周 PPT