PCA算法分析
這個(gè)是在研一的概率論課上做的實(shí)驗(yàn)報(bào)告,PCA算法分析,對(duì)降維進(jìn)行了一定程度的了解,并用PCA實(shí)現(xiàn)降維,具體語(yǔ)言是Python。
第一章 概率論與隨機(jī)過(guò)程在降維中的應(yīng)用——PCA算法分析
1.1 PCA背景
1.1.1降維的意義
在大數(shù)據(jù)集上進(jìn)行復(fù)雜的分析和挖掘需要很長(zhǎng)的時(shí)間,數(shù)據(jù)降維產(chǎn)生更小但保持?jǐn)?shù)據(jù)完整性的新數(shù)據(jù)集,在降維后的數(shù)據(jù)集上進(jìn)行分析和挖掘?qū)⒏行?/p>
數(shù)據(jù)降維的意義:
1)降低無(wú)效、錯(cuò)誤的數(shù)據(jù)對(duì)建模的影響,提高建模的準(zhǔn)確性。
2)少量且具有代表性的數(shù)據(jù)將大幅縮減數(shù)據(jù)挖掘所需要的時(shí)間。
3)降低存儲(chǔ)數(shù)據(jù)的成本。
1.1.2降維的作用
1.1.3降維的方法
降維方法分為線性和非線性降維,非線性降維又分為基于核函數(shù)和基于特征值的方法。如圖1-1所示。
1、線性降維方法:PCA 、ICA LDA、LFA、LPP(LE的線性表示)
2、非線性降維方法:
(1)基于核函數(shù)的非線性降維方法:KPCA 、KICA、KDA
(2)基于特征值的非線性降維方法(流型學(xué)習(xí)):ISOMAP、LLE、LE、LPP、LTSA、MVU
圖1-1 降維方法
1.2 PCA原理
主成分分析(Principal Component Analysis,PCA):主成分分析是一種用于連續(xù)屬性的數(shù)據(jù)降維方法,它構(gòu)造了原始數(shù)據(jù)的一個(gè)正交變換,新空間的基地去除了原始空間基底下數(shù)據(jù)的相關(guān)性,只需要使用少數(shù)新變量就能夠解釋原始數(shù)據(jù)中大部分變量。在應(yīng)用中通常是選出比原始變量個(gè)數(shù)少,能夠解釋大部分?jǐn)?shù)據(jù)中的變量的幾個(gè)新變量,即所謂的主成分,來(lái)代替原始變量進(jìn)行建模。通過(guò)線性變化,將原始數(shù)據(jù)集變化為一組各維度線性無(wú)關(guān)的表示。
PCA把原先的n個(gè)特征用數(shù)目更少的n’個(gè)特征取代,新特征是舊特征的線性組合,這些線性組合最大化樣本方差,盡量使新的n’個(gè)特征互不相關(guān)。
例如將三維空間的物體降維至二維空間,如圖1-2所示。
圖1-2 降維示例
1.3 PCA算法流程
1.3.1 PCA推導(dǎo)
首先將原特征空間的樣本點(diǎn)表示為: xi? ,并認(rèn)為其已經(jīng)中心化。樣本空間中的所有向量可構(gòu)成矩陣X。
將降維后的特征空間中的投影點(diǎn)表示為:WTxi ,W=(w1, w2 , …. , wd),其中W為投影變換后的新的坐標(biāo)系,wi是標(biāo)準(zhǔn)正交基向量。
則投影后樣本點(diǎn)的方差表示為:1ni=1n(WTxi?)2????????????????? ??(1)
公式(1)可將矩陣的乘法展開(kāi)寫(xiě)成: 1ni=1n(WTxi)(WTxi)T????????? (2) ??
?去掉括號(hào)為:?1ni=1nWTxixiTW????????????????????? ??????(3)
由于W與加和符號(hào)無(wú)關(guān),故提出來(lái):?1nWT?(i=1nxixiT)W? ?????????(4) ????????可以將公式(4)寫(xiě)成所有樣本點(diǎn)組成的矩陣相乘:?1nWT?(XXT)W??? ??(5)
建立目標(biāo)函數(shù): J(W)=WT?XXTW ,添加W為單位向量的約束條件:WTW=1
對(duì)方差進(jìn)行拉格朗日乘子法:lw=WT?XXTW-λ(WTW-1),并對(duì)w求偏導(dǎo):???l(w)?w=0??è? XXTW =λW
對(duì)協(xié)方差矩陣XXT進(jìn)行特征值分解,最大特征值λ1對(duì)應(yīng)方差,特征向量w1為第一主成分的方向。
1.3.2 PCA算法流程
| PCA |
| 輸入:n維的樣本集D={x1 , x2 , x3 ,…, xm}; 輸出:降到n’ 維的樣本集D’ ; 1:? 對(duì)所有樣本進(jìn)行中心化:xi←xi-1mi=1mxi?; 2:? 計(jì)算所有樣本的協(xié)方差矩陣 XXT ?; 3: ?對(duì)協(xié)方差矩陣XXT 做特征值分解 ; 4: ?取出最大的n’ 特征值對(duì)應(yīng)的特征向量 w1 ,w2 ,…, w n’ ?將其標(biāo)準(zhǔn)化,組成新的特征向量矩陣W ; 5:? 對(duì)于每一個(gè)樣本xi ,轉(zhuǎn)化為新樣本 zi =WTxi ;? 6:? Return D’ ={z1 , z2 , z3 ,…, zm} ;? |
1.4 PCA應(yīng)用實(shí)例
1.4.1 普通數(shù)據(jù)降維
?????? 原樣本為二維空間上的數(shù)據(jù),如圖1-3所示。
圖1-3 二維空間的樣本數(shù)據(jù)
實(shí)驗(yàn)環(huán)境為:Win10,RAM大小:8G ,CPU:i5-7200U,代碼語(yǔ)言為Python,運(yùn)行環(huán)境:CMD控制臺(tái)窗口。
實(shí)驗(yàn)代碼如下:
import numpy as npimport matplotlib.pyplot as pltdata=np.array([[2.5,2.4],[0.5,0.7],[2.2,2.9],[1.9,2.2],[3.1,3.0],[2.3,2.7],[2.0,1.6],[1.0,1.1],[1.5,1.6],[1.1,0.9]])plt.plot(data[:,0],data[:,1],'*')meandata=np.mean(data,axis=0)????????? #計(jì)算每一列的平均值data=data-meandata???????????????????? #均值歸一化covmat=np.cov(data.transpose())??????? #求協(xié)方差矩陣eigVals,eigVectors=np.linalg.eig(covmat) #求解特征值和特征向量pca_mat=eigVectors[:,-1]??????????????? #選擇第一個(gè)特征向量pca_data=np.dot(data,pca_mat)plt.show()print(pca_data)降維后的結(jié)果為一維數(shù)據(jù),[-0.82797019? 1.77758033 -0.99219749 -0.27421042 -1.67580142?? -0.9129491? 0.09910944? 1.14457216? 0.43804614? 1.22382056],結(jié)果如圖1-4所示。
圖1-4 運(yùn)行結(jié)果
?
總結(jié)
- 上一篇: 酷栈云桌面开启“3+2”混合办公新趋势
- 下一篇: LTE模块连接网络调试助手(花生壳映射公