在线性回归的正交方程(Normal Equation)推导一文中提到使用向量投影的方法也可以推导出正交方程,该方法简单到只需1步,并能从向量投影的角度体现线性回归的本质。
预备知识:向量投影
平面A由基向量
![]()
所张成(Span),换言之,平面A是
![]()
的列空间。
![]()
是平面外的一点,
![]()
是
![]()
在平面上的投影,
![]()
,求
![]()
是
![]()
和
![]()
之间的距离 :
用人话来解释下:
![]()
构建了一个平面,平面内的任何向量,均可由它俩通过线性组合构建出来,换言之,平面外的向量它俩就搞不定了,向量
就没有落在
构建的平面内,不论
如何组合都不可能组合出
,这个问题
无解。但是,可以组合出
在平面内的投影
,这是平面内最接近
![]()
的点,
![]()
是
![]()
和
![]()
之间的偏差。于是,问题就变成了
:如何找到组合
,使
![]()
。
整个线性代数都在解决一个问题:
![]()
,在在明显无解的情况下(方程数 > 变量数),退而求其次,解决一个可以解决的近似问题:
![]()
。
![]()
垂直于
言归正传,回到线性回归的问题:
线性回归要解决的问题是:找到合适的
![]()
,使
实际应用问,方程的数量(样本数)经常远大于变量/未知数的数量(特征数),例如以下数据情况:100条数据10个字段,意味着100个方程10个未知数,显然,这样的方程组是无解的(over determined),所以我们不得不改变目标,寻找一个最“接近”的近似解
,
使得
,
是
在
的列空间的投影。
将
![]()
代入
![]()
,将
![]()
代入
![]()
,将
![]()
代入
![]()
,于是就得到Normal Equation:
翻译成线性回归的语境:由于
不在
所张成的空间内,不论
如何进行线性组合,都不可能组合出
,但是,可以组合出
在平面内的投影
,线性回归的目标就是找到参数
,使
![]()
。
在理解了线性回归的投影本质后,使用向量投影公式,只需一步就可以得到Normal Equation:
![]()
。
也可以表示为:
![]()
,其中
![]()
,被成为伪
逆矩阵。
最后从代数直觉的角度再来看一下Normal Equation和伪逆矩阵:
回顾我们的出发点
![]()
,如果
![]()
可逆,两边同时乘以
![]()
,显然
![]()
。
但我们在机器学习中,经常面对的是超定(Overdetermined)方程,方程数(数据点的数量,行,记录)大于未知数(即特征数,列,字段),因此
![]()
不可逆。
![]()
是对称矩阵,也称 Gram矩阵,它是
![]()
的方阵,可逆的可能性较高,因此,我们很自然的希望在方程两边同时乘以
![]()
,得到:
![]()
,再两边同时乘以
![]()
就能到Normal Equation。这个推导并不严谨,
![]()
可能不可逆,但可作为快速记忆公式的方法。