一文搞懂PCA的原理與細節

昨天有朋友問PCA算法的一些細節問題,今天就寫一篇PCA的文章,主要講述PCA的整個過程以及其中的一些細節問題。

一、PCA過程

1、計算每一個維度的平均值,然後對每一個樣本取值減去其對應維度的平均值,一般情況下還應該進行歸一化。如下圖:

一文搞懂PCA的原理與細節

原始數據

一文搞懂PCA的原理與細節

減去均值後的數據

2、求特徵協方差矩陣

一文搞懂PCA的原理與細節

對於一個3維數據對應的協方差矩陣

3、協方差的特徵值和特徵向量

4、將特徵值按照從大到小的順序排序,選擇其中最大的k個(降維到K維),然後將其對應的k個特徵向量分別作為列向量組成特徵向量矩陣。

5、將原始樣本數據投影到選取的特徵向量上。

比如:假設樣本數為m,特徵數為n,減去均值後的樣本矩陣為DataAdjust(m*n),協方差矩陣是n*n,選取的k個特徵向量組成的矩陣為EigenVectors(n*k)。那麼投影后的數據FinalData為

一文搞懂PCA的原理與細節

那麼,問題就來了,為什麼協方差矩陣前K個特徵值對應的方差就是最大的呢?,這就是方差最大理論了。

二、PCA理論基礎

在信號處理中認為信號具有較大的方差,噪聲有較小的方差,信噪比就是信號與噪聲的方差比,越大越好。贗本在那個維度的的投影方差較小,那麼認為那個維度的投影是由噪聲引起的。因此我們認為,最好的k維特徵是將n維樣本點轉換為k維後,每一維上的樣本方差都很大。

比如下圖有5個樣本點:(已經做過預處理,均值為0,特徵方差歸一)

一文搞懂PCA的原理與細節

下面將樣本投影到某一維上,這裡用一條過原點的直線表示(前處理的過程實質是將原點移到樣本點的中心點)。

一文搞懂PCA的原理與細節

假設我們選擇兩條不同的直線做投影,那麼左右兩條中哪個好呢?根據我們之前的方差最大化理論,左邊的好,因為投影后的樣本點之間方差大一些。

關於樣本點投影的概念,通過下圖可以明白。

一文搞懂PCA的原理與細節

u是一個單位向量,也就是說u向量決定我的樣本按照哪個方向映射,這時候方差才大。

由於原始數據已經是0均值的了,因此經過映射之後也是0均值的

我們只需要對協方差矩陣進行特徵值分解,得到的前k大特徵值對應的特徵向量就是最佳的k維新特徵,而且這k維新特徵是正交的。得到前k個u以後,樣例xi通過以下變換可以得到新的樣本。

一文搞懂PCA的原理與細節

中間那部分很熟悉啊,不就是樣本特徵的協方差矩陣麼xi的均值為0,上式可以改寫為

一文搞懂PCA的原理與細節

由於u是單位向量,即

一文搞懂PCA的原理與細節

上式兩邊都左乘u得,

一文搞懂PCA的原理與細節

一文搞懂PCA的原理與細節

這不就是說明方差最大的方向就是按前K個特徵值對應的特徵向量映射的方向嗎。


分享到:


相關文章: