【Stanford機器學習筆記】12-Dimensionality Reduction

這一章主要講數據壓縮算法,PCA

1. Motivation

數據降維的目的主要包括

  • 數據壓縮:將高維數據壓縮至低維數據,以減小數據的存儲量。
  • 可視化:將高維數據壓縮至低維數據後,我們就可以對數據進行可視化,判斷數據的離散和聚類。

1.1 Motivation I: Data Compression

(1)從2維數據降維至1維數據
將2維數據投影到一條直線上,已達到降維至1的目的。假設有m個樣本,則降維後也有m個樣本,只是特徵維數減小了。

x(m)R2z(m)R1

這裏寫圖片描述

(2)從3維數據降維至2維數據
將3維數據投影到一個平面上,已達到降維至2的目的。同理,假設有m個樣本,則降維後也有m個樣本,只是特徵維數減小了。

x(m)R3z(m)R2

這裏寫圖片描述

1.2 Motivation II: Visualization

數據降維的第二個作用即可以對低維數據進行可視化。假設我們有一組樣本有很多特徵,這樣是無法進行可視化表達的。

這裏寫圖片描述

但是當我們對其進行數據降維至2維空間,可以進行可視化表達。

需要注意的是,數據降維後的特徵維並沒有具體的物理含義。可以根據數據的實際情況大致描述一種特徵。

這裏寫圖片描述
這裏寫圖片描述

2. Principal Component Analysis

PCA是數據降維常用的算法。

2.1 Principal Component Analysis Problem Formulation

(1)假設我們要從2維數據降維至1維數據,那麼PCA算法的目的是找到一個直線,使得所有樣本投影到這條直線的距離誤差最小。

這裏寫圖片描述

(2)更專業的解釋:

  • 假設我們要從2維數據降至1維數據,那麼PCA算法的目的是找到一個向量u(1) 使得所有數據樣本投影到這個向量時的投影誤差最小。
  • 假設我們要從n維數據降至k維數據,那麼PCA目的是找到一組向量u(1)u(2)u(3).......u(k) 使得所有數據樣本投影到這個向量時的投影誤差最小。

找到的向量即是新的特徵向量(座標軸)

這裏寫圖片描述

(3)PCA和線性迴歸的區別

  • PCA和LR是不同的算法,PCA計算的是投影誤差,而LR計算的是預測值與實際值的誤差。
  • PCA中只有特徵沒有標籤數據y,LR中既有特徵樣本也有標籤數據。

這裏寫圖片描述

這裏寫圖片描述

2.2 Principal Component Analysis Algorithm

(1)數據預處理
假設我們有一組樣本,首先對其進行均值歸一化(特徵縮放),使其均值爲0。

這裏寫圖片描述

(2)PCA算法的目的
PCA算法是找到一組向量u(1)u(2)u(3).......u(k) 使得所有數據樣本投影到這個向量時的投影誤差最小。那應該怎麼計算得到那組向量呢?

這裏寫圖片描述

(3)PCA算法

  • 首先計算所有樣本的協方差矩陣Σn×n
  • Σ=1mi=1n(x(i))(x(i))T
  • 然後利用SVD奇異值分解分解協方差矩陣
  • [U,S,V]=svd(Σ)
  • 得到的矩陣
  • Un×n=|u(1)||u(2)||u(3)||...||u(n)|
  • 即是那組使得投影誤差最小的向量(這裏沒有給出證明)。

在實際運算中也可以用eig()函數代替SVD函數,因爲協方差矩陣始終爲對稱正定矩陣(n*n),一定會存在特徵值,奇異值矩陣分解主要是針對那些不是方陣的矩陣進行的一種分解。

這裏寫圖片描述

(4)PCA降維
前面算出的新特徵向量組成的矩陣爲nXn維的,爲了降維,我們可以只取出前k個向量,然後將原始數據樣本x(1)x(2)x(3).......x(m) (xRn )轉化爲新的特徵向量下的新數據樣本z(1)z(2)z(3).......z(m) (zRk )

z=UTreducex=|u(1)||u(2)||u(3)||...||u(k)|Tx

