zoukankan      html  css  js  c++  java
  • 线性代数之——最小二乘

    1. 最小二乘

    (Ax=b) 经常会没有解,当方程个数大于未知数个数,也即 (m>n) 时,列空间并不是 (R^m) 空间的全部,因此 (b) 可能不在列空间中,这时候方程组就无解,但我们不应该就此而停止。

    也就是误差 (e = b-Ax) 并不总是能得到 0,这时候,如果误差 (e) 的长度尽可能的小,那我们就得到了最小二乘解 (hat x)

    (Ax=b) 无解的时候,我们乘以 (A^T) 来求解 (A^TAx=A^Tb)

    假如我们要找到一条直线,让它距离 (0, 6) ,(1, 0),(2, 0) 这三点最近。没有直线 (b = C+Dt) 同时穿过这三点,我们要找的两个常数 (C)(D)

    [egin{alignedat}{3} &Cquad+ quad&D&cdot 0 quad=quad 6 \ &Cquad + quad&D&cdot 1 quad=quad 0 \ &Cquad + quad&D&cdot 2 quad=quad 0 end{alignedat}]

    [A = egin{bmatrix}1&0\1&1\ 1&2 end{bmatrix} quad x = egin{bmatrix}C\D end{bmatrix} quad b = egin{bmatrix}6\0\0 end{bmatrix} ]

    由于 (b = (6, 0, 0)) 不是 (A) 的列的一个线性组合,因此方程组无解。

    [A^TAx=A^Tb o egin{bmatrix}3&3\3&5end{bmatrix} egin{bmatrix}C\D end{bmatrix}egin{bmatrix}6\0 end{bmatrix} ]

    [egin{alignedat}{2} C = 5 \ D =-3 end{alignedat}]

    因此,距离这三点最近的一条直线为 (b = 5-3t)

    2. 最小化误差

    • 几何理解

    任何 (Ax) 都是 (A) 的列的一个线性组合,它们都位于以 (A) 的列为基的一个平面中。因此,我们要找的就是平面中的一个距离 (b) 最近的向量,而这个向量就是 (b) 在这个平面中的投影 (p)

    • 代数理解

    (Ax=b=p+e) 是不可解的,但 (Ahat x = p) 是可解的。我们需要最小化下面这个误差

    [||Ax-b||^2 = ||Ax-p||^2 + ||e||^2 ]

    当取 (x = hat x),$ ||Ax-p||^2 = 0$,因此最小误差为 (|e||^2)

    • 微积分理解

    误差函数可以表示为

    两个未知数有两个导数,当导数分别为零时,我们就得到了误差函数的最小值。

    整理后我们得到

    可以看到,这和 (A^TAx=A^Tb) 得到的结果是一样的。也就是说当 (A^TAx=A^Tb) 的时候 (||Ax-b||^2) 的偏导数为零。

    在四个基本子空间中,这次我们将 (b) 分解为 (b=p+e),这时候 (A^TAx=A^Tb) 的零空间解只有零向量,因此最优解只有一个 (Ahat x=p)

    获取更多精彩,请关注「seniusen」!

  • 相关阅读:
    Nim or not Nim? hdu3032 SG值打表找规律
    Maximum 贪心
    The Super Powers
    LCM Cardinality 暴力
    Longge's problem poj2480 欧拉函数,gcd
    GCD hdu2588
    Perfect Pth Powers poj1730
    6656 Watching the Kangaroo
    yield 小用
    wpf DropDownButton 源码
  • 原文地址:https://www.cnblogs.com/seniusen/p/10017600.html
Copyright © 2011-2022 走看看