哲哲的ML筆記(三十:主成分分析PCA)

PCA基本概念

  1. PCA:Principal Component Analysis,主成分分析
  2. 非常普遍的降維算法
    要做的是找到一個方向向量,當我們把所有的數據都投射到該向量上時,我們希望投射平均均方誤差能儘可能地小。方向向量是一個經過原點的向量,而投射誤差是從特徵向量向該方向向量作垂線的長度。
    問題描述:將n維數據降到k維,目標是找到向量u^1, u^2,……u^k使得總投射誤差最小
  3. 用途:可以用來進行數據壓縮,如果100維的向量最後可以用10維來表示,那麼壓縮率爲90%。
  4. 好處:
    4.1 PCA技術的一大好處是對數據進行降維的處理。我們可以對新求出的“主元”向量的重要性進行排序,根據需要取前面最重要的部分,將後面的維數省去,可以達到降維從而簡化模型或是對數據進行壓縮的效果。同時最大程度的保持了原有數據的信息。
    4.2 PCA技術的一個很大的優點是,它是完全無參數限制的。在PCA的計算過程中完全不需要人爲的設定參數或是根據任何經驗模型對計算進行干預,最後的結果只與數據相關,與用戶是獨立的。

PCA 算法

  1. 數據集預處理
    計算一組特徵的均值\mu_i,令每個特徵x_j=x_j-\mu_i,從而將特徵的均值設爲0
    如果不同組特徵之間數量級不同,還要對每組特徵進行
  2. 協方差矩陣\sum=\frac{1}{m}\sum_{i=1}^{n}x^i(x^i)^T
    注意:x_i\in n*1, \sum\in n*n
  3. 用奇異值分解計算協方差矩陣\sum的特徵向量
    sigma=\sum


    對於一個n*n維度的矩陣,上式中的U是一個具有與數據之間最小投射誤差的方向向量構成的矩陣。如果我們希望將數據從n維降至k維,我們只需要從U中選取前個k向量,獲得一個n*k維度的矩陣U_{reduce}
    新特徵向量z^i=U^T_{reduce}*x^i, z\in k*1

重建的壓縮表示

PCA作爲壓縮算法。在那裏你可能需要把1000維的數據壓縮100維特徵,或具有三維數據壓縮到一二維表示。所以,如果這是一個壓縮算法,應該能回到這個壓縮表示,回到你原有的高維數據.
比如,給定z^i,可能的100維,怎麼回到原來的x^i
x_{approx}=U_{reduce}*z^i,其中,x_{approx}\approx x

選擇PCA的數量k

主要成分分析是減少投射的平均均方誤差 \frac{1}{m}\sum_{i=1}^m\|x^i-x^i_{approx}\|^2
訓練集的方差爲\frac{1}{m}\sum_{i=1}^m\|x^i\|^2
我們希望在平均均方誤差與訓練集方差的比例儘可能小的情況下選擇儘可能小的k
平均均方誤差與訓練集方差的比例:\frac{\frac{1}{m}\sum_{i=1}^m\|x^i-x^i_{approx}\|^2}{\frac{1}{m}\sum_{i=1}^m\|x^i\|^2}
我們可以先令k=1,然後進行主要成分分析,獲得U_{reduce}z,然後計算比例是否小於1%。如果不是的話再令k=2,如此類推,直到找到可以使得比例小於1%的最小k值(原因是各個特徵之間通常情況存在某種相關性)

還有一些更好的方式來選擇k,當我們在Octave中調用“svd”函數的時候,我們獲得三個參數:[U, S, V] = svd(sigma)。


上圖的S的是一個的矩陣,只有對角線上有值,而其它單元都是0,我們可以使用這個矩陣來計算平均均方誤差與訓練集方差的比例
\frac{\frac{1}{m}\sum_{i=1}^m\|x^i-x^i_{approx}\|^2}{\frac{1}{m}\sum_{i=1}^m\|x^i\|^2}=1-\frac{\sum_{i=1}^kS_{ii}}{\sum_{i=1}^nS_{}ii}\leq1\%

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章