最小二乘法


        1、前言

                a、本文主性最小二乘的標准形式,非線性最小二乘求解可以參考Newton法

             b、對於參數求解問題還有另外一種思路:RANSAC算法。它與最小二乘各有優缺點:

             --當測量值符合高斯分布(或者說測量誤差符合期望為0的高斯分布),使用最小二乘比較合適,可以獲得比較穩定且很高的精度。

                而當誤差服從高斯分布的情況下, 最小二乘法等價於極大似然估計。

             --當測量值離散性比較大,存在很多outliers,那么使用最小二乘求解就會存在很大的誤差,此時使用RANSAC算法更合適。

                線性最小二乘只適用於參數模型會線性關系的情形,RANSAC則沒有此限制。

            c、線性最小二乘又分為齊次線性最小二乘和非齊次線性最小二乘。

        2、非齊次方程組的最小二乘解

                a、非齊次線性最小二乘的標准形式:

                          AX = B      (1)
                 其中A、B分別為測量數據構成的矩陣與向量,X為待求參數向量。

                 這里主要針對方程數多於未知元素的情形--超定方程組。

             b、為什么要用最小二乘求解參數:

                 舉例:{a_1}{x_1}+{a_2}{x_2}+{a_3}{x_3}=b,其中({a_1},{a_2},{a_3},b)為測量已知量,({x_1},{x_2},{x_3})為待求量。

                 那么只需要三組({a_1},{a_2},{a_3},b)就可以求出({x_1},{x_2},{x_3})。實際情況是某次實驗不止測了三組數據:

                             \left\{\begin{array}{l}
{x_1}+2{x_2}+3{x_3}=29\\
2{x_1}+{x_2}+{x_3}=13\\
3{x_1}+2{x_2}+4{x_3}=37\\
2{x_1}+4{x_2}+2{x_3}=33\\
4{x_1}+2{x_2}+{x_3}=23
\end{array}\right.

                 如何在(1,2,3,29)(2,1,1,13)(3,2,4,37)(2,4,2,33)(4,2,1,23)這些測量數據中求出最准確的({x_1},{x_2},{x_3})

                 結論:當數據存在冗余,且數據噪聲偏差不大的情況下適合用最小二乘求解。

             c、如何轉化為最小二乘形式:

                 例1:y = ax+b,已知(x,y)求(a,b)?

                        轉化為標准形式:

                            [x,1]\left[{\begin{array}{*{20}{c}}
a\\
b
\end{array}}\right]=\left[y\right]    

                        帶入測量數據:

                           \left[{\begin{array}{*{20}{c}}
{{x_1}}&1\\
{{x_2}}&1\\
{{x_3}}&1\\
{{x_4}}&1
\end{array}}\right]\left[{\begin{array}{*{20}{c}}
a\\
b
\end{array}}\right]=\left[{\begin{array}{*{20}{c}}
{{y_1}}\\
{{y_2}}\\
{{y_3}}\\
{{y_4}}
\end{array}}\right] 

                 例2:y=ax+b{x^2},已知(x,{x^2},y),求(a,b)?

                        轉化為標准形式:

                            [x,{x^2}]\left[{\begin{array}{*{20}{c}}
a\\
b
\end{array}}\right]=[y]

                        帶入測量數據:

                           \left[{\begin{array}{*{20}{c}}
{{x_1}}&{x_1^2}\\
{{x_2}}&{x_2^2}\\
{{x_3}}&{x_3^2}\\
{{x_4}}&{x_4^2}
\end{array}}\right]\left[{\begin{array}{*{20}{c}}
a\\
b
\end{array}}\right]=\left[{\begin{array}{*{20}{c}}
{{y_1}}\\
{{y_2}}\\
{{y_3}}\\
{{y_4}}
\end{array}}\right]

                 例3:

                           \left[{\begin{array}{*{20}{c}}
u\\
v
\end{array}}\right]=\left[{\begin{array}{*{20}{c}}
{{p_1}}&{{p_2}}&{{p_3}}\\
{{p_4}}&{{p_5}}&{{p_6}}
\end{array}}\right]\left[{\begin{array}{*{20}{c}}
x\\
y\\
1
\end{array}}\right]

                          求\left[{\begin{array}{*{20}{c}}
{{p_1}}&{{p_2}}&{{p_3}}&{{p_4}}&{{p_5}}&{{p_6}}
\end{array}}\right]??

                          轉化為標准形式:

                           \left[{\begin{array}{*{20}{c}}
u\\
v
\end{array}}\right]=\left[{\begin{array}{*{20}{c}}
x&y&1&0&0&0\\
0&0&0&x&y&1
\end{array}}\right]\left[{\begin{array}{*{20}{c}}
{{p_1}}\\
{{p_2}}\\
{{p_3}}\\
{{p_4}}\\
{{p_5}}\\
{{p_6}}
\end{array}}\right]

                          帶入測量數據:

                           \left[{\begin{array}{*{20}{c}}
{{u_1}}\\
{{v_1}}\\
{{u_2}}\\
{{v_2}}\\
{...}\\
{{u_n}}\\
{{v_n}}
\end{array}}\right]=\left[{\begin{array}{*{20}{c}}
{{x_1}}&{{y_1}}&1&0&0&0\\
0&0&0&{{x_1}}&{{y_1}}&1\\
{{x_2}}&{{y_2}}&1&0&0&0\\
0&0&0&{{x_2}}&{{y_2}}&1\\
{...}&{...}&{...}&{...}&{...}&{...}\\
{{x_n}}&{{y_n}}&1&0&0&0\\
0&0&0&{{x_n}}&{{y_n}}&1
\end{array}}\right]\left[{\begin{array}{*{20}{c}}
{{p_1}}\\
{{p_2}}\\
{{p_3}}\\
{{p_4}}\\
{{p_5}}\\
{{p_6}}
\end{array}}\right]

                   總結:對於線性表達式,通過適當的變型即可,如例1。

                           在例2中,通過選取xx^2為基實現了線性化。

                           對於非線性表達式,可以通過合適的基、變型,有時候也可以轉化為標准形式,如例2、例3。

                           在例3中,對參數p矩陣選取合適的基實現了線性化。

                           即選取基:

                           \left[{\begin{array}{*{20}{c}}
1&0&0\\
0&0&0
\end{array}}\right]\left[{\begin{array}{*{20}{c}}
0&1&0\\
0&0&0
\end{array}}\right]\left[{\begin{array}{*{20}{c}}
0&0&1\\
0&0&0
\end{array}}\right]\left[{\begin{array}{*{20}{c}}
0&0&0\\
1&0&0
\end{array}}\right]\left[{\begin{array}{*{20}{c}}
0&0&0\\
0&1&0
\end{array}}\right]\left[{\begin{array}{*{20}{c}}
0&0&0\\
0&0&1
\end{array}}\right]

                           那么矩陣p在該組基下:

                           {p_1}\left[{\begin{array}{*{20}{c}}
1&0&0\\
0&0&0
\end{array}}\right]+{p_2}\left[{\begin{array}{*{20}{c}}
0&1&0\\
0&0&0
\end{array}}\right]+{p_3}\left[{\begin{array}{*{20}{c}}
0&0&1\\
0&0&0
\end{array}}\right]+...{p_6}\left[{\begin{array}{*{20}{c}}
0&0&0\\
0&0&1
\end{array}}\right]

             c、標准形式下最小二乘的求解:

                 對於(1)式,最小二乘的求解,相當於求解正規方程:

                                     {A^T}AX={A^T}B      (2)

                 標准形式下最小二乘解為:

                                     X={\left({{A^T}A}\right)^{-1}}{A^T}B     (3)

             d、證明:

                 方法1:

                     AX = B ,對於實際測量數據,(AX – B),即殘差將不為0,為了得到最准確的解,應使殘差的范數最小:

                                     E=\min||AX-B|{|^2}    (4)

                     對E展開:

                                     E={x^T}({A^T}A)x-2{x^T}({A^T}B)+||b|{|^2}

                     令E的導數等於0,即可求出X:

                                     X={\left({{A^T}A}\right)^{-1}}{A^T}B

                 方法2:

                      根據(4)式 (B - AX)所構成的向量需要垂直於A的列空間,此時距離最短,E最小:

                                     A(AX - B)= 0   (5)

                      根據(5)式:

                                     X={\left({{A^T}A}\right)^{-1}}{A^T}B

        3、齊次方程組的最小二乘解

                a、齊次線性最小二乘的標准形式:

                                    AX = 0   (6)

                 其中A為測量數據構成的矩陣與向量,X為待求參數向量。

                 這里主要針對方程數多於未知元素的情形--超定方程組。

                 這個模型和\min||AX||是等價的。

             b、齊次方程組的最小二乘解的約束

                 因平凡解 X = 0不是我們感興趣的解,因此我們主要是尋求該方程組的非零解。

                 注意,如果 X 是這個方程組的解,那么對於任何標量k,使得kX也是解,因此可以建立一個合理的約束:||X||=1的解:

                 齊次最小二乘相當於求解:\min||AX||    且||X||=1

                                   或者求解: \min\frac{{{\rm{||AX|}}{{\rm{|}}^2}}}{{||X|{|^2}}}      

             c、齊次方程組的最小二乘解

                 通過前面a、b兩部分的說明,此時問題的標准形式為:求使||AX||最小化並滿足||X|| = 1時的X。其結論為:

                                  {A^T}A最小特征值對應的特征向量即為待求解

                 證明:

                       對A矩陣SVD分解(可參加我另外一篇博客),令A{\rm{=}}UD{V^T},那么問題變成:

                                \min||UD{V^T}X||    且 ||X||=1  (7)

                       由於:||UD{V^T}X||=||D{V^T}X||,即U矩陣不影響范數。

                       同時:||X||=||{V^T}X||,和U矩陣一樣,V矩陣不影響范數。

                       那么(7)式變為:

                                min||D{V^T}X||     且 ||{V^T}X||=1  (8)

                       令 ||y|| = 1,則(8)式變為:

                                min||Dy||       且||y||=1   (9)

                       由SVD分解的規則可知,D是對角元素按降序排列的一個對角矩陣,

                       因此該問題的解是y={(0,0,...0,1)^T},它具有一個非零元素1並在最后的位置上。

                       X={V^T}y就是V的最后一列。

        4、加權最小二乘問題

                這是對非齊次方程組的最小二乘問題的補充。

             對於每一組測量數據,都存在(4)式所定義的誤差E,當對不同的E進行加權時,便成了加權最小二乘問題。

             此時,(5)式應變為:{A^T}C(AX-B)=0,(2)應變為:({A^T}CA)X={A^T}CB,其中C為加權矩陣。

             加權最小二乘問題的解為:X={({A^T}CA)^{-1}}{A^T}CB

        5.1、帶約束方程組的最小二乘解(1)

                如果3、齊次方程組的最小二乘模型存在約束,即:

                               \min||AX||    且||X||=1,且CX=0   (10)

             求解思路分析:

                    對C矩陣進行SVD分解,C=UD{V^T},如果C不是方陣,如何行數少於列數那就在C矩陣后面一行行補0。

                    如果對角矩陣D有r個非零對角元素,此時C的秩為 r 且C的行空間由V^T的前 r 行生成,則C的行空間的正交補

                    由{C^\bot}余下的行生成,記{C^\bot}V的消去前 r 列得到的矩陣,則 C{C^\bot}=0,對比CX=0,可以得到:

                    X的解由{C^\bot}的列生成,把所有滿足這一條件的 X 記為: X={C^\bot}{X^'}

                    由於{C^\bot}的列具有正交性,因此:|X||=||{C^\bot}{X^'}||=||{X^'}||

                    此時,(10)變成:

                              \min||A{C^\bot}{X^'}||  且|{X^'}||=1    (11)

                   (10)求解算法總結:

                    a、如果C的行數少於列數,則在C矩陣的后面添加若干行0從而擴展成方陣,通過對C進行SVD分解,求出 C=UD{V^T} 

                    b、分解的時候將非零元素排在D矩陣的前面,將矩陣V消去前 r 列(r為D矩陣對角線上非零元素個數)得到矩陣{C^\bot}

                    c、根據3、齊次方程組的最小二乘模型的求解方法求解(11)。

        5.2、帶約束方程組的最小二乘解(2)

        5.3、帶約束方程組的最小二乘解(3)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM