作者:桂。
時間:2017-04-11 22:08:55
鏈接:http://www.cnblogs.com/xingshansi/p/6696793.html
聲明:歡迎被轉載,不過記得注明出處哦~

前言
在子空間分析、獨立成分分析等應用中,經常用到矩陣白化,這里簡單總結一下,主要包括:
1)滿秩矩陣的白化;
2)秩虧缺矩陣的白化;
3)白化與PCA的關系;
內容為自己的學習記錄,其中多有借鑒他人之處,最后一並給出鏈接。
一、滿秩矩陣的白化
令
是隨機向量,零均值,其協方差矩陣:
![]()
如果協方差矩陣非奇異,對其特征值分解(特征值及SVD的細節信息,前文有介紹):
![]()
定義矩陣:
![]()
$\bf{W}$成為$\bf{a}$的白化矩陣。白化后的信號:
![]()
其協方差矩陣等於單位陣。
總結一下步驟:
步驟一:去均值,中心化
步驟二:求協方差矩陣,並進行特征值分解
步驟三:求解白化矩陣,並得到白化后的信號
給出一段示意代碼:
x = -10:.1:10; x = x +randn(1,length(x)); y = 0.6*x + randn(1,length(x)); %whiten data = [x;y]; C = data*data'; [u,s,v] = svd(C); W = v*diag(1./sqrt(diag(s)))*v'; b = W*data;
對應結果:

可見白化其實就是讓信號盡可能不相關。在分析PCA的時候,我們知道特征值與對應方向的方差有關聯,所以白化就是這個思路:首先旋轉坐標軸,其次根據對應方向的方差(特征值)進行伸縮,中心化的目的就是為了保證變換前后數據中心對應坐標軸中心,而不至於因為旋轉/伸縮而偏離坐標原點太過分:

是不是覺得與PCA相像?后面給出分析。
二、秩虧缺矩陣的白化
當協方差矩陣為秩虧缺時,可以寫為:

此時白化矩陣為:
![]()
白化后的信號:
![]()
此時白化后信號的協方差矩陣:

至此,完成白化。這也容易理解,有效信號占一個子空間,對子空間白化,就是對有效信號進行白化。
三、白化與PCA
PCA前文有分析,給出PCA步驟:
步驟一:數據中心化——去均值;
步驟二:求解協方差矩陣;
步驟三:利用特征值分解/奇異值分解 求解特征值以及特征向量;
步驟四:利用特征向量構造投影矩陣;
步驟五:利用投影矩陣,得出降維的數據。
以上文二維數據為例:

- 中心化:白化的中心化,PCA也需要中心化;
 - 旋轉:白化步驟中的旋轉,即旋轉后的坐標就是PCA對應的第一、第二投影方向,如圖中紅線、綠線所示;
 - 拉伸:不同維度的特征值通常差別較大,在PCA中就是對特征值進行歸一化。如果將不同維度的數據看作不同特征,白化步驟的拉伸本質也是特征的歸一化。
 
參考:
張賢達:《矩陣分析與應用》
