Coursera-吴恩达-机器学习-(第2周笔记)Linear Regression with Multiple Variables

此系列为 Coursera 网站Andrew Ng机器学习课程个人学习笔记(仅供参考)
课程网址:https://www.coursera.org/learn/machine-learning

Week 2 —— Linear Regression with Multiple Variables and Octave/Matlab Tutorial

目录

一 多元线性回归

1-1 多元方程

多元线性回归指的就是有多个X的情况。比如与房价y有关的变量有:房屋面积x1,位置x2。

此时,我们就要把我们的方程 hθ(x)=θ0+θ1∗x 修改为:

hθ(x)=θ0+θ1x1+θ2x2+⋯+θnxn

其实本质并没有变,就是变量x多了,所以参数θ也跟着多了。但是思想还是没有变:通过误差函数,经过梯度下降求参数。

为了结构统一,我们设 x0=1 ;此时方程应为:

hθ(x)=θ0+θ1x1+θ2x2+⋯+θnxn=θTx

如此一来,便将变量向量化了。也变得和第一章的一样了。

1-2 代价函数与梯度下降

Coursera-吴恩达-机器学习-(第2周笔记)Linear Regression with Multiple Variables
梯度下降的方法也没有变,重复直到即可。
Coursera-吴恩达-机器学习-(第2周笔记)Linear Regression with Multiple Variables
其中α的选择与第1周一样:

如果α太小,则收敛速度慢。
如果α太大:每次迭代都不会减少,因此可能不会收敛

在这里,我先区分一下几个在后面的学习中容易混乱的概念:

batchsize: 批大小,在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;
iteration: 1个iteration等于使用batchsize个样本训练一次;
epoch: 1个epoch等于使用训练集中的全部样本训练一次;

需要注意的是,对于不同的问题,梯度下降收敛所需的迭代次数也不同。我们很难确定地说出在第几次迭代算法收敛,因此,我们常常需要J(θ)随迭代次数变化的曲线图帮忙判断。

自动收敛测试(Automatic convergence test)

除了可以根据如上所述的J(θ)随迭代次数变化曲线判断是否收敛外,还可以进行自动收敛测试,即给定一个合适的较小值ε,例如0.001,如果在一次迭代后J(θ)减小到小于ε,则认为梯度下降收敛了

1-3 特征约简

当两种变量数值维度相差过大的时候,梯度下降法会迭代得很慢,比如房屋面积X1都是100多平米,楼层都是1、2、3这样的数字,两种特征就相差很大。

在这种情况下, 我们可以通过使每个输入值在大致相同的范围内来加速梯度下降。(−1 ≤ x(i) ≤ 1)

课程介绍了两种方式:

1.特征缩放
2.均值归一化

  1. 特征缩放
    就是将数字除以最大的数,比如100
  2. 均值归一化
    Coursera-吴恩达-机器学习-(第2周笔记)Linear Regression with Multiple Variables
    均值归一化不需要太精确(即到底取标准差还是取值范围或者纠结于取某个固定值),其目的只是为了让梯度下降算法收敛速度更快。

1-4 多项式回归

有些时候,直线并不能很好的拟合数据。有些时候各种曲线反而更好。比如:
Coursera-吴恩达-机器学习-(第2周笔记)Linear Regression with Multiple Variables
在这种时候, 除了线性回归外(图像是直线),我们也能采用多项式回归 (图像是曲线)。我们的解决办法是设变量, 举例如下假设函数:
Coursera-吴恩达-机器学习-(第2周笔记)Linear Regression with Multiple Variables

在上述例子中,除了选择三次函数模型,我们还有其他合理的选择,例如平方根函数:
Coursera-吴恩达-机器学习-(第2周笔记)Linear Regression with Multiple Variables
只要能够通过设计不同的特征,取得更好的拟合效果就行。在之后的学习中我们会介绍一些算法可以帮助你自动选择合理有效的特征。

二 正规方程

除了梯度下降法,另一种求最小值的方式则是让代价函数导数为0,求θ值 。即:
Coursera-吴恩达-机器学习-(第2周笔记)Linear Regression with Multiple Variables

2-1 正规方程推导

θ=(XTX)1XTy

给出其中一种推导,如下:
(1)在做拟合时,我们希望假设函数Hθ(x)与真实输出y是尽量一致的,因此Hθ(x)=Y

通过 θjJ(θ)=0,(hθ(x)y)xj=0也可以得出Hθ(x)=Y

(2)假设函数Hθ(x)=θ0+θ1x1+θ2x2+...+θnxn=Xθ

其中:

(1)X=[1x1(1)xn(1)1x1(2)xn(2)1x1(m)xn(m)],Y=[y1(1)y1(2)y1(m)],θ=[θ0θ1θn]

(3)由(1)(2)我们可知,Hθ(x)=Xθ=Y

要想求得θ,则X必须是可逆的,而只有方阵才存在可逆矩阵

所以需要凑方阵XTXθ=XTY

θ=(XTX)1XTY

(4)对于(XTX)1(XTX)1不存在的情况是极少的

(XTX)不可逆,则需要考虑以下两个方面:

① 存在多余的特征,即存在特征变量之间是线性相关的。
针对这种情况,可删除一些特征变量直至特征变量之间没有互相线性相关的特征存在。
② 特征变量太多(e.g. m⩽n)
针对这种情况,可删除一些特征变量或使用正则化(regularization)的方法使得即使只有很小的训练集(m很小),也能找到适合很多特征的θ值,后面我们会介绍正则化(regularization)。

2-2 正规方程与梯度下降的优缺点

课堂给出两者区别:
Coursera-吴恩达-机器学习-(第2周笔记)Linear Regression with Multiple Variables

简单整理一下:

梯度下降要设置α并不保证一次能获得最优的α,正规方程不用考虑α。
梯度下降要迭代多次,正规方程不用。(所以,遇到比较简单的情况,可用正规方程)
梯度下降最后总能得到一个最优结果,正规方程不一定。因为正规方程要求X的转置乘X的结果可逆。
当特征数量很多的时候,正规方程计算不方便,不如梯度下降。

总体来说:

  • 正规方程计算巧妙,但不一定有效。
  • 梯度下降法速度慢,但是稳定可靠。

通常,n在10000以下时,正规方程法会是一个很好的选择,而当n>10000时,多考虑用梯度下降法。

三 Octave基础教程

打开 octave官方网站 ,下载windows 64W版本。
新手不要使用ZIP下载,比较难配置。建议直接下载exe 下一步下一步安装即可