吴恩达机器学习笔记24-正规方程法求最优参数

2020-08-14 10:36:37 浏览数 (3)

本文是吴恩达《机器学习》视频笔记第24篇,对应第2周第6个视频。

“Linear Regression with multiple variables——Normal equation”

01

笔记

通过前面的好多视频,我们对线性回归方模型、模型参数的求解有了初步认识,我们有好几个视频都是用梯度下降法来求解模型参数最优值的,除此之外呢?还可以用正规方程来求最优参数,本次视频就讲正规方程。

1.1 正规方程和梯度下降法的比较

梯度下降法,说白了就是我们是使用迭代的方式逐步把最优参数给试出来的;而正规方程呢,我们使用分析的方法可以一次性快、准、狠的把最优解给找出来。

正规方程法的直观理解

我们利用初中的数学知识就可以理解一下正规方程法,以前我们学过的抛物线,假设我们的代价函数是:

上图中抛物线方程,如果系数a>0,则开口向上,有一个最小值点。你看,我们可以很快速的把这个最小值点给找出来。

当然,学过微积分后这个事更简单,我们对抛物线函数求一次导,然后让它等于0,就可以求出代价函数位于最低点时的 .

更进一步的,如果我们的参数不是一个简单的实数,而是一个向量呢?即前面我们用梯度下降法求解的问题放到这个地方,就变成了:

那我们只需要对参数向量的每一个分量求偏导,然后让它等于0,得到一个方程组,把这些参数分量都求出来,就可以得到让代价函数取得最小值的参数向量的值。当然了,这个求取偏微分并求解的过程可能会相当之复杂,但我们要知道有这么一个方法。

1.2 一个例子

依然是卖房子的例子:

我们加上 一个全为1的 ,然后要求解的问题就变成了:

这样的话呢,我们就有了因变量y和自变量矩阵x之间的线性模型关系 ,然后有代价函数:

对这个代价函数求各个 的偏导,然后让它等于0. 就可以求得这样一个参数向量:

这个参数向量,就可以让代价函数取最小值。很多文章管这叫最小二乘法。

回顾一下,正规方程法求解最优参数的过程:假设有m组训练样本,每个样本有n个自变量(特征),然后自变量的矩阵变成:

假如我们研究的对象,只有一个特征,那训练集就是:

相对应的,用前面的正规方程法求得的最优参数就是:

把X上面这个式子里一代,就齐活了。

在程序里,求这个是很简单的。以Octave为例,直接就是下面这样一行命令就可以搞定:

命令的前半部分pinv(X'*X), 表示X的转置与X的矩阵乘然后求逆矩阵。

这样一行命令,就可以求出让代价函数最小的参数,是不是很优秀?

1.3 梯度下降法与正规方程法的比较

相对于梯度下降法,正规方程法无需确定学习率 、无需运行很多次,可以一次命中目标。

但问题是,有时候我们的特征变量特别多的时候(比如上百万)梯度下降法依然可以很好的运行,而正规方程法在计算矩阵乘法、矩阵转置、矩阵的逆的时候就对计算机的算力要求相当高了。

换句话说,当n特别大的时候,就建议使用梯度下降法了。

大和小是比较主观的,什么时候算比较大呢?根据经验,一般在n为万这一量级的时候,就可以考虑使用梯度下降法了。

只要n不是很大,都是建议直接使用正规方程法的。

0 人点赞