機器學習中的矩陣方法(附錄A): 病態矩陣與條件數

 

1. 病態系統

如今有線性系統: Ax = b, 解方程web

很容易獲得解爲: x1 = -100, x2 = -200. 若是在樣本採集時存在一個微小的偏差,好比,將 A 矩陣的係數 400 改變成 401:google

則獲得一個大相徑庭的解: x1 = 40000, x2 = 79800.url

當解集 x 對 A 和 b 的係數高度敏感,那麼這樣的方程組就是病態的 (ill-conditioned).spa

 

2. 條件數

那麼,如何評價一個方程組是病態仍是非病態的呢?在此以前,須要瞭解矩陣和向量的 norm, 這裏具體是計算很簡單的 infinity norm, 即找行絕對值之和最大,舉個例子:3d

infinity norm 具備三角性質:||x+y|| <= ||x|| + ||y||. 理解了這些概念,下面討論一下衡量方程組病態程度的條件數,首先假設向量 b 受到擾動,致使解集 x 產生誤差:code

即有:orm

同時,因爲blog

綜合上面兩個不等式:ip

即獲得最終的關係:get

若是是矩陣 A 產生偏差,一樣能夠獲得:

其中, 條件數定義爲:

通常來講,方程組解集的精度大概是 個十進制的位的偏差。 好比,IEEE 標準表示的雙精度浮點數的有效位是 16 位,若是條件數是 1e+10, 那麼獲得的結果中只有 6 位是精確的。因此,只有當方程組是良態時,殘差 R = Ax - b 才能準確指示解的精度。

 

3. 病態的由來

本身的見解:

線性系統 Ax = b 爲何會病態?歸根究竟是因爲 A 矩陣列向量線性相關性過大,表示的特徵太過於類似以致於容易混淆所產生的。舉個例子, 現有一個兩個十分類似的列向量組成的矩陣 A:

在二維空間上,這兩個列向量夾角很是小。假設第一次檢測獲得數據 b = [1000, 0]^T, 這個點正好在第一個列向量所在的直線上,解集是 [1, 0]^T。如今再次檢測,因爲有輕微的偏差,獲得的檢測數據是 b = [1000, 0.001], 這個點正好在第二個列向量所在的直線上,解集是 [0, 1]^T。兩次求獲得了差異迥異的的解集。

 

4. 與特徵值和 SVD 的關係

  1. 特徵值

假設 A 的兩個單位特徵向量是 x1, x2, 根據特徵向量的性質:

上述矩陣 A 的特徵值和特徵向量分別爲:

對於平面上的某一個向量 b,能夠分解爲兩個特徵向量的線性組合:

把上式帶入,

若是  遠遠大於 , 當 b 點在 x1 方向發生移動, m 值改變, 解集 x 變化不明顯, 反之, 若是在 x2 方向移動, n 值改變,解集 x 變化很是大 !能夠看到,特徵值對解集起到了一個 scaling 的做用。反過來講,若是一個特徵值比其它特徵值在數量級上小不少,x在對應特徵向量 (x2) 方向上很大的移動才能產生b微小的變化.

 

        2.  SVD

SVD 分解:

聯繫上次學到的 SVD 知識,將 A 分解成三個矩陣的乘積,中間的對角線矩陣也起到了 scaling 的做用。咱們按照正向思惟來考慮這個問題,如今來了一個解集 x 向量,左乘 A 矩陣等價與左乘 USV^T, x 向量正好等於 V^T 最後一行向量,通過 S 矩陣的 scaling 縮小以後對 b 的影響很是小。也就是說, 解集 x 在 V^T 最後一行的行向量方向自由度最大!自由度越大,越不穩定,極端狀況是該方向奇異值爲 0, 解集能夠在該方向取任意值,這也正好對應了矩陣 A 有零特徵值, Ax 在對應特徵向量的方向上移動不改變 Ax 的值。

在不一樣的 norm 下,條件數又能夠由最大奇異值與最小奇異值之間的比值,或者最大特徵值和最小特徵值之間比值的絕對值來表示,詳情請參考維基百科

最後, A 的條件數究竟等於多少呢? cond(A) = 2e+06

 

5. 病態矩陣處理方法

真正的自由是創建在規範的基礎上的。病態矩陣解集的不穩定性是因爲解集空間包含了自由度過大的方向,解決這個問題的關鍵就是將這些方向去掉,而保留 scaling 較大的方向,從而把解集侷限在一個較小的區域內。在上面的討論中, A 矩陣的特徵向量不必定正交,不適合作新基, SVD 分解正好分解出了正交基,能夠選前 k 個 v^T 向量做爲正交基。

好比,如今只選取前一個 (0.707, 0.707) 方向做爲基,解集侷限咋 y = x 這條直線上。直觀的解釋就是, A 矩陣的兩個列向量過於相似,咱們就能夠將它們等同看待,第一次 b = (1000, 0), 解集是(0.5, 0.5), 第二次 b = (1000, 0.001), 解集仍是 (0.5, 0.5).

總結起來,解決 A 病態就是將解集限定在一組正交基空間內,即對於座標 y, 選擇 k 個正交基 Zk,解決問題:

這個就是 reduce-rank model. 具體方法有 truncated SVD 和 Krylov subspace method。

 

 

 


參考資料:

(1) ILL-Conditioned Systems

相關文章
相關標籤/搜索