介紹
主成分分析(Principal Component Analysis,PCA)是一種常用的數據降維算法,可以將高維度的數據降到低維度,並且保留原始數據中最重要的一些特徵,同時去除噪聲和部分關聯特徵,從而提高數據的處理效率,降低時間成本。此外,在機器學習中,訓練樣本固定的情況下,特徵維數增加到某個臨界點後,再增加維數,反而會降低模型的預測能力(休斯現象,Hughes Phenomenon)。
降維的必要性:
- 機器學習是建立在統計學習上的,而數據稀疏(維度過高的情況下)對於統計學而言是一個問題
- 有大量模型需要依靠樣本之間的相似度才能被判定,而多數時候樣本的相似度由其在特徵空間的相互距離決定,這使得樣本密度影響了樣本的屬性
- 維度過多導致計算量增大,影響機器學習效率
數據降維優點:
- 增大了樣本的採樣密度
- 低維數據更容易使用
- 數據之間相互獨立
- 減少了變量的個數
- 提高了算法的效率
- 去除了噪聲
- 結果的解釋性更強
在PCA中,數據從原來的座標系轉換到新的座標系,在新的座標系中要求數據之間的協方差爲0(即不同維度之間的數據線性不相關),而方差儘可能的大。因此,第一座標軸是原始數據中方差最大的方向,第二個座標軸是與第一個新座標軸正交且方差次大的方向,重複該過程,直到需要的降維數。在詳細講解PCA之前,有必要先介紹協方差。
協方差
統計學裏最基本的概念有均值、方差、標準差,假設有n個樣本:X1,X2,...,Xn,那麼
均值:X=N∑i=1NXi
方差:S2=N−1∑i=1N(Xi−X)2
標準差:S=N−1∑i=1N(Xi−X)2
其中,方差和標準差是描述一維數據的離散程度,但現實中的數據往往是多維的,比如說學生的成績,不一定只和學習時間有關,還涉及到學習效率,學習狀態等等,這時便引入了協方差。協方差定義:
Cov(X,Y)=N−1∑i=1N(Xi−X)(Yi−Y)
- Cov(X,Y)>0,X和Y是正相關關係
- Cov(X,Y)<0,X和Y是負相關關係
- Cov(X,Y)>0,X和Y是線性不相關,但是不一定相互獨立哦(sinx和cosx線性不相關,但是它們的平方是有關係的,sin2x+cos2x=1)
不過有的協方差用的是:
Cov(X,Y)=N∑i=1N(Xi−X)(Yi−Y)(除以N結果會偏小,得除以N−1才能得到無偏估計,可以參考“爲什麼樣本方差(sample variance)的分母是 n-1?”)
數據如果有三維,協方差矩陣爲:
C=⎣⎡cov(x,x)cov(y,x)cov(z,x)cov(x,y)cov(y,y)cov(z,y)cov(x,z)cov(y,z)cov(z,z)⎦⎤
PCA步驟
假設有m個樣本數據,每個數據是n維的,按列組成矩陣Xnm,則PCA步驟如下:
- 均值化矩陣Xnm,得到X=Xnm−Xnm
- 求出協方差矩陣C=n−11XXT
- 求出協方差矩陣C的特徵值λi和特徵向量wi
- 選取k個最大的特徵值對應的特徵向量w1,w2,...,wk,組成矩陣Wkn(特徵值選擇方法:∑i=1nλi∑i=1kλi≥t,t越大保留的特徵值越多,按實際要求)
- 降維矩陣Ykm=WknXnm
PCA實例
假設:
X2∗5=[2−121315232]
- 均值化:X=X2∗5−X2∗5=[−1−2−10002101]
- 協方差矩陣:C=5−11XXT=[231123]
- 特徵值爲:λ1=25,λ2=21,對應的特徵向量w1=[11],w2=[1−1],特徵向量單位化w1′=[2121],w2′=[21−21]
- 按照特徵值大小排序,選擇最大的部分特徵,這裏選取λ1,此時矩陣W1∗2=[2121]
- 降維矩陣Y1∗5=W1∗2X2∗5=[2121][−1−2−10002101]=[−23−2102321]