正规方程

一,什么是正规方程

在前面我们学习了使用梯度下降法来计算参数最优解,其过程是对代价函数相对于每个参数求偏导数,通过迭代算法一步一步进行同步更新,直到收敛到全局最小值,从而得到最优参数值。而正规方程则是通过数学方法一次性求得最优解。

其主要思想是利用微积分的知识,我们知道对于一个简单的函数,我们可以对于其参数求导,并将其值置为0,这样就可以直接得到参数的值。就像就像下面这样:
正规方程_第1张图片

但是现在的问题是现实的例子都是很多参数的,我们需要做的就是对于这些参数都求偏导数,从而就得到各个参数的最优解,也就是全局最优解,但是困难在于,如果按照上面这么做将会非常费时间,所以有更好的办法。

二,正规方程的使用

举如下这个例子:
正规方程_第2张图片
这里有四个训练样本,以及四个特征变量x1,x2,x3,x4,观测结果是y,还是像以前一样,我们在列代价函数的时候,需要加上一个末尾参数x0,如下:
正规方程_第3张图片

再将特征参数保存在X矩阵中,对观测结果做同样的操作并保存在向量y中,如图:
正规方程_第4张图片

这样我们就可以通过下面这个公式得出参数θ最优解。
这里写图片描述
关于这个式子的推导过程,可以参照下面这个知乎专栏:
正规方程的推导

这仅仅是举了个简单的例子,对于一般情况是这样的:
正规方程_第5张图片
对于一个训练样本的所有特征参数可以用x(i)向量来表示(注意x0(i)要添加上),而设计矩阵就可以表示为X,是所有样本向量的转置,y还是观测结果的向量,这样表示之后就可以用上面那个公式直接计算出θ的最优解。

三,不可逆情况

我们注意到正规方程有一个这里写图片描述求逆矩阵的过程,当得到的该矩阵不可逆该怎么办呢?

遇到这种情况时,一般有两种原因:

正规方程_第6张图片

  • 多余特征(线性相关)
  • 太多特征(例如:m<=n)
    - 删除一些特征,或者正则化

其实,本质原因还是线代知识:
首先,这是两个必要条件,
根据性质:r(A.TA) = r(A),A.TA可逆性可转化为A的可逆性。

第一种,实际上是有线性相关的列向量组,矩阵的秩<矩阵的维度,不可逆;

第二种,也是线性代数的知识

  • m < n时,也就是维度小于向量个数,在这里也就是样本数小于特征数,线性相关
  • m=n时,当|A|=0时不可逆,|A|!=0时可逆

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

正规方程_第7张图片

梯度下降法:
缺点:

  • 需要选择学习速率α,而之前的学习也知道α的选择其实十分的困难,非常消耗我们的时间来调试并且选择它。
  • 需要多次迭代,这也是非常消耗时间的。

优点:

  • 当特征参数相当大的时候,梯度下降法也能够很好的工作。

正规方程:
优点:

  • 不需要选择学习速率α
  • 不需要多次迭代

缺点:

  • 需要计算这里写图片描述,而这个计算对于计算机的计算量大致是矩阵维度的三次方,复杂度相当高。
  • 由上面一点就可以看出,当特征参数相当大的时候,正规方程的计算会非常缓慢。

所以,我们该什么时候选择什么方式进行计算呢?

总结:

取决于特征向量的多少,可以将万作为一个界限,当数量小于10000时,直接选择正规方程,当大于10000时,就可以考虑是否换用梯度下降法或者后面的一些其他算法了。


这是我在学习ng的机器学习课程的基础上,经过自己的一些思考,写下学习笔记,重点是对于一些细节的思考和逻辑的理清。

以上很多都是个人的理解,如果有不对的地方,还请大家指教。

你可能感兴趣的:(ml学习笔记)