這一章主要講數據壓縮算法,PCA
1. Motivation
數據降維的目的主要包括
- 數據壓縮:將高維數據壓縮至低維數據,以減小數據的存儲量。
- 可視化:將高維數據壓縮至低維數據後,我們就可以對數據進行可視化,判斷數據的離散和聚類。
1.1 Motivation I: Data Compression
(1)從2維數據降維至1維數據
將2維數據投影到一條直線上,已達到降維至1的目的。假設有m個樣本,則降維後也有m個樣本,只是特徵維數減小了。
(2)從3維數據降維至2維數據
將3維數據投影到一個平面上,已達到降維至2的目的。同理,假設有m個樣本,則降維後也有m個樣本,只是特徵維數減小了。
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算法是找到一組向量
(3)PCA算法
- 首先計算所有樣本的協方差矩陣
Σn×n Σ=1m∑i=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個向量,然後將原始數據樣本
(5)PCA算法總結
- 對數據進行均值歸一化,確保每一個特徵的均值爲0,根據實際情況看是否做特徵縮放,以使得所有特徵之間具有比較行。
- 計算所有樣本之間的協方差矩陣
- 利用奇異值分解對協方差矩陣進行分解求出新的特徵向量空間
- 然後取前k個向量作爲新的特徵向量空間,將原始特徵空間中的數據樣本x轉化爲新特徵空間中的新的數據樣本z。(注意不包括偏差項
x0 )
3. Applying PCA
3.1 Reconstruction from Compressed Representation
之前講了如何利用PCA算法將高維數數據降維至低維數據,現在我們想如何將壓縮後的數據轉化爲開始的高維數據。之前的新樣本數據爲:
轉化爲原始高維數據則爲:
3.2 Choosing the Number of Principal Components
如何選擇主成分的個數對於數據壓縮也是很重要的。
(1)根據平均平方投影誤差和總體變化率(即樣本點距離原點的遠近度量值)
平均平方投影誤差:
總體變化率:
則有:
上式表達了PCA保留了多少的原始數據的差異性,如99%等。
該方差的步驟是:
選擇不同的k值,運行PCA計算Xapprox,然後代入上述方法計算是否滿足上述條件。
(2)利用奇異值進行計算
當用SVD對樣本之間的協方差矩陣進行計算時,可以求出協方差矩陣的奇異值
有:
(3)計算不同K值對應的累積貢獻率,可以選擇主成分的數量。例如我要保留原始數據99%的差異性,則令:
3.3 Advice for Applying PCA
(1)利用PCA加速監督學習算法
- 將訓練樣本的特徵向量提取出來(不包括標籤數據)
- 運行PCA將原始訓練樣本
x(1),x(2),x(3),.......x(m) (x∈Rn )映射到降維後新數據樣本z(1),z(2),z(3),.......z(m) (z∈Rk )中 - 將新的訓練樣本和標籤數據重新組合重新的訓練樣本進行學習求解最優參數
θ - 如果有新樣本加入,則首先要對新樣本進行PCA映射,然後將得到的新樣本z代入到模型中進行計算
PCA只運行到訓練樣本中,不用在交叉驗證數據集和測試數據集中,當求得了映射關係後,可以將這種關係直接應用到交叉驗證數據集和測試數據集中
(2)PCA的應用
- 數據壓縮
- 壓縮數據,減小存儲空間和內存空間
- 加速學習算法
- 可視化
(3)不建議利用PCA防止過擬合問題
PCA可以減少特徵的數量(維數),所以在理論上講可以防止過擬合問題,但是並不是最好的方法。最好的方法還是利用規則化參數對算法防止過擬合。
(4)何時使用PCA
並不是所有的問題都是要對原始數據進行PCA降維,首先應看在不使用PCA的情況下算法的運行情況,如果未達到所期望的結果,再考慮PCA對數據進行降維。