scikit-learn 隨機(jī)投影

2023-02-20 14:39 更新

sklearn.random_projection模塊實現(xiàn)了一種簡單且計算高效的減少數(shù)據(jù)維數(shù)的方式,通過以可控制的精度(以附加方差)為代價來縮短處理時間并縮小模型尺寸。該模塊實現(xiàn)兩種非結(jié)構(gòu)化隨機(jī)矩陣: 高斯隨機(jī)矩陣稀疏隨機(jī)矩陣。

控制隨機(jī)投影矩陣的尺寸和分布以維持?jǐn)?shù)據(jù)集的任何兩個樣本之間的成對距離。因此,隨機(jī)投影是基于距離方法的合適的近似技術(shù)。

參考文獻(xiàn):

  • Sanjoy Dasgupta.2000. 隨機(jī)投影實驗。 第16屆人工智能不確定性會議(UAI'00)的會議記錄,克雷格·鮑迪埃(Craig Boutilier)和MoisésGoldszmidt(編輯)。美國加利福尼亞州舊金山的摩根考夫曼出版社(Morgan Kaufmann Publishers Inc.),編號143-151。
  • Ella Bingham和Heikki Mannila.2001. 降維中的隨機(jī)投影:圖像和文本數(shù)據(jù)的應(yīng)用。 第七屆ACM SIGKDD有關(guān)知識發(fā)現(xiàn)和數(shù)據(jù)挖掘的國際會議論文集(KDD '01)。美國紐約州紐約市,ACM,245-250。

6.6.1 The Johnson-Lindenstrauss 引理

隨機(jī)投影效率背后的主要理論結(jié)果是 Johnson-Lindenstrauss引理(引用Wikipedia)

在數(shù)學(xué)中,Johnson-Lindenstrauss引理是關(guān)于點(diǎn)從高維到低維歐幾里德空間的低失真嵌入的結(jié)果。引理指出,高維空間中的一小部分點(diǎn)可以以點(diǎn)之間的距離幾乎被保留的方式嵌入到低維空間中。用于嵌入的地圖至少為Lipschitz,甚至可以視為正交投影。

僅知道樣本數(shù)的情況下, sklearn.random_projection.johnson_lindenstrauss_min_dim保守估計隨機(jī)子空間的最小尺寸,以保證隨機(jī)投影導(dǎo)致的失真在一定范圍內(nèi):

>>> 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])

示例:

參考文獻(xiàn):

6.6.2 高斯隨機(jī)投影

sklearn.random_projection.GaussianRandomProjection通過將原始輸入控件投影到隨機(jī)生成的矩陣上來降低維數(shù),該矩陣從以下分布 中提取元素。

以下片段說明了如何使用高斯隨機(jī)投影轉(zhuǎn)換器:

>>> 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)

6.6.3 稀疏隨機(jī)投影

sklearn.random_projection.SparseRandomProjection通過使用稀疏隨機(jī)矩陣投影原始輸入空間來降低維數(shù)。

稀疏隨機(jī)矩陣是稠密高斯隨機(jī)投影矩陣的替代并保證相似的嵌入質(zhì)量,同時具有更高的存儲效率而且可以更快地計算投影數(shù)據(jù)。

如果我們定義s = 1 / density,則隨機(jī)矩陣的元素來自:

其中是投影子空間的大小。 默認(rèn)情況下,非零元素的密度設(shè)置為Ping Li等人建議的最小密度:.

以下小片段說明了如何使用稀疏隨機(jī)投影轉(zhuǎn)換器:

>>> 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)

參考文獻(xiàn)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號