當前位置:吉日网官网 - 傳統節日 - sklearn的七種降維方法

sklearn的七種降維方法

在實際應用中,有時候我們會遇到數據的維度太少,需要生成新的維度,可以利用我們之前的分享(如何實現特征工程自動化);有時候維度太多,然後就需要降維。有很多方法可以降低維度。這裏介紹壹下sklearn中介紹的7種,供大家學習和收藏。

主成分分析(PCA)用於將多維數據集分解成壹組具有最大方差的連續正交分量。在sklearn包中,PCA是壹個transformer對象,可以使用fit方法選擇前n個主成分,並用於投影到新數據中。

PCA有兩種實現方式,壹種是特征值分解,另壹種是奇異值分解。特征值分解是壹種非常好的提取矩陣特征的方法,但它只適用於方陣。如果不使用SVD,PCA將只找到每個特征的中心,但不會縮放數據。使用參數whiten=True,可以將數據投影到奇異空間,每個分量可以縮放到1的方差,這對於後續的分析非常有幫助,假設每個特征是同構的,比如SVM和Kmeans聚類。

PCA不僅降低了高維數據的維數,還去除了數據中的噪聲,找到了數據中的模式。PCA用較少的M個特征代替原來的N個特征,新特征是舊特征的線性組合,最大化樣本方差,使新的M個特征盡可能不相關。

SVD是壹種矩陣分解方法,將壹個大矩陣分解成壹個易於管理的形式,可能是兩個或兩個以上矩陣的乘積。

參數

例2:獲得各主成分與特征之間的關系。

雖然PCA很有用,但是它需要把所有的數據都存儲在內存中,所以當要分解的數據集過大時,就會導致內存很大。此時,增量主成分分析(IPCA)通常被用作主成分分析(PCA)的替代品,通過部分計算可以獲得相同的結果。

IPCA通過使用與輸入數據樣本數量無關的內存量來建立輸入數據的低秩近似。它仍然依賴於輸入數據函數,但是改變批量大小可以控制內存使用。

這個函數增加了壹個參數batch_size來控制批次,其余的都壹樣,這裏就不贅述了。

例子

對於大型矩陣的分解,我們經常會想到SVD算法。但是當矩陣的維數和奇異值k的個數上升到壹定程度時,SVD分解方法往往會因為內存溢出而失效。因此,與SVD相比,隨機化SVD算法更適應大規模矩陣分解的要求,速度更快。

此外,在某些場景下,我們期望丟棄壹些較低的奇異值,以降低噪聲並盡可能保持最大的方差,從而達到更好的預測結果。比如人臉識別,如果是64X64像素,那麽整個維度有4096個像素。通過使用這種方法,我們可以保留重要的維度,這有利於後續的分析。

使用svd_solver= '隨機化'可以實現隨機化svd,去除壹些奇異矩陣。

主成分分析適用於數據的線性降維。核主成分分析(KPCA)可以實現數據的非線性降維,可以用來處理線性不可分的數據集。可以從{'linear ',' poly ',' RBF ',' sigmoid ',' cosine ',' precomputed'}中選擇內核,默認為' linear '。

詳見官方描述,和普通PCA差不多。

SparsePCA期望找到壹組能夠最好地重構數據的稀疏主成分。稀疏度由參數α給出的懲罰系數L1控制。小批量sparsepa是sparsepa的變體,它提高了速度,但降低了精度。

主成分分析法的缺點是這種方法提取的成分是稠密表達式,即當用原始變量的線性組合表示時,其系數是非零的。這可能會使模型難以解釋。在很多情況下,實基本分量可以更自然地想象成稀疏向量;例如,在人臉識別中,主成分將只包含圖像的壹部分,並映射到人臉的壹些部分。稀疏主成分產生了更簡潔和可解釋的表示,它清楚地強調了哪些原始特征導致了樣本之間的差異。

通過調整α來調整懲罰程度。α越大,0的系數就越多。

TruncatedSVD是普通SVD的變種,只計算用戶指定的前k個奇異值。TSVD通常用於語義分析,它是LSA的壹部分,可以解決壹詞多義和多義的問題。

