1. 程式人生 > >吳恩達機器學習(十二)主成分分析(降維、PCA)

吳恩達機器學習(十二)主成分分析(降維、PCA)

目錄

0. 前言

學習完吳恩達老師機器學習課程的降維,簡單的做個筆記。文中部分描述屬於個人消化後的理解,僅供參考。

如果這篇文章對你有一點小小的幫助,請給個關注喔~我會非常開心的~

0. 前言

資料的特徵數量,又稱作向量的維度。降維(dimensionality reduction)是通過一些方法,減少資料的特徵數量,以降低維度,通常採用主成分分析PCA(Principal Component Analysis)。降維的作用有:

  • 資料壓縮,減小佔用的儲存空間
  • 加快演算法的計算速度
  • 低維平面可以視覺化資料

初始作如下定義:

  • x_{j}^{(i)} --- 第 i 個數據的第 j 個向量
  • x
     --- 向量
  • x_{approx} --- 高維向量對映到低維平面後,在高維空間中的位置
  • z --- 高維向量對映到低維平面後,在低維空間中的位置

1. 主成分分析(PCA)

主成分分析PCA是尋找一個低維平面,使得各個資料點到平面的投影距離最小,換句話說,就是尋找 k 個向量,作為子空間,將資料對映到這個子空間上,則資料的維度轉換為 k 

如下圖所示(圖源:吳恩達機器學習),三維空間的資料幾乎可看作分佈在一個斜面上,則可在這個斜面上建立一個二維的平面,將資料對映上去,轉換為二維空間。

2. 主成分分析PCA的流程

主成分分析PCA的流程主要由兩部分組成:

  1. 資料預處理(均值歸一化)
  2. 計算低維空間向量(計算協方差 \rightarrow
     奇異值分解 \rightarrow 計算低維矩陣 \rightarrow 轉換為低維資料)

資料預處理主要是進行均值歸一化,對每個特徵值進行如下變化:

\large \begin{align*} \mu_{j} &=\frac{1}{m}\sum_{i=1}^{m}x_{j}^{(i)} \\ x_{j}^{(i)} &:= \frac{x_{j}^{(i)}-\mu_{j}}{s_{j}} \end{align*}

均值歸一化可使得特徵的均值為 0 ,其中 s_{j} 為特徵縮放(取值範圍的最大值減去最小值,使之取值範圍接近 [-1,1] )。

計算低維空間向量,首先計算資料的協方差,採用如下公式:

\large \Xi =\frac{1}{m}\sum_{i=1}^{m}(x^{(i)})(x^{(i)})^{T}

進行奇異值分解,在matlab中,可有如下公式:

\large [U,S,V]=svd(\Xi)

其中 U 是一個 n*n 的矩陣,U=\begin{bmatrix} ... & &... \\ u^{(1)} &... &u^{(n)} \\ ... & & ... \end{bmatrix} ,取前 k 列,得到 U_{reduce}=\begin{bmatrix} ... & &... \\ u^{(1)} &... &u^{(k)} \\ ... & & ... \end{bmatrix} ,為一個 n*k 的矩陣,接著:

\large z=(U_{reduce})^{T}\cdot x

將每一個向量 x 轉換為 z ,z 為 k*1 的向量,達到了降維的目的。

注:最後一步轉換的 x 是沒有偏置 x_{0} 的。

3. 低維空間維度的選擇

我們已知主成分分析是要尋找一個低維平面,使得各個資料點到這個平面的距離最小,這個距離可採用平均投影誤差的平方(average squared projection error)

量化,定義如下:

\large \frac{1}{m}\sum_{i=1}^{m}\left\|x^{(i)}-x_{approx}^{(i)}\right\|^{2}

其中,x_{approx} 是在高維空間中對映到低維平面上的近似點(維度仍然是高維,與 z 不同, z 的維度是低維),x_{approx}=U_{reduce}\cdot z

我們需尋找滿足下式的最小的 k :

\large \frac{\frac{1}{m}\sum_{i=1}^{m}\left\|x^{(i)}-x_{approx}^{(i)}\right\|^{2}} {\frac{1}{m}\sum_{i=1}^{m}\left\|x^{(i)}\right\|^{2}}\leqslant 0.01

其中,右側的數值可根據實際情況調整,0.01 為保證了 99\% 的方差。

此外,還有一種計算方法,在奇異值分解 [U,S,V]=svd(\Xi) 中,S=\begin{bmatrix} s_{11} & &0 \\ & ... & \\ 0 & &s_{nn} \end{bmatrix} ,滿足下式:

\large \frac{\frac{1}{m}\sum_{i=1}^{m}\left\|x^{(i)}-x_{approx}^{(i)}\right\|^{2}} {\frac{1}{m}\sum_{i=1}^{m}\left\|x^{(i)}\right\|^{2}}= 1-\frac{\sum_{i=1}^{k}s_{ii}}{\sum_{i=1}^{n}s_{ii}}

只需求解最小的 k ,滿足下式即可:

\large 1-\frac{\sum_{i=1}^{k}s_{ii}}{\sum_{i=1}^{n}s_{ii}}\leqslant 0.01

4. 主成分分析使用方式

  • 用主成分分析PCA防止過擬合是不適合的,過擬合應該採用正則化
  • 在專案中,應首先試著不採用PCA,若達不到預想的想過,則可採用PCA試試看

如果這篇文章對你有一點小小的幫助,請給個關注喔~我會非常開心的~