吴恩达机器学习笔记(四)

第五章 多变量线性回归

多功能

    符号定义:

    n表示特征的数量,

    x表示输入变量(或者特征),

    y表示输出变量(预测的目标变量),

    x(i)表示第i个训练样本的输入特征值(i指的是索引,表示第多少个),

    y(i)表示第i个训练样本中的第j个特征量的值。

    有了多个特征向量,继续讨论假设形式应该是怎么样的。

    单个特征量的线性回归假设:


    多个特征量的线性回归假设:


    例:假设是为了预测房屋的价格,多个特征量包括楼层数、卧室数、使用年数等会影响房屋的价格。

           为了表示方便,将上述多个特征量的线性回归假设公式简化:

           假设X0=1,特征向量x是一个从0开始标记的n+1维的向量:

    同时,把参数都看做一个向量:

    现在假设可写成:

    其中x0=1,这就是所谓的多元线性回归。(多个特征量或变量来预测y)

多元梯度下降法

    多元假设:


    参数:

    梯度下降函数:

    梯度下降的过程:

    更新的例子:

多元梯度下降法演练(1)-特征缩放

    如果你有一个机器学习问题,这个问题有多个特征,如果你能确保这些特征都处在一个相近的范围,这样梯度下降就能更快的收敛。

    例如有两个特征值:

    (1)x1表示房屋面积的大小,取值在0~2000之

    (2)x2表示卧室的数量,取值在1~5之间。

       通常,执行特征缩放的目的是将特征的取值约束到-1到+1的范围内。也就是说(),这个范围可以灵活的选择,只要不是太大或太小是可接受的。

    在特征缩放中,有时会进行称为均值归一化的工作。如果有一个特征,用来替换,让特征值具有为0的平均值。

    对于其他特征值,例如:

    房屋的面积取值在0~2000之间,可以用下面的公式:

    卧室的数量取值在1~5之间,可以用下面的公式:

    更一般的规律:

    其中,μi是训练集中特征xi(j)的平均值avg(xi);Si是该特征值的范围,表示为max(xi)-min(xi),也可以把它设置为标准差。

    特征缩放是为了放梯度下降能够运行的更快一点,可以让迭代的次数更少一点。

多元梯度下降法(2)-学习率

    梯度下降的更新算法如下:


    (1)如何确保梯度下降能够正确的进行;

    (2)如何选择学习率α。

    这两个问题是在梯度下降法中需要认真解决的。 

    下面的图展示了梯度下降法的正确执行过程:

    横轴表示迭代次数,纵轴表示代价函数每次迭代之后的结果,所以这里显示梯度下降的每次迭代后代价函数的值。可以通过这样的图像来判断梯度下降是否已经收敛。

    介绍一种自动收敛测试:如果代价函数J(θ)一步迭代后的下降小于一个很小的值ε,这个测试就判断函数已经收敛。(ε可可以是小于10^-3)但是选择这样的阈值ε是非常困难的,所以通过上述的图像判断更清晰可靠。

    通过上述的图像可以判断如何选择学习率α:

    例如:

    如果看到图像是上述这样的,意味着需要选择较小的α;

    已证明的结论表明:只要选择较小的α,那么每次迭代之后的代价函数J(θ)都会下降。

    总结:

    (1)如果α太小,则梯度下降法会收敛缓慢;

    (2)如果α太大,则梯度下降法可能不会再每次迭代都下降,甚至最终导致不收敛。

特征和多项式回归

    如何将模型和与数据进行拟合呢?答:使用线性回归的方法。

    除了线性回归外,我们也能采用多项式回归,举例如下假设函数:

    可以定义为:

正规方程

    到目前为止一直是用的梯度下降法来最小化代价函数,通过多次迭代收敛,找到局部最优值。相反的,正规方程提供了一种求θ的解析解法,可以不需要通过迭代一次性求得解,一步得到最优值。

    假设对于一个代价函数:


    可以通过求导数的方法得到使J(θ)的最小得θ值。

    除了梯度下降法,另一种求最小值的方式则是让代价函数导数为0,求θ值。

    通过此方法可以求出θ0,θ1,...,θm,但是比较复杂,求得:

    使得代价函数最小化的θ。

    在Octave或MATLAB编程语言中,计算上述的命令可以表示为:

    X'表示X的转置,pinv是用来计算逆矩阵的函数。

    在一般的情况下,假设有m个训练样本,还有n个特征向量。每个训练样本可能是这样的向量:

    下面这个图比较了两个算法之间的区别

    所以可以根据特征量n的多少来决定选择梯度下降法还是正规方程法。但是根据具体的特征量的数量和具体的问题,这两种算法都是值得学习的。

正规方程在矩阵不可逆情况下的解决方法

    问题如下:

    如果矩阵不可逆的情况该怎么办?

    在Octave里,有pinv和inv两种方法用来求矩阵的逆,但一个求得是伪逆,另一个求得是逆。

    对于不可逆的情况下,我们可以采取减少特征量和使用正规化方式来改善。


 



猜你喜欢

转载自blog.csdn.net/qq_34611579/article/details/80717001