1 正规方程(Normal Equation)

之前已经说过了求解代价函数J(θ)最小值的方法——梯度下降法,但是梯度下降法需要多次迭代,而且需要不断的尝试来寻求一个合适的学习速率α。其实是还有其他方法来求J(θ)最小值的。

如下所示,对于具体的代价函数J(θ),可以分别对每个参数θi进行求偏导并令其为零,对于含有n个参数的代价函数,会得到n个方程组,联立求解即可求得J(θ)取最小值时的各个参数的值,用线性代数来求解会更快一点。
ML学习笔记第二周(二):计算参数分析
将上述第二种方法进行整理,就得到了另外一种求解代价函数J(θ)最小值的方法——正规方程法,视频里吴老师只是讲了怎么去应用这种方法,具体的推导过程并没有细说,有兴趣的同学可以看一下参考资料,个人觉得写的还是比较通俗易懂的。

[简单推导:Xθ=y(m个假设函数拍在一起) --> XTXθ=XTy (方阵才可求逆) >>
θ=(XTX)-1XTy (假设XTX可逆) ]

对于下面的例子,我们可以根据正规方程的公式很快求出θ的最终结果,进而求得代价函数J(θ)的最小值,正规方程在Octave/Matlab中实现也是一行语句的是,很简单。

pinv(X'*X)*X'*y

ML学习笔记第二周(二):计算参数分析
需要注意的一点是:
如果使用正规方程法 那么就不需要归一化特征变量;
如果使用梯度下降法,归一化特征变量就非常重要

两种方法优缺点的比较:

梯度下降 正规方程
需要不断尝试选择α 无需选择α
需要多次迭代,画图辅助判断 无需迭代,一次完成
时间复杂度O(kn2) 时间复杂度O(n3)
n大小并不影响运行效率 当n很大(超过1e4)时,运行效率低

2 不可逆的正规方程

1中已经讲到了正规方程求解θ的公式θ=(XTX)-1XTy,这个公式其实是默认XTX可逆,那么当它不可逆的时候,我们需要如何来求解θ呢?

很简单,在Octave/Matlab中还是使用之前的pinv函数,pinv是伪逆函数,即使XTX不可逆仍然可以得到θ的一组解;但是inv就是精确的逆函数。
ML学习笔记第二周(二):计算参数分析
一般情况下,XTX都是可逆的(非奇异),不可逆情况非常少,导致这个矩阵不可逆的原因主要有两个:

冗余特征:也就是训练实例中的某些特征包含的信息很相近,比如预测房价时,特征x1表示平方英尺,x2表示平方米,都是表示面积,两个特征是可以通过公式相互转化的,这种情况被称为线性依赖(linearly dependent),只需要留下其中一个特征表示房屋面积即可。

特征值过多:比如训练实例数m<<特征个数n,试图用10个训练实例去训练100个特征,这很明显不合适,哪有那么多特征可以求。这种情况下,我们下一步需要做的就是在不影响训练过程的前提下,删除某些特征来减少特征的数量,或者是对特征进行进行正则化(regulation)。

3 参考资料

1、机器学习_正规方程(最小二乘法)的推导
2、matlab:inv,pinv逆与伪逆
3、Machine Learning第二讲[多变量线性回归] -(二)计算参数分析
4、机器学习 - Linear Regression with One Variable | Coursera

相关文章:

  • 2021-06-14
  • 2021-11-13
  • 2021-06-01
  • 2022-12-23
猜你喜欢
  • 2021-11-19
  • 2021-06-19
  • 2021-06-12
  • 2021-12-18
  • 2021-12-10
  • 2021-11-16
  • 2021-11-24
相关资源
相似解决方案