概述
最小二乘問題在實際應用中非常廣泛,也是無約束最優化問題的重要應用之一,但是對於該問題還有一些特殊的求解思路,供參考。該小結主要介紹:
- 問題定義
- 線性最小二乘問題以及求解
- 非線性最小二乘問題以及求解
總結
最小二乘問題
描述
最小二乘問題泛指具有如下形式的問題
其中m一般指實例的個數,r_j指殘差,即目標值和預估值的差,根據模型的不同有線性模型和非線性模型,分別線性最小二乘和非線性最小二乘。
向量表示
J(x)表示Jacobian矩陣,即r(x)對每一個參數的導數矩陣,即
則原始問題的一階梯度和Hessian句分別爲
如果能夠得到梯度和Hessian矩陣,則可以使用基於梯度的相關算法進行優化。該問題有一點好處是,如果知道了一階梯度則可以近似得到Hessian矩陣,即忽略Hessian矩陣的第二項,因爲對於某些問題二階導數比較小
概率解釋
對於某個實際問題,數據可能存在一定誤差,需要尋找一條最優的曲線去擬合給定數據。即
則觀察值
從概率論進行分析,需要使得模型最大程度擬合數據,釋然值最大。
因此最小二乘問題就是誤差滿足正態分佈的數據擬合問題。
線性最小二乘問題
採用線性模型去擬合數據,即y(x)=Jx,則目標函數爲
根據最優化定理,該問題的最優解滿足如下條件:
求解該方程,有如下方法
1. Cholesky 分解:當m>>n時,並且J比較稀疏時比較實用,但是其精度和條件數的平方相關
2. QR分解:精度和條件數相關
3. SVD分解:相對比較魯棒,同時也可以添加正則項避免J是個病態矩陣。
4. 數值迭代算法:對於大規模數據比較實用。
非線性最小二乘問題
採用非線性模型擬合數據,模型本身可能梯度或者Hessian矩陣不容易得到。
高斯牛頓方法(Gauss-Newton方法)
根據標準牛頓方程,
得到搜索方向後,可以使用線搜索的方法得到步長,重複進行可以得到最優解。
- 很多情況下,非線性問題的Hessian矩陣,可以由第一項主導,即(J^TJ)
- 當J滿秩並且
∇f(x)非零時,搜索方向pGN 必定是一個下降方向。因爲(pGN)T∇f(xk)=(pGN)TJTrk=−(pGN)TJTJ(pGN)≤=0 - 對比該牛頓方程和線性最小二乘問題,會發現有類似的結構,即該搜索方向是
min12||Jp+rk||2 的最優解,可以應用線性相關算法進行求解。即在某次迭代過程中,殘差由線性模型近似。r(xk+p)≈rk+Jkp - 根據之前的理論可以知道該算法能夠保證收斂,同時收斂速度爲二次收斂。
Levenberg-Marquardt 方法
類似於高斯牛頓方法,Hessian矩陣通過J^TJ近似,但是將線搜索替換爲信賴域方法。
該問題子問題爲
和高斯牛頓方法有同樣的問題是,可能會有局部最優解
大規模最小二乘問題
以上算法當問題規模比較大時,收斂速度回接近線性,不如採用牛頓或者擬牛頓方法效率高(超線性)。
如果問題規模不好確定時,可以採用混合方法進行求解。
- 混合思路一:根據搜索方向帶來的函數值的減小量決定採用哪種算法。
- 混合思路二:將問題建模爲
Bk=JTJ+Sk ,其中S_k爲Hessian矩陣的第二項。
正交距離迴歸
該類算法解決的是,以上問題僅僅考慮了縱座標軸上誤差,沒有考慮橫向座標也可能有誤差,如果將其也考慮進來,進行建模,可以得到。
同時定義最優化問題
上述最短距離可以看做點
可以將該問題轉換爲無約束最小二乘問題,思路爲
其中
問題變爲具有m+n個未知變量的最小二乘問題,可以通過相關算法進行求解。同時該問題的雅克比矩陣是一個非常稀疏的矩陣,可以利用稀疏性進行算法優化。
總結
通過該小結的學習,可以瞭解到
1. 最小二乘問題的一般形式以及概率解釋
2. 線性和非線性最小二乘法求解算法
3. 大規模最小二乘問題如何求解