主成分分析 PCA: principal component analysis
主成分分析是一種簡化數(shù)據(jù)集維數(shù)的技術(shù)温自。特點是保存數(shù)據(jù)集中對方差影響最大的那些特征。
在信息理論中廊谓,信號會有較大的方差综看,噪聲會有較小的方差畸冲。用我們自己的想法,在多維數(shù)據(jù)中選出最有代表性的一維一定是差別較大的一維倘零。
具體的計算方法可以參考這篇文章:主成分分析(Principal components analysis)-最大方差解釋。
在 scikit-learn 這個工具下戳寸,進(jìn)行主成分分析用的是 PCA 類呈驶。Python代碼是:
from sklearn.decomposition import PCA
PCA有許多種方式,參考:sckikit-learn 上的 PCA 頁疫鹊。
隨機(jī)映射 random projection
sklearn.random_projection 模塊實現(xiàn)了一種簡單和計算高效的方法袖瞻,通過交易控制量的精度(作為附加方差),以縮短數(shù)據(jù)的維數(shù)拆吆,從而縮短處理時間和縮小模型大小聋迎。 該模塊實現(xiàn)兩種類型的非結(jié)構(gòu)化隨機(jī)矩陣:高斯隨機(jī)矩陣和稀疏隨機(jī)矩陣。
隨機(jī)映射矩陣的維度和分布是被控制的枣耀,為了保證在數(shù)據(jù)集中任意兩個樣本的距離霉晕。隨機(jī)映射也是一種合適的基于距離的近似精確的方法。
Johnson-Lindenstrauss Lemma 定理保證了降維方法精度的上下限捞奕。johnson_lindenstrauss_min_dim 是找到一個數(shù)量能保證隨機(jī)降維到這個數(shù)量的矩陣牺堰。n_samples 是樣本的數(shù)量,eps 是由 J-L 定理定義的最大失真率颅围。
>>> from sklearn.random_projection import johnson_lindenstrauss_min_dim
>>> johnson_lindenstrauss_min_dim(n_samples=1e6, eps=0.5)
663
>>> johnson_lindenstrauss_min_dim(n_samples=1e6, eps=[0.5, 0.1, 0.01])
array([ 663, 11841, 1112658])
>>> johnson_lindenstrauss_min_dim(n_samples=[1e4, 1e5, 1e6], eps=0.1)
array([ 7894, 9868, 11841])
高斯隨機(jī)映射 Gaussian random projection
sklearn.random_projection.GaussianRandomProjection 通過將原始輸入空間投影在隨機(jī)生成的矩陣上來降低維度伟葫。代碼如下:
>>> import numpy as np
>>> from sklearn import random_projection
>>> X = np.random.rand(100, 10000)
>>> transformer = random_projection.GaussianRandomProjection()
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(100, 3947)
稀疏隨機(jī)映射 Sparse random projection
相比于高斯隨機(jī)映射,稀疏隨機(jī)映射會更能保證降維的質(zhì)量谷浅,并帶來內(nèi)存的使用效率和運算效率扒俯。
使用方法如下:
>>> import numpy as np
>>> from sklearn import random_projection
>>> X = np.random.rand(100,10000)
>>> transformer = random_projection.SparseRandomProjection()
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(100, 3947)
特征聚集 Feature agglomeration
把那些效果或行為相似的特征起來,達(dá)到降維的目的一疯。
利用的是下面的類:
sklearn.cluster.FeatureAgglomeration
由于例子過于復(fù)雜,把本方法的使用說明使用說明貼上夺姑。