超定⽅程组最⼩⼆乘matlab,超定⽅程组最优解(最⼩⼆乘
解)推导
##⼀、超定⽅程组## 超定⽅程组即为有效⽅程个数⼤于未知数个数的⽅程组。(这⾥只讨论多元⼀次的情况) 超定⽅程组可以写成矩阵的形式: \begin{equation} \begin{split} Ax=b \end{split} \end{equation} 其中$A$为$m\times n$的矩阵,其与$b$组成的增⼴矩阵$[A|b]$的秩⼤于$n$。$x$为$n$维列向量未知数。 ##⼆、超定⽅程组的最⼩⼆乘解## 超定⽅程组是⽆解的,但是我们可以求得其最⼩⼆乘解,就是将等式左右两端乘上$A$的转置。 \begin{equation} \begin{split} A^TAx=A^Tb \end{split} \end{equation} 该⽅程有增⼴矩阵$[A^TA|A^Tb]$的秩等于$n$,即该⽅程的未知数的个数等于有效⽅程的个数,所以该⽅程有唯⼀解且为原⽅程的最⼩⼆乘解。 平时记住结论直接⽤就好 ##三、推导过程## (记录,⼤家不要看:其实⼩⽣也是只知道结论不知道结论是怎么来的,不过有⼀天看斯坦福⼤学的机器学习公开课的第⼆节,看到了推导过程。) ###1.前置结论###
$trAB = trBA$
$trABC = trBCA = trCAB$
$\nabla_AtrAB = B^T$
$trA = trA^T$
$tra = a$ 6)$\nabla_AtrABA^TC = CAB + C^TAB^T$ tr代表矩阵的迹,⼤写字母为矩阵⼩写字母表⽰实数,$\nabla表⽰求导$。
###2.公式推导### 作差 \begin{equation} \begin{split} Ax-b = \left[ \begin{array}{c} a_1^Tx - b_1 \ \vdots \ a_m^T - b_m
\end{array} \right ] \end{split} \end{equation}
构建最⼩⼆乘 \begin{equation} \begin{split} \frac{1}{2}(Ax-b)^T(Ax-b) = \frac{1}{2}\sum_{i=1}^m(a_i^Tx-b_i)^2 \end{split}
\end{equation}
对$x$求导 \begin{equation} \begin{split} \nabla_x \frac{1}{2}(Ax-b)^T(Ax-b) = \nabla_x tr(x^TA^TAx-x^TA^Tb-b^TAx+b^Tb) \end{split} \end{equation}
利⽤前置结论2)4)5) \begin{equation} \begin{split} \nabla_x \frac{1}{2}(Ax-b)^T(Ax-b) = \nabla_xtr[xx^TA^TA-\nabla_xb^TAx-\nabla_xb^TAx] \end{split} \end{equation}
其中利⽤前置结论6) 注:⼤括号下的A为前置结论中的A,⼤括号上的A为矩阵A。
\begin{equation} \nabla_xxx^TA^TA = \nabla_x \cdot \underbrace{x}_A \cdot \underbrace{I}_B \end{equation}
\begin{equation} \cdot \underbrace{x^T}_{A^T} \cdot \underbrace{A^TA}_C \end{equation}
利⽤前置结论1)3) \begin{equation} \begin{split} \nabla_x\underbrace{b^TA}_B\underbrace{x}_A = A^Tb \end{split}
\end{equation}
所以就有: \begin{equation} \begin{split} \frac{1}{2}(Ax-b)^T(Ax-b) = A^TAx - A^Tb = 0 \end{split} \end{equation}
matlab求导则有: \begin{equation} A^TAx = A^Tb \end{equation} \begin{equation} x=(A^TA)^{-1}A^Tb \end{equation}