數據標準化與PCA白化原理探索

PCA是實驗中很常用的工具,一般用來做降維,它的實現有很多很多種,其中牽涉相當多的細節,筆者在實現PCA時常常有困惑,爲什麼查到的各種代碼總有一些不同的trick,有時候對樣本提前歸一化?有時候又要減均值?這些操作對於PCA降維效果到底有什麼影響?這篇文章從PCA白化入手,探究這些trick背後的原因。

1 Whitening (白化)

白化1有兩種,一種是PCA Whitening,一種是ZCA Whitening,它主要目標是降低數據的冗餘性,我們希望通過白化過程使得學習算法的輸入具有如下性質:

  • 特徵之間相關性較低;
  • 所有特徵具有相同的方差。

2 Standardize(標準化)

標準化有多種實現方式,其目標是使數據均值爲0,方差爲1,使得不同維度的特徵具有同等重要性。因爲不同維度的特徵代表的信息不同,數值變化範圍會有較大差異,如果統一衡量將可能影響判斷。

在PCA中融入standardize就是PCA whitening。

2.1 舉例說明Standardize重要性

那麼standardize有什麼好處?看一個來自StackExchange的例子2

用一個特徵來描述一棵樹,它是二維的,第一維是高度height,第二維是切面周長girth,我們要根據這個二維特徵,來推斷一棵樹的體積volume是low還是high(設大於20爲high)。
我們分以下三種情況來分析:

2.1.1 Different measure

先看一種比較極端的情況,讓height的單位是mile,girth的單位是feet,1mile=5280feet=1.6km,也就是說,height的值將是很小的小數,我們假設height取值範圍是[0,0.05],而girth的值取值範圍可以假設爲[20,50],一個樹的height那一維的特徵從0.04變爲0.05,相對於girth已經可以小的忽略不計了,但是它在自己的取值範圍上變化了15 ,從直觀上看這是必須考慮的,所以我們要增大這種數值小,數值範圍小的特徵的影響。

分析主成分

                       Comp.1         Comp.2
Standard deviation   3.0871086    1.014551e-03
Loadings:  tree.height                 -1    
           tree.girth     1    

畫圖分析,其中灰色的low/high指的是volume,紅線height和girth的走勢是根據loading畫出的,loading指的是原始特徵在component上保留的方差,可以看出,height的方差主要反映在component2上,girth的方差反映在component1上,而由於height的重要性被girth完全壓制,故在圖中可以看到,volume的low/high完全靠girth來決定,girth越大,volume越大,height的信息完全沒有起到作用。而我們知道事實上,一棵樹的體積肯定跟高度是有關係的。
Different measure

2.1.2 Same measure without standarized

進一步地,讓height和girth單位一致,即都是feet。

分析其主成分:

                       Comp.1         Comp.2
Standard deviation   6.5088696   2.5407042
Loadings:  tree.height  -0.956    0.293 
           tree.girth   -0.293   -0.956

從圖中可以看出,height的紅線較長,代表volume對height較敏感。因爲component1的方差大,即變化範圍大,而原始數據height那一維的數據的方差較多地反映在component1上,因此height起到較大影響。這是因爲一棵樹的height變化範圍比girth變化範圍大。但是實際上,根據樹的體積計算公式,我們知道,樹的girth應該起較大作用。

Vgirth2×height

same measure

2.1.3 Standarized

至此,來看看standardize的結果。

分析其主成分:

                       Comp.1         Comp.2
Standard deviation   0.2275561   0.06779544
Loadings:  tree.height  0.203     -0.979
           tree.girth   0.979   0.203

由圖可以看出,girth對volume的判斷起到較大作用,符合客觀事實。
Standardize

3 PCA whitening

假設我們已經通過公式SU=LU 計算得到了PCA的主成份:L 的對角線元素是特徵值由大到小排列,U 是特徵值對應的特徵向量,S 是原始數據x 的協方差矩陣。

下式就是PCA whitening操作,計算yn 是第n個樣本白化的結果。

yn=L1/2UT(xnx¯)

下式驗證白化後的數據方差爲1.
1Nn=1NynyTn=1Nn=1NL1/2UT(xnx¯)(xnx¯)TUL1/2=L1/2UTSUL1/2=L1/2LL1/2=I.

下圖3中:左邊是原始數據,中間是standardize的結果,右邊是PCA whitening的結果,我們可以看到數據散開,主成份沒有明顯的長短軸,差異性被進一步挖掘。

PCA白化圖示


  1. 白化介紹
  2. Standardize的解釋
  3. 《Pattern Recognition and Machine Learning》
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章