ML入門(二十)PCA降維

Chung-Yi
程式設計之旅
Published in
Oct 1, 2019

降維顧名思義為把高維度降到低維度,也可以把它想成是壓縮數據。降維是機器學習中的一個重要課題,有時候數據太大會造成運算時間過久,佔用內存,所以把數據做降維後有助於我們儲存及分析。那目前最常用的方法就是PCA(principle components analysis)

降維的平面

PCA的基本假設是將高維度的資料投影到較低維度的平面(如果原始資料是2D,降維之後會在一條直線上,以下都會以2D平面做介紹)

如下圖所示,假設我們有一組資料,我們希望找到一個向量可以投影(紅色的線),這條線的選擇依據就是原始資料投影至新的線的距離,又稱為投影誤差(projection error)。

以下這張圖我分別用2D及3D來做解釋,以左邊的圖來說,要從二維降到一維,也就是找到一條直線能夠最小化projection error;以右邊的圖來說,要從三維降到二維,也就是找到一個直平面能夠最小化projection error

PCA不等於linear regression

從下面這張圖,你看得出來哪一個是PCA哪一個是linear regression嗎?仔細一看兩個其實是有差異的。左邊是linear regression,我們要找一條線能夠fit所有資料,也就是最小化每個資料與直線平方誤差,就是圖中藍色的線;右邊是PCA,我們要找的是一條投影的向量,讓所有資料的投影誤差最小。而兩者最大的差異在於linear regression要透過input x來預測y,但是PCA料中每一筆資料根本就沒有所需要被預測的y。

PCA步驟

吳恩達機器學習沒有特別講到找轉換後向量的數學推倒,所以這邊稍微整理一下PCA的整個概念,簡單來說PCA著重在高維度的資料,最大化變異數並投影至較低維度的平面。這個轉換後的平面是由正交軸(互相垂直)所組成,也就是說在正交的情況下最大化變異數。

假設今天將資料從n維降到k維,必須先計算covariance matrix(共變異數矩陣或 協方差矩陣,這裡有更詳細介紹協方差矩陣 https://kknews.cc/zh-tw/code/rbrbrko.html)。在了解 covariance matrix 之前,我們先了解 單變量的投影後的變異數的計算方式:

PCA假設資料 μ等於0(每個變數的平均數是0),這樣可以方便之後做簡化且對投影至新的平面軸的方向不影響,可以看成平移至0的地方。

通常情況屬於多變量,所以會寫成矩陣的方式:

C就是covariance matrix:

所以PCA 就是讓投影向量讓投影後的資料變異量最大,從covariance matrix得到的特徵向量就是變異數最大的方向,就是新的軸(更詳細的數學推導可以參考 機器/統計學習:主成分分析(Principal Component Analysis, PCA))

  1. 對數據做標準化,使數據在相同區間較好比較
  2. 建立covariance matrix
  3. 分解covariance matrix為特徵向量及特徵值
  4. 選擇值最大的k個特徵值對應的特徵向量
  5. 利用k特徵向量建立投影矩陣

--

--

Chung-Yi
程式設計之旅

我思故我在。跨領域的麻瓜工程師,希望透過文字跟你/妳交流分享