前言
前兩篇文章介紹了PCA(主成分分析方法)和SVD(奇異值分解)的算法原理,本文基于scikit learn包介紹了PCA算法在降維和數(shù)據(jù)重構(gòu)的應(yīng)用,并分析了PCA類與sparsePCA類的區(qū)別。由于PCA算法的特征值分解是奇異值分解SVD的一個(gè)特例,因此sklearn工具的PCA庫(kù)是基于SVD實(shí)現(xiàn)的。
本文內(nèi)容代碼鏈接:
https://github.com/zhangleiszu/machineLearning/tree/master/PCA
目錄
1. PCA類介紹
2. sklearn.decomposition.PCA的參數(shù)說明
3. sklearn.decomposition.MiniBatchSparsePCA的參數(shù)說明
4. PCA類在降維的應(yīng)用
5. PCA類與MiniBatchSparsePCA類的區(qū)別
6. PCA在數(shù)據(jù)重構(gòu)的應(yīng)用
7. 總結(jié)
1. PCA類介紹
所有PCA類都在sklearn.decompostion包中,主要有以下幾類:
1) sklearn.decompostion.PCA:實(shí)際項(xiàng)目中用的最多的PCA類;
2) sklearn.decompostion.IncrementPCA:PCA最大的缺點(diǎn)是只支持批處理,也就是說所有數(shù)據(jù)都必須在主內(nèi)存空間計(jì)算,IncrementalPCA使用多個(gè)batch,然后依次調(diào)用partial_fit函數(shù),降維結(jié)果與PCA類基本一致 。
3) sklearn.decomposition.SparsePCA和sklearn.decomposition.MiniBatchSparsePCA:SparsePCA類和MiniBatchSparsePCA類算法原理一樣,都是把降維問題用轉(zhuǎn)換為回歸問題,并在優(yōu)化參數(shù)時(shí)增加了正則化項(xiàng)(L1懲罰項(xiàng)),不同點(diǎn)是MiniBatchSparsePCA使用部分樣本特征并迭代設(shè)置的次數(shù)進(jìn)行PCA降維 。
4) sklearn.decomposition.KernelPCA:對(duì)于線性不可分的特征,我們需要對(duì)特征進(jìn)行核函數(shù)映射為高維空間,然后進(jìn)行PCA降維 。流程圖如下:
2. sklearn.decomposition.PCA類的參數(shù)說明
1) n_components:取值為:整形,浮點(diǎn)型,None或字符串。
n_components為空時(shí),取樣本數(shù)和特征數(shù)的最小值:
n_components == min(n_samples , n_features)
0 < n_components < 1時(shí),選擇主成分的方差和占總方差和的最小比例閾值,PCA類自動(dòng)計(jì)算降維? ? ?后的維數(shù)。
n_components是大于等于1的整數(shù),設(shè)置降維后的維數(shù) 。
n_components是字符串'mle',PCA類自動(dòng)計(jì)算降維后的維數(shù) 。
2) copy:布爾型變量 。表示在運(yùn)行時(shí)是否改變訓(xùn)練數(shù)據(jù),若為True,不改變訓(xùn)練數(shù)據(jù)的值,運(yùn)算結(jié)果寫在復(fù)制的訓(xùn)練數(shù)據(jù)上;若為False,則覆蓋訓(xùn)練數(shù)據(jù) ,默認(rèn)值為True。
3) whiten:布爾型變量 。若為True,表示對(duì)降維后的變量進(jìn)行歸一化;若為False,則不進(jìn)行歸一化 ,默認(rèn)值為False。
4) svd_solver:字符串變量,取值為:'auto','full','arpack','randomized'
randomized:如果訓(xùn)練數(shù)據(jù)大于500×500,降維后的維數(shù)小于數(shù)據(jù)的最小維數(shù)0.8倍,采用加快SVD的隨機(jī)算法 。
full:傳統(tǒng)意義上的SVD算法,調(diào)用scipy.linalg.svd類。
arpack:調(diào)用scipy.sparse.linalg.svds類,降維后的維數(shù)符合:
0 < n_components < min(X.shape)
auto:自動(dòng)選擇最適合的SVD算法。
類成員屬性:
components_:主成分分量的向量空間 。
explained_variance_:向量空間對(duì)應(yīng)的方差值 。
explained_variance_ratio_:向量空間的方差值占總方差值的百分比 。
singular_values:向量空間對(duì)應(yīng)的奇異值 。
3.sklearn.decomposition.MiniBatchSparsePCA的參數(shù)說明
本節(jié)就介紹兩個(gè)常用的重要變量,用法與PCA類基本相同。
n_components:降維后的維數(shù)
alpha:正則化參數(shù),值越高,主成分分量越稀疏(分量包含0的個(gè)數(shù)越多)。
4. PCA類在降維的應(yīng)用
Iris數(shù)據(jù)集包含了三種花(Setosa,Versicolour和Virginica),特征個(gè)數(shù)為4。
下載Iris數(shù)據(jù)集:
iris = datasets.load_iris()X = iris.datay = iris.target
設(shè)置降維后的維數(shù)為2:
pca = PCA(n_components=2)
降維后的數(shù)據(jù)集:
X_r = pca.fit(X).transform(X)
降維后的特征分布圖:
5. PCA類與MiniBatchSparsePCA類的區(qū)別
PCA類主成分分量是非零系數(shù)構(gòu)成的,導(dǎo)致了PCA降維的解釋性很差,若主成分分量包含了很多零系數(shù),那么主成分分量可以將很多非主要成分的影響降維0,不僅增強(qiáng)了降維的解釋性,也降低了噪聲的影響 ,缺點(diǎn)是可能丟失了訓(xùn)練數(shù)據(jù)的重要信息。MiniBatchSparsePCA與PCA類的區(qū)別是使用了L1正則化項(xiàng),導(dǎo)致了產(chǎn)生的主成分分量包含了多個(gè)0,L1正則化系數(shù)越大,0的個(gè)數(shù)越多,公式如下:
用圖來說明區(qū)別:
左圖是PCA類的主成分分量空間,右圖是MiniBatchSparsePCA類的主成分分量空間,比較兩圖可知,右圖能夠定位到重要的特征部位 。
若是用數(shù)值表示,MiniBatchSparsePCA類的主成分分量值為:
由上圖可知,主成分分量包含了很多零分量 。
6. PCA在數(shù)據(jù)重構(gòu)的應(yīng)用
數(shù)據(jù)重構(gòu)算法借鑒上一篇文章的圖:
淺藍(lán)色部分矩陣的乘積為數(shù)據(jù)的重構(gòu)過程,r為選擇的主成分分量個(gè)數(shù) 。r越大,重構(gòu)的數(shù)據(jù)與原始數(shù)據(jù)越接近或主成分分量的方差和比例越大,重構(gòu)的數(shù)據(jù)與原始數(shù)據(jù)越接近 ,圖形解釋如下:
n_components是0.2的數(shù)據(jù)重構(gòu)圖:
n_components是0.9的數(shù)據(jù)重構(gòu)圖:
因此,主成分分量越多,重構(gòu)的數(shù)據(jù)與原始數(shù)據(jù)越接近。
7. 總結(jié)
本文介紹了PCA類在降維和數(shù)據(jù)重構(gòu)的簡(jiǎn)單用法以及分析了sparsePCA類稀疏主成分分量的原理。
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4277瀏覽量
62323 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1200瀏覽量
24619 -
PCA算法
+關(guān)注
關(guān)注
0文章
2瀏覽量
1294
原文標(biāo)題:scikit learn中PCA的使用方法
文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論