zoukankan      html  css  js  c++  java
  • 用线性代数理解 Normal Equation

    之前的博客中,我们通过矩阵求导的方式推导了 normal equation。这篇博客中,我们将通过线性代数的角度再次回顾 normal equation。

    Normal Equation 解决的问题

    Normal equation 要解决的问题如下:给出由 $n$ 个未知数组成的 $m$ 个方程,这个方程组用 $Ax=b$ 表示,我们要求出这个方程组的“最佳解”。

    根据线性代数的知识我们知道,这个方程组的解可能有零个、一个或无穷多个。如果这个方程组恰有一个解,那么这个解就是“最佳解”;如果这个方程组有无穷多个解,那么我们随便选择一个解作为最佳解即可。接下来我们重点处理无解的情况。

    假设我们找到的解为 $y$,定义 $b-Ay$ 为方程组的“残差”向量,我们认为让残差的“长度”(说得厉害一点就是 L2-norm)最小的 $y = hat{x}$ 就是方程组的最优解。如果 $A$ 看作 $X$,$x$ 看作 $ heta$,$b$ 看作 $Y$,把这个条件展开来,我们会发现,我们要最小化的式子就是 linear regression 里的代价函数。

    Normal Equation 的推导

    $Ax$ 位于 $A$ 的列空间(以下简称列空间)之中,而 $Ax=b$ 无解告诉我们 $b$ 不在列空间中。$b-Ax$ 是连接 $b$ 与列空间中的一个点 $Ax$ 的向量,所以,我们需要找到在列空间中找到离 $b$ 最近的点,才能使 $b-Ax$ 的长度最小。

    根据几何知识我们知道,只有 $b-Ax$ 与列空间垂直(也就是说 $b-Ax$ 位于左零空间中,或者说 $Ax$ 是 $b$ 在列空间中的投影),$Ax$ 才是离 $b$ 最近的点。我们有:$$A^T(b-Ax) = 0$$ 由此得 $$A^TAx = A^Tb$$ 这和我们利用矩阵求导推出的 normal equation 一致。如果 $A^TA$ 可逆,我们有:$$x = hat{x} = (A^TA)^{-1}A^Tb$$ 则 $b$ 在列空间中的投影为 $$p = A(A^TA)^{-1}A^Tb$$ 如果 $A^TA$ 不可逆,我们之后再讨论。

    Normal Equation 的一些性质

    我们来验证 normal equation 的一些性质。

    原方程组可解时也能用吗

    首先,如果 $b$ 不在列空间中,我们可以用 normal equation 求出最优解;如果 $b$ 在列空间中(即方程组原本就有解),那 normal equation 还能使用吗?

    由于 $b$ 在列空间中,我们有 $$b=At$$ 把式子代入 $b$ 在列空间中的投影 $p$ 有 $$p = A(A^TA)^{-1}A^T(At) $$ $$ = A((A^TA)^{-1}(A^TA))t = At = b$$ 的确得到了原本的解。说明 normal equation 在这个情况下仍然可以使用。

    残差与方差

    我们再来计算一下残差的均值和方差。

    含有 $n$ 个未知数,$m$ 个方程的方程组可以这样表示:$$Cegin{bmatrix} 1 \ 1 \ vdots \ 1 end{bmatrix} + D_1egin{bmatrix} x_{1,1} \ x_{2,1} \ vdots \ x_{m,1} end{bmatrix} + D_2egin{bmatrix} x_{1,2} \ x_{2,2} \ vdots \ x_{m,2} end{bmatrix} + dots + D_negin{bmatrix} x_{1,n} \ x_{2,n} \ vdots \ x_{m,n}end{bmatrix} = b$$ 显然,$A$ 的列空间中包含了一个全是 1 的向量,而残差向量 $(b-Ax)$ 与列空间正交,当然也与这个全是 1 的向量正交。我们有 $$[1 quad 1 quad dots quad 1](b-Ax) = 0$$ 也就是说,残差向量中的每一项加起来为 0,则残差的均值为 0。

    当然,如果方程组没有待定的常数项,那么残差均值为 0 的性质就不一定成立。不过对于绝大对数 linear regression 来说,都会有待定的常数项。

    来看方差,记投影到列空间的投影矩阵为 $P$,我们有 $Pb = Ax$。我们将残差向量与自身求点积:$$sigma^2 = (b-Pb)^T(b-Pb) = b^T(I-P)^T(I-P)b$$ 很容易发现,$I-P$ 也是一个投影矩阵,它将向量投影到左零空间中。根据投影矩阵的性质(设投影矩阵为 $P$,有 $P^T=P$ 以及 $P^2=P$):$$sigma^2 = b^T(I-P)b$$ $$ = b^T(I-A(A^TA)^{-1}A^T)b$$ 当 $A$ 与 $b$ 确定后,方差就是一个定值。

    也就是说,使用 normal equation 时,需要数据的分布满足误差均值为 0、方差为定值 $sigma^2$,这样才会有较好的回归效果。这个分布听起来很像正态分布,虽然也可以是其它满足这个性质的分布,不过正态分布一般是一个较好的选择。

    $A^TA$ 不可逆怎么办

    在探究这个问题之前,首先证明以下性质:$A^TA$ 与 $A$ 的零空间相同。

    若 $Ax = 0$,显然 $A^TAx = A^T(Ax) = 0$ 成立。

    若 $A^TAx = 0$,我们有 $x^T(A^TAx) = (Ax)^T(Ax) = 0$,显然 $Ax = 0$。

    根据上面的性质,如果 $A^TA$ 不可逆,则 $A$ 不满秩,那么 $Ax = b$ 解的个数就有两种情况:无解和有无穷多解。

    $Ax = b$ 有无穷多解

    如果 $Ax = b$ 有无穷多解,那么随便选一个解作为最优解即可。

    $Ax = b$ 无解

    如果 $Ax = b$ 无解,情况就比较复杂。此时碰到的问题是:残差向量的长度随着参数的增加(或减小),而逐渐趋近于最优值,然而最优值是永远达不到的。

    举个例子:求两个点 (2, 1) 与 (2, 2) 的最佳回归直线 $y = C + Dx$。

    将这个问题转化为方程组,我们有 $$egin{bmatrix} 1 & 2 \ 1 & 2 end{bmatrix}egin{bmatrix} C \ D end{bmatrix} = egin{bmatrix} 1 \ 2 end{bmatrix}$$ 这里的 $A$ 是不满秩的。

    我们很容易看出最佳回归直线是 $x = 2$,然而根据解析几何知识我们也知道,$y = C + Dx$ 这个形式不能表示与 $x$ 轴垂直的直线,只能无限增大 $D$(即斜率)来趋近于目标直线。此时 normal equation 就无法获得最佳解。当然,此时我们可以使用伪逆矩阵等方式,获得一个解。

  • 相关阅读:
    数据结构栈的链式存储(c语言描述)
    Glide相关api
    mac安装WireShark2.0新手教程
    android的布局 (如何实现空心圆效果的布局)
    Android如何设置只有边框背景透明的背景呢?
    failed parsing overlays.
    SVN 报错问题
    关于Fragment的点击切换数据滞留问题
    数据结构(严蔚敏版)思维导图
    【LeetCode】23.合并K个排序链表
  • 原文地址:https://www.cnblogs.com/tsreaper/p/linear-normal-equation.html
Copyright © 2011-2022 走看看