齐次线性方程组的解、SVD、最小二乘法
生活随笔
收集整理的這篇文章主要介紹了
齐次线性方程组的解、SVD、最小二乘法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自:http://blog.csdn.net/dsbatigol/article/details/9625211
?
AX=0這是一個齊次線性方程組(一般的非齊次線性方程組AX=b其實也都可以化為齊次方程組的形式,所以比較普遍)
先要說明在非齊次方程組中,A到底有沒有解析解,可以由增廣矩陣來判斷:
- r(A)<r(A | b) 方程組無解;
- r(A)=r(A | b) =n,方程組有唯一解;
- r(A)=r(A | b)?<n,方程組無窮解;
- r(A)>r(A | b)?不可能,因為增廣矩陣的秩大于等于系數矩陣的秩(在矩陣中加入一列,其秩只可能增大,不可能變小)。
而在齊次方程中(r(A | b) =r(A | 0)=r(A)?),根據A來分,只剩下了兩種情況:
1.r(A)=未知數個數n(約束較強)
? ?1.1.A是方陣
? ? ? ? ?由克萊姆法則可知:
? ? ? ? ?如果A是n*n的方陣而且r(A)=n,那么該方程組有唯一的零解。
? ?1.2.A不是方陣,A是m×n的(m>n)
? ? ? ? ?由另一個定理:齊次線性方程解空間維數 = n - r(A) 可知,該解空間維數為0, 也就是說該解空間只含有零向量。
2.r(A)<未知數個數n(約束不夠)
這里A是不是方陣已經無所謂了,也沒有什么法則可以用,就只分成一種情況。
由齊次線性方程組解空間維數 = n - r(A) >0,所以該齊次線性方程組有非零解,而且不唯一(自由度為 n - r(A))。
(多謝wereineky指出錯誤)
在我們做一些實際問題的時候,經常在?1.2(當然嚴格來說1.1也有可能啦)會卡住,這時實際上是沒有真正的非零解析解的,因為約束太多了,沒法都滿足(零向量除外)。但是可以折中一下,每一個方程都滿足個大概,這就要求最小二乘解。求取最小二乘解的方法一般使用SVD,即奇異值分解。
解空間維數與r(A)的關系的感性認識:
r(A)可以理解為一種約束條件的強弱的表現(約束的強弱不只是表面上的方程個數)。比如有一個方程組,每個方程都是一樣的,那么其秩為1,方程的個數對約束毫無貢獻。
繼續看A的秩,也就是約束的個數是怎么影響解空間的維數的。
比如
x1 +?? x2 +? x3 = 0
x1 + 2x2 + 3x3 = 0
r(A)=2,消去x1之后得到:
?x2 + 2x3 = 0
x2或者x3一旦確定,其余的未知量就都隨之確定了,所以自由度為1,所以解空間維數為1。
即:
如果 r(A)=c,那么c個方程一共最多可以消去c-1個未知數(比如滿秩方陣,最后只留一個未知數,得到唯一解),于是得到的方程由n-(c-1)個未知數組成,該方程有 n-c個自由度,也就是說解空間的維數為 n-c。
上述過程在高斯消去法中表現:
假設消去過后的A如下:
x???? x????? x????? x????? x
0???? x????? x????? x????? x
0???? 0 ? ?? x????? x????? x
0???? 0????? 0????? x????? x
0???? 0????? 0????? 0 ???? 0
那么最后一個非全0行的x個數為 num = n-r(A)+1,則可以看到,該行的自由度,決定了所有解的自由度(因為一旦改行確定,其他都確定了,自由區其實可以理解為用將多少變量固定,就能夠確定整個矩陣),而該行的自由度=num-1=n-r(A)=齊次線性方程組解空間的維數,Bingo!
SVD與最小二乘解:
SVD:奇異值分解,是在A不為方陣時的對特征值分解的一種拓展。奇異值和特征值的重要意義相似,都是為了提取出矩陣的主要特征。
對于齊次線性方程?A*X =0;當A的秩大于列數時,就需要求解最小二乘解,在||X||=1的約束下,其最小二乘解為矩陣A'A最小特征值所對應的特征向量。
假設x為A'A的特征向量的情況下,為什么是最小的特征值對應的x能夠是目標函數最小證明(多謝hukexin0000指出錯誤,這個約束太強,只能提供一點點感性認識,具體的證明請查閱相關教科書):
齊次線性方程組的最小二乘問題可以寫成如下:
min ||Ax||?
s.t??? ||x||=1
目標函數:||Ax|| = x'A'Ax = x'lamda x=lamda||x||=lamda,其中lamda是A'A的特征值。
于是可知,得到了A'A的最小特征值,就得到了最優值,而其最小特征值對應的特征向量就是最優解.
而對M進行SVD分解(*表示共軛轉置):
可見M*M的特征向量就是V的列向量。
求解:
求解方法有兩種(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中的奇異向量即為最小二乘解。
對于超定方程(非齊次線性方程的一種)的最小二乘解的情況。A*X =b ;?當A的行數大于列數時,方程組無解,就需要求解最小二乘解。在matlab中使用一個左除命令就可以得到最小二乘意義下的解。這個解沒有模制的限制,就是實際的解。matlab:A\b
兩種方法其實是一個意思。
推薦資料:
這篇資料還是很不錯的,講述了SVD與PCA的關系,其中的推薦資料也很不錯。
機器學習中的數學(5)-強大的矩陣奇異值分解(SVD)及其應用
理解矩陣系列!強烈推薦 相關資源: http://blog.csdn.net/acdreamers/article/details/44657089? SVD分解的并行實現 http://blog.csdn.net/zhangchaoyangsun/article/details/8470267? 并行計算奇異值分解--Jacobi旋轉
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的齐次线性方程组的解、SVD、最小二乘法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 奇异值分解(SVD)原理详解及推导 (转
- 下一篇: SVD分解的并行实现