Normal Equation

之前我们用梯度下降来求解线性回归问题的最优参数,除此之外我们还可以用正规方程法(Normal Equation)来求解其最优参数。

Normal Equation方法的推导有两种方式

矩阵求导(matrix derivative)

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

其中【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

其中X的行表示样本,列表示特征:

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

令导数等于零:

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

因此:

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

关于矩阵求导的公式可以参见:常用的向量矩阵求导公式

下面解释一下部分求导的过程:

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)


线性代数视角

一、求解不可解的方程组

先看一个最最简单的例子——

例1.0 如图,在【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)空间中有两个向量,求一个常数【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)使两个向量满足【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

这个方程明显不可解,因为【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)不共线,无法通过对【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)数乘得到【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

再看下一个比较简单的例子——

例2.0 【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)空间中的平面【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)有一组基【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),如图所示,求出常数【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)使向量【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)满足条件【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

这个方程也明显不可解,因为【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)不在平面【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)上,而【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)的线性组合只能得到平面上的向量

以上两个问题非常的典型,因为在解决实际问题的时候,我们很难得到Perfect Solution,我们只能尽力而为的争取Best Solution。以上两个例子明显没有做到perfect(连基本的方向都错了),那么如何找到Best Solution呢?

二、投影的应用(Projection

思路很简单:我们只要找到一个【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)使【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)方向上的向量【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)距离【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)最近。

回到最简单的例子例1.0,这里重复一遍

如图,在【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)空间中有两个向量,求一个常数【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)使两个向量满足【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

现在应该如何寻找【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)的解呢?

最好的方法就是抛弃【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)向量中垂直【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)的分量,只要计算【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)使【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)等于向量【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)方向的分量(即【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)上的投影(Proj)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)),同时我们把向量【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)垂直【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)方向的分量称为【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)(error)

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

原来的问题【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)变成了求解【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)的估计量

因为【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)合成了【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)向量(【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)),而且【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)垂直于【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)(【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)),所以我们得出了一个非常重要的结论(敲黑板)!!!核心啊!!!

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

这个方程的核心就是写成向量内积形式的【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)的垂直关系,只不过【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)被拆开书写。其实这个方程也可以写作【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),但是写作转置向量【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)的形式可以让这个方程更自然的拓展到高维(向量内积)。好了,我们继续改写方程……

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)
【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

在这一步我们就得到了best【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),但考虑到这并不perfect,所以我们称之为【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

P.S.如果想用投影矩阵P来简化从【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)转换到【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)的过程,可以把【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)的结果带入到【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)中。我们发现投影矩阵【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)在形式上就等于乘数【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),即【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)满足【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

向量a·向量b=| a |*| b |*cosΘ
Θ为两向量夹角
| b |*cosΘ叫做向量b在向量a上的投影
| a |*cosΘ叫做向量a在向量b上的投影

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)分子为【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)上的投影,分母为【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)上的投影,同乘了【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)向量的模,投影的比值即为【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

现在我们再看看怎么在【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)中解决不可解方程。

例2.0 在【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)空间中的平面【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)有一组基【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),如图所示,求出常数【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)使向量【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)满足条件【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

平面【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)有基向量【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),故投影【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)可以表示成基的线性组合【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),即【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

基向量组成的矩阵【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)参数组成的向量【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)与平面垂直的误差向量【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)。(这里插一句话,最小二乘法的核心就是找出一个【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)就是让【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)最小化

我们发现在【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)中的问题【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)在这里拓展成为了【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

相应的,【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)问题在这里拓展成了【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),其中【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

还是一样的套路,我们还是从垂直关系入手——因为【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),而且【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),所以有以下方程组——

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

整理成矩阵的形式——

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

(敲黑板!!!敲黑板!!!)
【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

写到这里回头看看【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)情景下的核心公式【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),可以这家伙换一套马甲又出现了!!!看来方程【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)是一种高维的拓展。我们可以把【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)中的【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)看成一个只有一列的矩阵。

我们继续整理这个公式——

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)
【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

写到这里我们就没什么可以干的了。

有人可能想说——明明还可以继续化简啊!!!

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

但实际的情况中,我们不能保证矩阵【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)总是方阵(square),但是【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)总是可以保证是方阵。因为只有方阵才有逆矩阵,所以我们只能保证有【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),而不能保证有【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

所以我们只能回到【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)这里。如果你有读过Andrew Ng著名的公开课CS229的Lecture Notes,你一定记得他用矩阵求导得出的Normal Equation——

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

