超定方程 最小二乘解 奇異值分解(SVD)

1. 奇異值分解SVD

任意矩陣A (mxn)(這裏僅考慮實數矩陣的情況), 都能被奇異值分解爲:


其中, Umxm的正交矩陣, Vnxn的正交矩陣, Σr是由r個沿對角線從大到小排列的奇異值(非負)組成的方陣. r就是矩陣A的秩.

V的列向量組成一套對A的正交“輸入”或“分析”的基向量,這些向量是ATA的特徵向量。

U的列向量組成一套對A的正交“輸出”的基向量,這些向量是AAT的特徵向量。

Σr對角線上的元素可視爲在輸入與輸出間進行的純量的"膨脹控制".這些是ATAAAT的特徵值的非零平方根.

ATA=VΣrTUUΣrVTV(ΣrTΣrVT

AAT=UΣrVTVΣrTU= U(ΣrΣrTUT

2. Moore-Pseudo逆

任意矩陣A, 若存在矩陣X, 使得:

則稱XA的Moore-Pseudo逆, 簡稱廣義逆, 記爲A+.

矩陣A的廣義逆是唯一的, 並且可以利用A的SVD分解進行計算. 令A的SVD分解爲:


不難驗證

當矩陣A滿秩時,其M-P逆A+可以由表達式計算得到. 特殊地,當A列滿秩(即ATA可逆)時,


這個特殊的僞逆構成一個左逆,即A+A = IA滿秩(即AAT可逆)時,


這個特殊的僞逆構成一個右逆,即AA+ = I.

3. 線性最小二乘問題

考慮線性方程組Ax=b, 求其最小二乘解.

如果A的秩是n, 則其唯一解是A+b; 如果秩小於n, 則有無窮多解, 其中的最小范數解仍然是A+b. 我們通常關心的也就是這個解.

對於齊次線性方程組Ax=0。當A行數大於列數時,需要求解最小二乘解。在||x||=1的約束下,其最小二乘解爲矩陣ATA最小特徵值所對應的特徵向量。求解方法有兩種(matlab):

1)  [V D] = eig(A'*A);DA'*A的特徵值對角矩陣,V爲對應的特徵向量。找到最小特徵值對應的V中的特徵向量即爲最小二乘解。

2)使用SVD分解矩陣A,[U S V] = svd(A); U由A*A'的特徵向量組成,V由A'*A的特徵向量組成。因此,奇異值矩陣S中最小的奇異值對應的V中的奇異向量即爲最小二乘解。

對於超定方程(非齊次線性方程組的一種)的最小二乘解的情況。Ax=b; 當A的行數大於列數時,方程組無解,需要求解最小二乘解。在matlab中使用一個左除命令就可以得到最小二乘意義下的解。matlab: A\b.

轉載自:https://blog.csdn.net/adventure2008/article/details/40428843?utm_source=blogxgwz8

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章