1. 程式人生 > >機器學習筆記(八):PCA降維演算法

機器學習筆記(八):PCA降維演算法

1 - PCA概述

主成份分析,簡稱為PCA,是一種非監督學習演算法,經常被用來進行

  • 資料降維

  • 有損資料壓縮

  • 特徵抽取

  • 資料視覺化

2 - PCA原理詳解

通過計算資料矩陣的協方差矩陣,然後得到協方差矩陣的特徵值特徵向量,選擇特徵值最大(即方差最大)的k個特徵所對應的特徵向量組成的矩陣。這樣就可以將資料矩陣轉換到新的空間當中,實現資料特徵的降維。

20160207114645575.gif
由於得到協方差矩陣的特徵值特徵向量有兩種方法:特徵值分解協方差矩陣、奇異值分解協方差矩陣,所以PCA演算法有兩種實現方法:

  • 基於特徵值分解協方差矩陣實現PCA演算法
  • 基於SVD分解協方差矩陣實現PCA演算法。

2.1 - SVD具體介紹

2.2.1 - 特徵值、特徵向量、特徵值分解

特徵值分解和奇異值分解在機器學習中都是很常見的矩陣分解演算法。兩者有著很緊密的關係,特徵值分解和奇異值分解的目的都是一樣,就是提取出一個矩陣最重要的特徵。

1)特徵值、特徵向量

如果一個向量v是矩陣A的特徵向量,將一定可以表示成下面的形式:
A v =

λ v Av=\lambda v
其中, λ \lambda 是特徵向量 v
v
對應的特徵值,一個矩陣的一組特徵向量是一組正交向量

2)特徵值與特徵向量的幾何意義

一個矩陣其實就是一個線性變換,因為一個矩陣乘以一個向量後得到的向量,其實就相當於將這個向量進行了線性變換。比如說下面的這個矩陣:
M = [ 3 0 0 1 ] M=\begin{bmatrix} 3 & 0\\ 0 & 1 \end{bmatrix}
它其實對應的線性變換是如下形式:
640.webp.jpg
因為這個矩陣M乘以一個向量(x,y)的結果是:
[ 3 0 0 1 ] [ x y ] = [ 3 x y ] \begin{bmatrix} 3 & 0\\ 0 & 1 \end{bmatrix}\begin{bmatrix} x\\ y \end{bmatrix}=\begin{bmatrix} 3x\\ y \end{bmatrix}
上面的矩陣是對稱的,所以這個變換是一個對x、y軸的方向一個拉伸變換(每一個對角線上的元素將會對一個維度進行拉伸變換,當值大於1時是拉伸,當值小於1時是縮短),如圖2所示。當矩陣不是對稱的時候,假如說矩陣是下面的樣子:
[ 3 0 0 1 ] \begin{bmatrix} 3 & 0\\ 0 & 1 \end{bmatrix}
它所描述的變換是下面的樣子:
640.webp%20%281%29.jpg
這其實是在平面上對一個軸進行的拉伸變換,如圖藍色的箭頭表示,藍色的箭頭是一個最主要的變換方向(變換的方向可能不止一個)。如果想要描述好一個變換,那我們就需要描述好這個變換的主要變換方向。

3)特徵值分解

對於矩陣A,有一組特徵向量v,將這組向量進行正交單位化,就能得到一組正交單位向量。特徵值分解,就是將矩陣A分解為如下式:
A = Q Σ Q 1 A=Q\Sigma Q^{-1}
其中,Q是矩陣A的特徵向量組成的矩陣, Σ \Sigma 則是一個對角陣,對角線上的元素就是特徵值。我們來分析一下特徵值分解的式子,分解得到的 Σ \Sigma 矩陣是一個對角陣,裡面的特徵值是由大到小排列的,這些特徵值所對應的特徵向量就是描述這個矩陣變換方向(從主要的變化到次要的變化排列)

當矩陣是高維的情況下,那麼這個矩陣就是高維空間下的一個線性變換,這個線性變換可能沒法通過圖片來表示,但是可以想象,這個變換也同樣有很多的變化方向,我們通過特徵值分解得到的錢N個特徵向量,就對應了這個矩陣最重要的N個變化方向。我們利用這前N個變化方向,就可以近似這個矩陣變換,也就是之前說的:提取這個矩陣最重要的特徵

**總結:**特徵值分解可以得到特徵值與特徵向量,特徵值表示的是這個特徵到底有多麼重要,而特徵向量表示這個特徵是什麼,可以將每一個特徵向量理解為一個線性的子空間,我們可以利用這些線性的子空間幹很多事情。不過,特徵值分解也有很多侷限,比如說變換的矩陣必須是方陣。

4)特徵值分解的例子

這裡我們用一個簡單的方陣來說明特徵值分解的步驟。我們的方陣A定義為:
A = [ 1 1 0 4 3 0 1 0 2 ] A=\begin{bmatrix} -1 & 1 & 0\\ -4 & 3 & 0\\ 1 & 0 & 2 \end{bmatrix}
首先,由方陣A的特徵方程,求出特徵值
A λ E = [ 1 λ 1 0 4 3 λ 0 0 1 0 2 λ ] = 2 λ [ 1 λ 1 4 3 λ ] = ( 2 λ ) ( λ 1 ) 2 = 0 |A-\lambda E|=\begin{bmatrix} -1-\lambda & 1 & 0\\ -4 & 3-\lambda 0 & 0\\ 1 & 0 & 2-\lambda \end{bmatrix}=(2-\lambda)\begin{bmatrix} -1-\lambda & 1 \\ -4 & 3-\lambda \end{bmatrix}=(2-\lambda)(\lambda-1)^2=0

特徵值為 λ = 2 , 1 ( 1 ) \lambda=2,1(重數是1)

然後,把每個特徵值 λ \lambda 代入線性方程組 A λ E x = 0 (A-\lambda E)x=0 ,求出特徵向量。

λ = 2 \lambda=2 時,解線性方程組 ( A 2 E ) x = 0 (A-2E)x=0

( A 2 E ) = [ 3 1 0 4 1 0 1 0 0 ] [ 1 0 0 0 1 0 0 0 0 ] (A-2E)=\begin{bmatrix} -3 & 1 & 0\\ -4 & 1 & 0\\ 1 & 0 & 0 \end{bmatrix}\rightarrow \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 0 \end{bmatrix}

解得 x