主成分分析(PCA, Principal Component Analysis)
主成分分析算法(PCA)是最流行的降維(降低維度)的算法目胡。降維就是將高維特征 映射到低維度特征
,其中
剪况。
降維的好處主要有 3 個(gè):
- 數(shù)據(jù)壓縮,減小數(shù)據(jù)所占內(nèi)存或者硬盤空間桃纯;
- 降低運(yùn)算量业簿,提高機(jī)器學(xué)習(xí)的速度;
- 將數(shù)據(jù)維度降至三維或者二維寺酪,可以對(duì)數(shù)據(jù)可視化。
PCA 工作內(nèi)容
PCA 所做的就是找到一個(gè)低維()子空間對(duì)數(shù)據(jù)進(jìn)行投影竭缝,然后數(shù)據(jù)由該數(shù)據(jù)在投影空間的投影向量表示房维,同時(shí) PCA 會(huì)最小化投影誤差沼瘫。其中抬纸,「投影誤差」是所有的數(shù)據(jù)點(diǎn)到該投影線的距離之和。
用公式解釋「投影誤差」耿戚,假設(shè) 投影到低維子空間中的點(diǎn)
湿故,那么「投影誤差」
以二維降至一維空間為例,PCA 所做的是找到一條投影線膜蛔,使得所有的數(shù)據(jù)點(diǎn)到該投影線的距離之和最小坛猪。最后,每個(gè)樣本表示從二維 變?yōu)橐痪S
皂股。
PCA 計(jì)算
Step1:數(shù)據(jù)預(yù)處理墅茉,對(duì) 對(duì) 進(jìn)行特征縮放 / 均值歸一化;
Step2:計(jì)算協(xié)方差矩陣呜呐;
Step3:計(jì)算協(xié)方差矩陣的特征向量就斤,其中 svd()函數(shù)是奇異值分解,蘑辑;
Step4:取矩陣 U 的前 k 列并計(jì)算 來(lái)表示
洋机,其中
洋魂。
用下圖總結(jié)一下整個(gè)計(jì)算過(guò)程:
下面用 MATLAB 代碼表示 PCA 計(jì)算過(guò)程:
Sigma = (1/m) * X' * X; % compute the covariance matrix
[U,S,V] = svd(Sigma); % compute our projected directions
Ureduce = U(:,1:k); % take the first k directions
Z = X * Ureduce; % compute the projected data points
涉及數(shù)學(xué)知識(shí)比較難绷旗,這里就暫時(shí)不解釋原理喜鼓。
主成分的數(shù)量 k 值的選取
如何選擇主成分的數(shù)量 k ?
通過(guò)上圖的公式選取出來(lái)的 k 值衔肢,它保留 99% 差異性庄岖,即降維后依舊保持著原本維度數(shù)據(jù) 99% 的變化情況,因此這樣的降維改變并不會(huì)有多少影響角骤。就分類的精確度而言顿锰,數(shù)據(jù)降維后對(duì)學(xué)習(xí)算法幾乎沒(méi)有什么影響。
一般启搂,k 值選取是保留 99% 差異性硼控,還有一個(gè)常用的是保留 95%、90% 差異性胳赌。
但如果實(shí)際上牢撼,一個(gè)一個(gè)遍歷 k 值并重新計(jì)算上述公式,這種選取方法比較慢且運(yùn)算量大疑苫。那么有沒(méi)有一種更好的方法呢熏版?
當(dāng)然有啦!PCA 計(jì)算過(guò)程 Step3捍掺,得到矩陣 S撼短,利用矩陣 S 來(lái)選擇 k 值。通過(guò)遍歷 k 值挺勿,選取滿足 的 k 值曲横。這種方法還不需要重新計(jì)算矩陣 S。
降維后恢復(fù)
如果我們使用PCA來(lái)壓縮我們的數(shù)據(jù)不瓶,那么禾嫉,如何解壓我們的數(shù)據(jù)且回到原始數(shù)據(jù)?
需要注意的是蚊丐, 就是之前所說(shuō)的原始點(diǎn)投影在投影空間上的點(diǎn)熙参,故此
與
有一定的誤差。
應(yīng)用:為機(jī)器學(xué)習(xí)提速
在機(jī)器學(xué)習(xí)中麦备,使用 PCA 給數(shù)據(jù)降維可以減小運(yùn)算量從而達(dá)到提高機(jī)器學(xué)習(xí)速度的功能孽椰。
需要注意的是,在訓(xùn)練集中運(yùn)用了 PCA 將 凛篙,那么在驗(yàn)證集和測(cè)試集都要運(yùn)用 PCA 黍匾。
而企圖因?yàn)?PCA 能夠降維,希望借此達(dá)到解決過(guò)擬合問(wèn)題的想法是錯(cuò)誤的鞋诗。
總之膀捷,PCA 在為機(jī)器學(xué)習(xí)提速應(yīng)用效果很好;而 PCA 在處理過(guò)擬合問(wèn)題效果很差削彬,處理過(guò)擬合問(wèn)題還是要用正則化全庸。
建議
一開(kāi)始不要將 PCA方法就直接放到算法里秀仲,先使用原始數(shù)據(jù) 看看效果。
只有一個(gè)原因可以考慮使用 PCA:學(xué)習(xí)算法收斂地非常緩慢且占用內(nèi)存或者硬盤空間非常大壶笼,那么就考慮用 PCA 來(lái)進(jìn)行壓縮數(shù)據(jù) 神僵。
總結(jié)
參考文獻(xiàn)
- 吳恩達(dá)機(jī)器學(xué)習(xí) week8