赞
踩
在前面我们学习了使用梯度下降法来计算参数最优解,其过程是对代价函数相对于每个参数求偏导数,通过迭代算法一步一步进行同步更新,直到收敛到全局最小值,从而得到最优参数值。而正规方程则是通过数学方法一次性求得最优解。
其主要思想是利用微积分的知识,我们知道对于一个简单的函数,我们可以对于其参数求导,并将其值置为0,这样就可以直接得到参数的值。就像就像下面这样:
但是现在的问题是现实的例子都是很多参数的,我们需要做的就是对于这些参数都求偏导数,从而就得到各个参数的最优解,也就是全局最优解,但是困难在于,如果按照上面这么做将会非常费时间,所以有更好的办法。
举如下这个例子:
这里有四个训练样本,以及四个特征变量x1,x2,x3,x4,观测结果是y,还是像以前一样,我们在列代价函数的时候,需要加上一个末尾参数x0,如下:
再将特征参数保存在X矩阵中,对观测结果做同样的操作并保存在向量y中,如图:
这样我们就可以通过下面这个公式得出参数θ最优解。
关于这个式子的推导过程,可以参照下面这个知乎专栏:
正规方程的推导
这仅仅是举了个简单的例子,对于一般情况是这样的:
对于一个训练样本的所有特征参数可以用x(i)向量来表示(注意x0(i)要添加上),而设计矩阵就可以表示为X,是所有样本向量的转置,y还是观测结果的向量,这样表示之后就可以用上面那个公式直接计算出θ的最优解。
我们注意到正规方程有一个求逆矩阵的过程,当得到的该矩阵不可逆该怎么办呢?
遇到这种情况时,一般有两种原因:
其实,本质原因还是线代知识:
首先,这是两个必要条件,
根据性质:r(A.TA) = r(A),A.TA可逆性可转化为A的可逆性。
第一种,实际上是有线性相关的列向量组,矩阵的秩<矩阵的维度,不可逆;
第二种,也是线性代数的知识
梯度下降法:
缺点:
优点:
正规方程:
优点:
缺点:
所以,我们该什么时候选择什么方式进行计算呢?
总结:
取决于特征向量的多少,可以将万作为一个界限,当数量小于10000时,直接选择正规方程,当大于10000时,就可以考虑是否换用梯度下降法或者后面的一些其他算法了。
这是我在学习ng的机器学习课程的基础上,经过自己的一些思考,写下学习笔记,重点是对于一些细节的思考和逻辑的理清。
以上很多都是个人的理解,如果有不对的地方,还请大家指教。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。