LSA潛在語義分析的目的是找出文檔和查詢中術語的真實含義,即潛在語義,從而解決上壹節描述的問題。具體來說,大型文檔集是用合理的維度建模的,單詞和文檔都在這個空間中表示。例如,有2000個文檔,包括7000個索引詞。LSA使用壹個維數為100的向量空間來表示這個空間中的文檔和單詞,然後在這個空間中進行信息檢索。將文檔表示到這個空間的過程就是SVD奇異值分解降維的過程。降維是LSA分析中最重要的步驟。通過降維,去除文檔中的“噪音”,即無關信息(如用詞不當或偶爾出現無關詞),逐漸呈現語義結構。與傳統的向量空間相比,潛在語義空間的維度更小,語義關系更清晰。

使用示例如下:

利用預定義字典對矩陣進行稀疏編碼,達到降維和簡化的目的。就像人類所有的語言都是由單詞組成的壹樣,使用已知的詞典可以降維;其次,稀疏性可以降低計算的成本,使後續的計算更快。

這個對象沒有fit方法,轉換方法將數據表示為盡可能少的字典原子的線性組合。您可以使用transform_method以下列方式控制初始化參數:

用的函數是sklearn。分解。字典學習,妳會發現壹個字典,可以稀疏擬合數據足夠好。

將數據表示為超完備字典的過程類似於大腦處理數據的過程。該方法已被證明在圖像處理任務(例如圖像完成、恢復和去噪以及監督和識別任務)中的圖像塊的字典學習中給出了良好的結果。

用的函數是sklearn。分解。minibatchdiagtionarylearning,這是壹個快速但不太準確的版本,適用於大型數據集。

默認情況下,MiniBatchDictionaryLearning將數據分成小批,並通過在指定次數的叠代中回收小批來在線優化它們。但是,目前還沒有它退出叠代的停止條件。Partial_fit也可以用來實現小批量擬合。

從變量中提取* * *性因素。

因子分析要求原始變量之間有很強的相關性,否則,因子分析無法提取變量之間的* * *特征。如果相關系數小於0.3,則變量之間的* * *線性較小,不適合進行因子分析。因子分析得到的是因子與原始變量之間的關系,因此可以解釋因子。

因子分析可以產生類似於PCA的特征(載荷矩陣的列)。然而,這些特征不能以任何通用的方式描述(例如它們是否正交)。

用的函數是sklearn。分解。因素分析。

用的函數是sklearn.decomposition.FastICA,ICA可以提取出壹系列的主成分,這些主成分之間是最獨立的。所以ICA壹般不用於降維,而是用於區分疊加信號。ICA不考慮噪聲。為了使模型正確,必須使用白化,可以使用參數白化。

ICA通常用於分離混合信號(稱為盲源分離),也可以作為壹種非線性降維方法,尋找壹些稀疏特征。

主成分分析假設源信號彼此不相關,而獨立成分分析假設源信號彼此獨立。

主成分分析表明,主成分相互正交,樣本呈高斯分布;獨立分量分析不要求樣本服從高斯分布。

非負矩陣分解,顧名思義就是將壹個大的非負矩陣分解成兩個小的非負矩陣。在數據矩陣不包含負值的情況下,應用NMF而不是PCA或其變體。

NMF可以生成能夠代表數據的主成分,從而可以解釋整個模型。

參數init可以用來選擇初始化方法,不同的方法會顯示不同的結果。

在PCA處理中,如果特征減少到600個,那麽每壹個降維後的人臉都包含600個特征(所以我們看到降維後的人臉有壹種“伏地魔”的感覺,因為降維相當於刪除了壹些細節特征,造成了壹些信息的丟失,圖片中最直觀的體現就是模糊)。在NMF處理中,這1000個特征被分開。換句話說,壹張臉是由鼻子和耳朵等獨立的特征組成的。

LDA是文檔主題生成模型,是針對離散數據集(如文本語料庫)集合的生成概率模型。它也是從文檔集合中發現抽象主題的主題模型。LDA是壹種無監督的機器學習技術,可以用來識別大規模文檔集合或語料庫中隱藏的主題信息。

Sklearn。分解。LatentDirichletAllocation是用於LDA的函數。

1、blogs.com/eczhou/p/5433856.html

7 、/零件號e90900a3d03a

  • 上一篇:有多少種狗?
  • 下一篇:百威電子商務事業部升級為數字商務事業部最強驅動引擎。
  • copyright 2024吉日网官网