1. 奇異值分解SVD
任意矩陣A (mxn)(這裏僅考慮實數矩陣的情況), 都能被奇異值分解爲:
其中, U是mxm的正交矩陣, V是nxn的正交矩陣, Σr是由r個沿對角線從大到小排列的奇異值(非負)組成的方陣. r就是矩陣A的秩.
V的列向量組成一套對A的正交“輸入”或“分析”的基向量,這些向量是ATA的特徵向量。
U的列向量組成一套對A的正交“輸出”的基向量,這些向量是AAT的特徵向量。
Σr對角線上的元素可視爲在輸入與輸出間進行的純量的"膨脹控制".這些是ATA和AAT的特徵值的非零平方根.
ATA=VΣrTUT UΣrVT= V(ΣrTΣr)VT
AAT=UΣrVTVΣrTUT = U(ΣrΣrT)UT
2. Moore-Pseudo逆
任意矩陣A, 若存在矩陣X, 使得:
則稱X是A的Moore-Pseudo逆, 簡稱廣義逆, 記爲A+.
矩陣A的廣義逆是唯一的, 並且可以利用A的SVD分解進行計算. 令A的SVD分解爲:
不難驗證
當矩陣A滿秩時,其M-P逆A+可以由表達式計算得到. 特殊地,當A列滿秩(即ATA可逆)時,
這個特殊的僞逆構成一個左逆,即A+A = I. 當A行滿秩(即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);D爲A'*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