在主成分分析(PCA)原理總結(jié)中,我們對(duì)主成分分析(以下簡(jiǎn)稱PCA)的原理做了總結(jié),下面我們就總結(jié)下如何使用scikit-learn工具來進(jìn)行PCA降維。
1. scikit-learn PCA類介紹
在scikit-learn中,與PCA相關(guān)的類都在sklearn.decomposition包中。最常用的PCA類就是sklearn.decomposition.PCA,我們下面主要也會(huì)講解基于這個(gè)類的使用的方法。
除了PCA類以外,最常用的PCA相關(guān)類還有KernelPCA類,在原理篇我們也講到了,它主要用于非線性數(shù)據(jù)的降維,需要用到核技巧。因此在使用的時(shí)候需要選擇合適的核函數(shù)并對(duì)核函數(shù)的參數(shù)進(jìn)行調(diào)參。
另外一個(gè)常用的PCA相關(guān)類是IncrementalPCA類,它主要是為了解決單機(jī)內(nèi)存限制的。有時(shí)候我們的樣本量可能是上百萬+,維度可能也是上千,直接去擬合數(shù)據(jù)可能會(huì)讓內(nèi)存爆掉, 此時(shí)我們可以用IncrementalPCA類來解決這個(gè)問題。IncrementalPCA先將數(shù)據(jù)分成多個(gè)batch,然后對(duì)每個(gè)batch依次遞增調(diào)用partial_fit函數(shù),這樣一步步的得到最終的樣本最優(yōu)降維。
此外還有SparsePCA和MiniBatchSparsePCA。他們和上面講到的PCA類的區(qū)別主要是使用了L1的正則化,這樣可以將很多非主要成分的影響度降為0,這樣在PCA降維的時(shí)候我們僅僅需要對(duì)那些相對(duì)比較主要的成分進(jìn)行PCA降維,避免了一些噪聲之類的因素對(duì)我們PCA降維的影響。SparsePCA和MiniBatchSparsePCA之間的區(qū)別則是MiniBatchSparsePCA通過使用一部分樣本特征和給定的迭代次數(shù)來進(jìn)行PCA降維,以解決在大樣本時(shí)特征分解過慢的問題,當(dāng)然,代價(jià)就是PCA降維的精確度可能會(huì)降低。使用SparsePCA和MiniBatchSparsePCA需要對(duì)L1正則化參數(shù)進(jìn)行調(diào)參。