Normal Equation
之前我们用梯度下降来求解线性回归问题的最优参数,除此之外我们还可以用正规方程法(Normal Equation)来求解其最优参数。
Normal Equation方法的推导有两种方式
矩阵求导(matrix derivative)
其中
其中X的行表示样本,列表示特征:
令导数等于零:
因此:
关于矩阵求导的公式可以参见:常用的向量矩阵求导公式
下面解释一下部分求导的过程:
线性代数视角
一、求解不可解的方程组
先看一个最最简单的例子——
例1.0 如图,在空间中有两个向量,求一个常数使两个向量满足。
这个方程明显不可解,因为与不共线,无法通过对数乘得到。
再看下一个比较简单的例子——
例2.0 在空间中的平面有一组基和,如图所示,求出常数与使向量满足条件。
这个方程也明显不可解,因为不在平面上,而与的线性组合只能得到平面上的向量。
以上两个问题非常的典型,因为在解决实际问题的时候,我们很难得到Perfect Solution,我们只能尽力而为的争取Best Solution。以上两个例子明显没有做到perfect(连基本的方向都错了),那么如何找到Best Solution呢?
二、投影的应用(Projection)
思路很简单:我们只要找到一个使方向上的向量距离最近。
回到最简单的例子例1.0,这里重复一遍
如图,在空间中有两个向量,求一个常数使两个向量满足。
现在应该如何寻找的解呢?
最好的方法就是抛弃向量中垂直的分量,只要计算使等于向量在方向的分量(即在上的投影(Proj)),同时我们把向量垂直方向的分量称为(error)。
原来的问题变成了求解(是的估计量)
因为与合成了向量(),而且垂直于(),所以我们得出了一个非常重要的结论(敲黑板)!!!核心啊!!!
这个方程的核心就是写成向量内积形式的与的垂直关系,只不过被拆开书写。其实这个方程也可以写作,但是写作转置向量的形式可以让这个方程更自然的拓展到高维(向量内积)。好了,我们继续改写方程……
在这一步我们就得到了best的,但考虑到这并不perfect,所以我们称之为。
P.S.如果想用投影矩阵P来简化从转换到的过程,可以把的结果带入到中。我们发现投影矩阵在形式上就等于乘数,即满足。
向量a·向量b=| a |*| b |*cosΘ
Θ为两向量夹角
| b |*cosΘ叫做向量b在向量a上的投影
| a |*cosΘ叫做向量a在向量b上的投影
分子为在上的投影,分母为在上的投影,同乘了向量的模,投影的比值即为
现在我们再看看怎么在中解决不可解方程。
例2.0 在空间中的平面有一组基和,如图所示,求出常数与使向量满足条件。
平面有基向量和,故投影可以表示成基的线性组合,即
令基向量组成的矩阵,参数组成的向量,与平面垂直的误差向量。(这里插一句话,最小二乘法的核心就是找出一个就是让最小化)
我们发现在中的问题在这里拓展成为了。
相应的,问题在这里拓展成了,其中。
还是一样的套路,我们还是从垂直关系入手——因为,而且,所以有以下方程组——
整理成矩阵的形式——
(敲黑板!!!敲黑板!!!)
写到这里回头看看情景下的核心公式,可以这家伙换一套马甲又出现了!!!看来方程是一种高维的拓展。我们可以把中的看成一个只有一列的矩阵。
我们继续整理这个公式——
写到这里我们就没什么可以干的了。
有人可能想说——明明还可以继续化简啊!!!
但实际的情况中,我们不能保证矩阵总是方阵(square),但是总是可以保证是方阵。因为只有方阵才有逆矩阵,所以我们只能保证有,而不能保证有。
所以我们只能回到这里。如果你有读过Andrew Ng著名的公开课CS229的Lecture Notes,你一定记得他用矩阵求导得出的Normal Equation——
你会发现除了和不一样以外,我们已经把Normal Equation()推出来了……我居然在下一部分还没有开始讲就把内容说完了,场面一度非常尴尬啊。可见从投影推出Normal Equation是一件多么自然的事情啊~~~我都不知道哪里切开。
说到这里先总结一下投影的几个意义(敲黑板)!!!
的所有可能结果都在一个固定的区域中,在线性代数中我们称这个区域为列空间(column space),列空间顾名思义就是矩阵各列的所有线性组合。在1-D的情况下列空间就是一条线,在2-D的情况下列空间就是一个平面。但是我们的数据哪里会这么恰好的落在矩阵的列空间里呢?天底下哪有这样的好事啊!!!
特别是在数据量特别大的情况下,矩阵特别是在数据量特别大的情况下,矩阵会成为一个的超级高大的矩阵(如下图)。在这种等式数量远大于未知数数量的情况中,我们很难满足每一个等式的约束。
但是目标不再在空间里并不代表不能求出解,只能说没有perfect solution(语出Gilbert Strang),但是我们努力一下还是可以做到最好的(best solution)。我们用投影向量来寻找最合适的。就是并不存在的完美解的估计值。
三、矩阵求导与投影推导之间的联系
回顾矩阵求导得到的Normal Equation:
以及投影视角得到的公式
两者除了在符号表示上有所区别,其它的一模一样,现在从符号本身的含义去联系两者。
归根结底,Normal Equation是用来求解一个最优化问题。在投影的方法中,矩阵A作为一个基向量空间,用于寻找最优的以使得最接近。
矩阵A有多少行就表示基向量空间有多少维(每个特征有多少样本量,就表明在这个空间中有多少维度),有多少列,就表示有多少个基向量。
在线性回归中矩阵A就等同于X,行数为样本量,列数为特征量,b等同于Y,为目标向量。
当特征远远少于样本量的时候说明基向量的空间维数很高,但基向量很少。也就是说在一个很大的空间中,只有少数几个方向给定,需要去拟合向量Y,那难度当然很大,误差就很大。
当特征数量远远大于样本量的时候就相反,基向量空间不大,但基向量的个数很多。也就是说在一个不大的空间中,有很多的基向量,基本涵盖了所有的方向,此时我想要找到一个基向量的线性组合去逼近目标向量Y,那就容易很多了。此时就会强依赖于当前的样本,泛化能力就很差,过拟合。
四、Normal Equation应用
既然Normal Equation在上文都推导完了,这里我们就随便带几个数据来玩玩咯。
练手案例 找一条直线来拟合点 (1,1)、(2,2)、(3,2)
我们如果用一条直线来拟合的话,设,我们先得到以下值——
我们发现很遗憾的没有解,于是我们左右各乘上,祭出了投影大招——。
再把这个方程变换成Normal Equation:
带入数值在Matlab中小跑一下就得到了结果
即直线是上述三个点的拟合结果。
五、其他想说的话
1.关于的暴力使用
在前一步可以不用判断是否可解,可以直接使用。事实上,在最小二乘时遇到长方形矩阵,我们就可以用上替代计算。这是是一种路子很野的但是很简单实用的经验规则,可以简单实验如下——
用直线 拟合三个点 (1,1)、(2,2)、(3,2)时,自然希望 真实值和估计值的误差越小越好。分别对和求偏导数等于的零的值——
这边有个小笔误,是对 做偏导整理以上公式我们得到了方程组——
再整理一下,把这个方程写成矩阵乘法的形式——
在最后一步整理以后我们发现刚才千辛万苦算出来的就是上文的啊!!!
说明这个经验方法是可以信得过的!!!
2.关于化简的问题
因为投影的性质非常美妙,如果矩阵是各行线性无关的方阵(square),说明存在,则Normal Equation会变成如下形式——
说明如果存在一个perfect solution,该解不会受到影响。
3.多次投影有影响吗?
已经在空间中的向量乘上投影矩阵仍然等于本身,二次投影不会有任何副作用!也就是说。证明如下——
参考文章: