1. 程式人生 > >《機器學習實戰》學習筆記(十二)之利用PCA來簡化資料

《機器學習實戰》學習筆記(十二)之利用PCA來簡化資料

轉載請註明作者和出處:http://blog.csdn.net/john_bh/
執行平臺: Windows
Python版本: Python3.6
IDE: Sublime text3

一、降維技術

1.1 什麼是降維

降維就是通過某種數學變換講原始資料高維屬性空間轉變為一個低維“子空間”,亦稱“維數約簡”。
在這個子空間中樣本密度大大提高,距離計算也變得更為容易。
為什麼要降維呢?
因為在很多時候,人們觀測或收集的資料樣本雖然是高維的,但是與學習任務密切相關的也許僅是某個低維分佈。
使用降維技術的好處:

  • 使得資料集更易使用
  • 降低很多演算法的計算開銷
  • 去除噪聲
  • 使得結果易懂

1.2 降維的方法:

第一種降維的方法是主成分分析(Principal Component Analysis,PCA)。
在PCA中,資料從原來的座標轉換為新的座標,新的座標系的選擇是有資料本身決定的。第一個新座標軸選擇的是原來資料中方差最大的方向,第二個新座標軸的選擇和第一個座標軸正交且具有最大方差的方向。該過程一直重複,重複次數為原始資料中特徵的數目。

另外一種降維方法是因子分析(Factor Analysis)。
在因子分析中,我們假設在觀察資料的而生成中有一些觀察不到的隱變數(latent variable)。假設觀察資料是這些隱變數和某些噪聲的線性組合,那麼隱變數的資料可能比觀察資料的數目少。也就是說通過找到隱變數就可以實現資料的降維。

還有一種降維技術就是獨立成分分析(Independent Component Analysis,ICA)。ICA假設資料是從N個數據源生成的,這一點和因子分析有點類似。假設資料為多個數據源的混合觀察結果,這些資料來源之間在統計上是相互獨立的,而在PCA中只假設資料是不相關的。同因子分析一樣,如果資料來源的數目少於觀察資料的數目,則可以實現降維的過程。

二、PCA

在介紹PAC之前,考慮一個問題:對於正交屬性空間中的樣本點,如何用一個超平面或者直線對所有的樣本進行恰當的表達?
若存在這樣的一個平面,則樣本點在這個平面上是儘可能分開的。

假定資料樣本進行了中心化,即i

xi=0,再假定投影變化後得到的新座標系為w1,w2,...,wd,其中wi是標準正交基向量,||wi||=1,wiTwj=0(ij).
我們知道樣本點xi在新空間中超平面上的投影是WTxi,若使得所有樣本點的投影儘可能分開,則應該使投影后樣本點的方差最大化。
投影后的樣本點的方差是iWTxixiTW,則優化目標可以寫為:

W=maxtr(iWTxixiTW)WTW=I
使用拉格朗日乘子法可得:
XXTwi=λiwi
於是只需要對協方差矩陣XXT進行特徵值分解,將求得的特徵值排序:λ1λ2...λd,再取d幾個特徵值對應的特徵向量構成的W=(w1,w2,...,wd),這就是主成分分析的解。

PAC演算法描述:
輸入:樣本集D=x1,x2,....,xm;低維空間維數d,
過程:

  1. 對所有樣本進行去中心化:xixi1mi=1mxi
  2. 計算樣本的協方差矩陣XXT
  3. 對協方差矩陣XXT做特徵值分解;
  4. 取最大的d個特徵值所對應的特徵向量w1,w2,...,wd

輸出:投影矩陣