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