這裏寫圖片描述

(5)PCA算法總結

  • 對數據進行均值歸一化,確保每一個特徵的均值爲0,根據實際情況看是否做特徵縮放,以使得所有特徵之間具有比較行。
  • 計算所有樣本之間的協方差矩陣
  • 利用奇異值分解對協方差矩陣進行分解求出新的特徵向量空間
  • 然後取前k個向量作爲新的特徵向量空間,將原始特徵空間中的數據樣本x轉化爲新特徵空間中的新的數據樣本z。(注意不包括偏差項x0 )

這裏寫圖片描述

3. Applying PCA

3.1 Reconstruction from Compressed Representation

之前講了如何利用PCA算法將高維數數據降維至低維數據,現在我們想如何將壓縮後的數據轉化爲開始的高維數據。之前的新樣本數據爲:

z=UTreducex=|u(1)||u(2)||u(3)||...||u(k)|Tx

轉化爲原始高維數據則爲:
xappox=Ureducez

xappox 與原始樣本x 基本相等,但並不完全相等。

這裏寫圖片描述

3.2 Choosing the Number of Principal Components

如何選擇主成分的個數對於數據壓縮也是很重要的。

(1)根據平均平方投影誤差和總體變化率(即樣本點距離原點的遠近度量值)
平均平方投影誤差:

1mi=1m||x(i)x(i)approx||2

總體變化率:
1mi=1m||x(i)||2

則有:
1mmi=1||x(i)x(i)approx||21mmi=1||x(i)||20.01(1%)1mmi=1||x(i)x(i)approx||21mmi=1||x(i)||20.05(5%)1mmi=1||x(i)x(i)approx||21mmi=1||x(i)||20.1(10%)

上式表達了PCA保留了多少的原始數據的差異性,如99%等。

這裏寫圖片描述

該方差的步驟是:
選擇不同的k值,運行PCA計算Xapprox,然後代入上述方法計算是否滿足上述條件。

這裏寫圖片描述

(2)利用奇異值進行計算
當用SVD對樣本之間的協方差矩陣進行計算時,可以求出協方差矩陣的奇異值Sij ,則通過計算貢獻率

ki=1Sijni=1Sij

有:
1ki=1Sijni=1Sij=1mmi=1||x(i)x(i)approx||21mmi=1||x(i)||2

(3)計算不同K值對應的累積貢獻率,可以選擇主成分的數量。例如我要保留原始數據99%的差異性,則令:
ki=1Sijni=1Sij0.99

這裏寫圖片描述

3.3 Advice for Applying PCA

(1)利用PCA加速監督學習算法

  • 將訓練樣本的特徵向量提取出來(不包括標籤數據)
  • 運行PCA將原始訓練樣本x(1)x(2)x(3).......x(m) (xRn )映射到降維後新數據樣本z(1)z(2)z(3).......z(m) (zRk )中
  • 將新的訓練樣本和標籤數據重新組合重新的訓練樣本進行學習求解最優參數θ
  • 如果有新樣本加入,則首先要對新樣本進行PCA映射,然後將得到的新樣本z代入到模型中進行計算

PCA只運行到訓練樣本中,不用在交叉驗證數據集和測試數據集中,當求得了映射關係後,可以將這種關係直接應用到交叉驗證數據集和測試數據集中

這裏寫圖片描述

(2)PCA的應用

  • 數據壓縮
    • 壓縮數據,減小存儲空間和內存空間
    • 加速學習算法
  • 可視化

這裏寫圖片描述

(3)不建議利用PCA防止過擬合問題
PCA可以減少特徵的數量(維數),所以在理論上講可以防止過擬合問題,但是並不是最好的方法。最好的方法還是利用規則化參數對算法防止過擬合。

這裏寫圖片描述

(4)何時使用PCA
並不是所有的問題都是要對原始數據進行PCA降維,首先應看在不使用PCA的情況下算法的運行情況,如果未達到所期望的結果,再考慮PCA對數據進行降維。

這裏寫圖片描述

發佈了61 篇原創文章 · 獲贊 78 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章