什么叫基本方程(什么是正规方程)
什么叫基本方程(什么是正规方程)那我们只需要对参数向量的每一个分量求偏导,然后让它等于0,得到一个方程组,把这些参数分量都求出来,就可以得到让代价函数取得最小值的参数向量的值。当然了,这个求取偏微分并求解的过程可能会相当之复杂,但我们要知道有这么一个方法。更进一步的,如果我们的参数不是一个简单的实数,而是一个向量呢?即前面我们用梯度下降法求解的问题放到这个地方,就变成了:我们利用初中的数学知识就可以理解一下正规方程法,以前我们学过的抛物线,假设我们的代价函数是:上图中抛物线方程,如果系数a>0,则开口向上,有一个最小值点。你看,我们可以很快速的把这个最小值点给找出来。当然,学过微积分后这个事更简单,我们对抛物线函数求一次导,然后让它等于0,就可以求出代价函数位于最低点时的 .
本文是吴恩达《机器学习》视频笔记第24篇,对应第2周第6个视频。
“Linear Regression with multiple variables——Normal equation”
通过前面的好多视频,我们对线性回归方模型、模型参数的求解有了初步认识,我们有好几个视频都是用梯度下降法来求解模型参数最优值的,除此之外呢?还可以用正规方程来求最优参数,本次视频就讲正规方程。
正规方程和梯度下降法的比较梯度下降法,说白了就是我们是使用迭代的方式逐步把最优参数给试出来的;而正规方程呢,我们使用分析的方法可以一次性快、准、狠的把最优解给找出来。
正规方程法的直观理解我们利用初中的数学知识就可以理解一下正规方程法,以前我们学过的抛物线,假设我们的代价函数是:
上图中抛物线方程,如果系数a>0,则开口向上,有一个最小值点。你看,我们可以很快速的把这个最小值点给找出来。
当然,学过微积分后这个事更简单,我们对抛物线函数求一次导,然后让它等于0,就可以求出代价函数位于最低点时的 .
更进一步的,如果我们的参数不是一个简单的实数,而是一个向量呢?即前面我们用梯度下降法求解的问题放到这个地方,就变成了:
那我们只需要对参数向量的每一个分量求偏导,然后让它等于0,得到一个方程组,把这些参数分量都求出来,就可以得到让代价函数取得最小值的参数向量的值。当然了,这个求取偏微分并求解的过程可能会相当之复杂,但我们要知道有这么一个方法。
一个例子依然是卖房子的例子:
我们加上 一个全为1的 然后要求解的问题就变成了:
这样的话呢,我们就有了因变量y和自变量矩阵x之间的线性模型关系 ,然后有代价函数:
对这个代价函数求各个 的偏导,然后让它等于0. 就可以求得这样一个参数向量:
这个参数向量,就可以让代价函数取最小值。很多文章管这叫最小二乘法。
回顾一下,正规方程法求解最优参数的过程:假设有m组训练样本,每个样本有n个自变量(特征),然后自变量的矩阵变成:
假如我们研究的对象,只有一个特征,那训练集就是:
相对应的,用前面的正规方程法求得的最优参数就是:
把X上面这个式子里一代,就齐活了。
在程序里,求这个是很简单的。以Octave为例,直接就是下面这样一行命令就可以搞定:
命令的前半部分pinv(X'*X) 表示X的转置与X的矩阵乘然后求逆矩阵。
这样一行命令,就可以求出让代价函数最小的参数,是不是很优秀?
梯度下降法与正规方程法的比较相对于梯度下降法,正规方程法无需确定学习率 、无需运行很多次,可以一次命中目标。
但问题是,有时候我们的特征变量特别多的时候(比如上百万)梯度下降法依然可以很好的运行,而正规方程法在计算矩阵乘法、矩阵转置、矩阵的逆的时候就对计算机的算力要求相当高了。
换句话说,当n特别大的时候,就建议使用梯度下降法了。
大和小是比较主观的,什么时候算比较大呢?根据经验,一般在n为万这一量级的时候,就可以考虑使用梯度下降法了。
只要n不是很大,都是建议直接使用正规方程法的。