你会发现除了【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)不一样以外,我们已经把Normal Equation(【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角))推出来了……我居然在下一部分还没有开始讲就把内容说完了,场面一度非常尴尬啊。可见从投影推出Normal Equation是一件多么自然的事情啊~~~我都不知道哪里切开。

说到这里先总结一下投影的几个意义(敲黑板)!!!

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)的所有可能结果都在一个固定的区域中,在线性代数中我们称这个区域为列空间(column space),列空间顾名思义就是矩阵各列的所有线性组合【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)。在1-D的情况下列空间就是一条线,在2-D的情况下列空间就是一个平面。但是我们的数据哪里会这么恰好的落在矩阵的列空间里呢?天底下哪有这样的好事啊!!!

特别是在数据量特别大的情况下,矩阵特别是在数据量特别大的情况下,矩阵【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)会成为一个【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)的超级高大的【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)矩阵(如下图)。在这种等式数量远大于未知数数量的情况中,我们很难满足每一个等式的约束。【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

但是目标不再在空间里并不代表不能求出解,只能说没有perfect solution(语出Gilbert Strang),但是我们努力一下还是可以做到最好的(best solution)。我们用投影向量【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)来寻找最合适的【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)就是并不存在的完美解【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)的估计值。

三、矩阵求导与投影推导之间的联系

回顾矩阵求导得到的Normal Equation:

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

以及投影视角得到的公式

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

两者除了在符号表示上有所区别,其它的一模一样,现在从符号本身的含义去联系两者。

归根结底,Normal Equation是用来求解一个最优化问题。在投影的方法中,矩阵A作为一个基向量空间,用于寻找最优的【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)以使得最接近【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

矩阵A有多少行就表示基向量空间有多少维(每个特征有多少样本量,就表明在这个空间中有多少维度),有多少列,就表示有多少个基向量。

在线性回归中矩阵A就等同于X,行数为样本量,列数为特征量,b等同于Y,为目标向量。

当特征远远少于样本量的时候说明基向量的空间维数很高,但基向量很少。也就是说在一个很大的空间中,只有少数几个方向给定,需要去拟合向量Y,那难度当然很大,误差就很大。

当特征数量远远大于样本量的时候就相反,基向量空间不大,但基向量的个数很多。也就是说在一个不大的空间中,有很多的基向量,基本涵盖了所有的方向,此时我想要找到一个基向量的线性组合去逼近目标向量Y,那就容易很多了。此时【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)就会强依赖于当前的样本,泛化能力就很差,过拟合。

四、Normal Equation应用

既然Normal Equation在上文都推导完了,这里我们就随便带几个数据来玩玩咯。

练手案例 找一条直线来拟合点 (1,1)、(2,2)、(3,2)

我们如果用一条直线来拟合的话,设【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),我们先得到以下值——

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

我们发现【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)很遗憾的没有解,于是我们左右各乘上【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),祭出了投影大招——【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

再把这个方程变换成Normal Equation:【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

带入数值在Matlab中小跑一下就得到了结果【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

即直线【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)是上述三个点的拟合结果。

五、其他想说的话

1.关于【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)的暴力使用

在前一步可以不用判断是否可解,可以直接使用【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)事实上,在最小二乘时遇到长方形矩阵【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),我们就可以用上【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)替代【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)计算。这是是一种路子很野的但是很简单实用的经验规则,可以简单实验如下——

用直线【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)拟合三个点 (1,1)、(2,2)、(3,2)时,自然希望真实值和估计值的误差【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)越小越好。【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

分别对【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)偏导数等于的零的值——

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)
【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)这边有个小笔误,是对【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)做偏导

整理以上公式我们得到了方程组——

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

再整理一下,把这个方程写成矩阵乘法的形式——

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

在最后一步整理以后我们发现刚才千辛万苦算出来的【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)就是上文的【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)啊!!!

说明这个经验方法是可以信得过的!!!

2.关于化简的问题

因为投影的性质非常美妙,如果矩阵【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)是各行线性无关的方阵(square),说明存在【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角),则Normal Equation会变成如下形式——

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

说明如果存在一个perfect solution,该解不会受到影响。

3.多次投影有影响吗?

已经在空间中的向量乘上投影矩阵【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)仍然等于本身,二次投影不会有任何副作用!也就是说【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)。证明如下——

【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

参考文章:

线性回归及其概率解释

NormalEquation推导过程

相关文章: