數據預處理:PCA,SVD,whitening,normalization


數據預處理是為了讓算法有更好的表現,whitening、PCA、SVD都是預處理的方式:

    whitening的目標是讓特征向量中的特征之間不相關,PCA的目標是降低特征向量的維度,SVD的目標是提高稀疏矩陣運算的運算速度。

 

whitening

    whiten的目的是解除特征向量中各個特征之間的相關性,同時保證保證每個特征的方差一致,是數據集歸一化的一種形式。設特征向量 X = (X1,X2,X2),未知的量是隨機變量,因此X1 X2 X3 都是隨機變量,他們都服從某個分布,有確定的期望。注意到whitening和單純的解耦是不一樣的。

    對於向量 X,可以計算出相應的協方差矩陣(根據已有數據集來估計)。我們希望協方差矩陣是一個對角矩陣,因為這意味着 X 的每個元素之間都是互不關聯的,但是有時候我們的數據並不具有這樣的性質。為了解耦數據,我們需要對原始特征向量執行一個變換,從而使得變換后的向量 Y 的各個特征之間相關性為0。設 Σ 是 X 的協方差矩陣,有:

ΣΦ=ΦΛ

    那么 Λ 中的每個元素都是協方差矩陣的特征值,Φ 的每個列向量是相應的特征向量。如果對特征向量做變換:

Y = XΦ = X(Φ1, Φ2, Φ3)

    那么可以證明,根據向量 Y 計算出來的協方差矩陣是一個對角矩陣。

    對角矩陣 Λ 的特征值就是 Y 的每個元素的方差,可以全部相同,也可能不相同。如果對變換后的特征向量的某些維度進行縮放,使得 Λ 的每個元素都相等,那么整個過程就是 whitening.

 

PCA

    主成分分析的過程也需要計算隨機向量的協方差矩陣,並對原始的數據集進行相應的變換達到解耦效果。但是PCA的最終目的不是保證特征向量的每個特征的方差相等,而是略去那些方差太小的特征,從而降低特征向量的維度。也就是說,PCA和whitening的區別體現在是縮放還是略去變換后的某些特征。

    需要注意,主成分分析略去的是變換后的特征,而不會略去原始數據集中的特征,因為很有可能是因為單位的問題,比如厘米,毫米,如果單位選得比較大,原始數據就會比較小,然而這並不意味着這是沒有用特征。進行PCA之前應該先進行歸一化處理,但對於變換后的特征而言,特征方差特別接近0,就不應該使用whitening了,因為方差幾乎為0很有可能意味着數據集的秩小於列數,包含“冗余特征”。

 

SVD

    對一個矩陣可以奇異值分解,可以類比初等代數中的因式分解,分解的目的很多時候是為了讓計算更加容易:

D = U Σ VT

    為什么我們要進行這樣一個分解呢?矩陣之間的運算往往是非常耗時的,對於一些非常稀疏的矩陣(也就是大部分元素都是0),可能大部分計算都是在執行類似 0 * 0 = 0 這樣的語句。奇異值分解的目的就是將原始矩陣分解后,可以刪除一部分元素,也能近似還原原矩陣,這樣 D 可以被近似分解為三個小維度的矩陣。

 直覺上說,SVD就相當於一次坐標變換,把高維數據變換到低維數據。在語義分析任務中,設矩陣D的每行代表一篇文章,每列代表一個詞匯,那么U代表的含義就是沒篇文章的語義表示,VT代表的含義就是每個詞匯的語義表示。計算文章或者詞匯的相似度就變得容易多了。基於相似度的推薦是同樣的道理。

    在推薦、信息檢索等領域,很稀疏的矩陣是很常見的,SVD就很有用了,它可一把公式中很大的矩陣近似分解成為一些維度較小的矩陣,極大加快計算速度。

 

normalization

    歸一化就是希望特征向量每個特征的期望在原點,方差也相同,和whitening相同的思想,但是沒有旋轉變換的過程。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM