主成分分析法PCA的原理及計算
主成分分析法
主成分分析法(Principal Component Analysis),簡稱PCA,其是一種統計方法,是數據降維,簡化數據集的一種常用的方法
它本身是一個非監督學習的算法,作用主要是用於數據的降維,降維的意義是挺重要的,除了顯而易見的通過降維,可以提高算法的效率之外,通過降維我們還可以更加方便的進行可視化,以便於我們去更好的理解數據,可以發現更便於人類理解,主成分分析其一個很重要的作用就是去噪,有的時候,經過去噪以后再進行機器學習,效果會更好
我們可以基於主成分分析法的降維來理解其原理
原理及計算
我們設一個二維的坐標系,橫軸為特征一,縱軸為特征二,相應的存在一些樣本,其對應相應的點,既然是二維的,那么我們就可進行降維
那么降維到一維的具體操作是什么呢?
一個很明顯的方案就是對這兩個特征選一個特征,將另一個特征去除掉,如果說我們將特征二扔掉保留特征一的話,那么全部的點就會相應的全部映射到橫軸上,相反,我們選擇特征二的話,所有的點就會映射到縱軸上
這就是對應的兩種降維的方案,這兩個方案哪一個是更好的呢,我們將所有的點映射到了橫軸以后,點和點之間距離是相對比較大的的方案就是更好的方案,為什么呢,點和點之間的距離大,即點和點之間有着更高的可區分度,這樣也更好的保持了原來的點和點之間的距離,雖然也不同,但是也相應的更小的
還有一種更好的方案,我們可以選取一條直線,將所有的點都映射到這根直線上,使用這種方式,所有的點更趨近於原來的分布情況,區分度也比映射到橫縱軸上更加明顯
那么如何找到這個讓樣本間間距最大的軸?為了找到這個軸,我們先使用方差來定義一下這個樣本間間距
這樣這個問題就變成了,我們需要找到一個軸(直線),使得樣本空間中的所有點在映射到這個軸以后,方差是最大的
那么怎么操作呢?
首先,我們將樣本的均值歸0,即所有的樣本都減去這批樣本的均值,這樣就相當於讓坐標軸進行了移動,使得樣本在每個維度上均值都為0,這樣我們就可以將方差的式子變成(xi是已經映射到新的軸上的新的樣本)
然后我們要求這個軸的方向w=(w1,w2)(此處用二維來表示),使得我們所有的樣本,在映射到w以后,有使映射以后的樣本Xproject的方差值最大,式子展開如下
需要注意的是:
對於這個X來說,可能有多個維度,因此每一個X都是一個有多個元素的向量,因此更准確的式子應該是
其均值等依然是含有多個內容的向量,為什么呢,因為雖然映射到了這個軸上,但是本身這個軸還是處在這個n維的坐標系中,那么這實際上就是這兩個向量相減之后的模的平方,又因為我們之前對樣本進行了demean處理(均值取0),因此,這個式子化簡以后為,即為映射完的點的模的平方和再除以m最大
那么這個Xprojecti到底是要怎么表示呢?
我們設這個軸為w,樣本點為Xi,其也是一個向量,那么現在這個Xi要映射到w軸上的話,可以向w軸做一個垂直的直線,那么其與w軸的交點就是我們對應的Xproject這一點,那么說白了我們要求的模的平方就是指向交點的這個直線,相當於我們要求將一個向量映射到另一個向量上對應的映射的長度是多少
實際上這種映射就是點乘的定義
我們知道現在這個w軸是一個方向向量,所以其模為1,那么式子就化簡成
運用數學定理,很明顯可以得出
那么我們帶入之前的式子就可以得到我們真正要求的式子,即Xi與w點乘完以后的平方和再除以m以后的結果最大
這樣我們的主成分分析法就是要求一個w軸,使得映射上去的點與w點乘完以后的平方和再除以m以后的結果最大,這樣主成分分析法就變成了一個目標函數的最優化問題,求一個函數的最大值,我們就可以使用梯度上升法來解決
線性回歸和這個是不一樣的,最直觀的不同在於線性回歸的樣本是關於這個新的垂直的方向是關於特征的方向,並不是垂直於這根直線的
用梯度上升法來求解PCA問題
我們說可以使用梯度上升法來解決主成分分析問題,那么怎么用梯度上升法來求解此類問題呢?
那么我們知道,求一個函數的最大值,關鍵是我們要求這個函數的梯度,對於上面最終的式子來說,除了w以外就沒有未知數了,那么對應的梯度就是函數對w求偏導,整理合並以后可以寫成
對這個式子進行向量化的處理,我們觀察這個式子,我們可以發現其中的式子就是點乘的形式,其實際上每一項就是Xw這個向量和X中的第n列中的每一個元素相乘再相加,Xw可以寫成這種行向量的形式
而上面的計算過程計算下來就是Xw和一個矩陣相乘,這個矩陣可以寫成(其就是X這個矩陣,有m個樣本,n個特征)
其最后將梯度的計算的向量化的結果就可以寫成(經過轉置之后符合要求的)
介就是最后的計算公式啦
我們可以在直接使用這個公式來進行計算,最后得到需要的結果