W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
sklearn.random_projection
模塊實現(xiàn)了一種簡單且計算高效的減少數(shù)據(jù)維數(shù)的方式,通過以可控制的精度(以附加方差)為代價來縮短處理時間并縮小模型尺寸。該模塊實現(xiàn)兩種非結(jié)構(gòu)化隨機矩陣: 高斯隨機矩陣和 稀疏隨機矩陣。
控制隨機投影矩陣的尺寸和分布以維持數(shù)據(jù)集的任何兩個樣本之間的成對距離。因此,隨機投影是基于距離方法的合適的近似技術(shù)。
參考文獻:
Sanjoy Dasgupta.2000. 隨機投影實驗。 第16屆人工智能不確定性會議(UAI'00)的會議記錄,克雷格·鮑迪埃(Craig Boutilier)和MoisésGoldszmidt(編輯)。美國加利福尼亞州舊金山的摩根考夫曼出版社(Morgan Kaufmann Publishers Inc.),編號143-151。 Ella Bingham和Heikki Mannila.2001. 降維中的隨機投影:圖像和文本數(shù)據(jù)的應用。 第七屆ACM SIGKDD有關(guān)知識發(fā)現(xiàn)和數(shù)據(jù)挖掘的國際會議論文集(KDD '01)。美國紐約州紐約市,ACM,245-250。
隨機投影效率背后的主要理論結(jié)果是 Johnson-Lindenstrauss引理(引用Wikipedia):
在數(shù)學中,Johnson-Lindenstrauss引理是關(guān)于點從高維到低維歐幾里德空間的低失真嵌入的結(jié)果。引理指出,高維空間中的一小部分點可以以點之間的距離幾乎被保留的方式嵌入到低維空間中。用于嵌入的地圖至少為Lipschitz,甚至可以視為正交投影。
僅知道樣本數(shù)的情況下, sklearn.random_projection.johnson_lindenstrauss_min_dim
保守估計隨機子空間的最小尺寸,以保證隨機投影導致的失真在一定范圍內(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])
示例:
有關(guān) Johnson-Lindenstrauss引理的理論解釋和使用稀疏隨機矩陣的經(jīng)驗驗證,請參見Johnson-Lindenstrauss綁定嵌入隨機投影 。
參考文獻:
Sanjoy Dasgupta和Anupam Gupta,1999年。 Johnson-Lindenstrauss Lemma的基本證明。
sklearn.random_projection.GaussianRandomProjection
通過將原始輸入控件投影到隨機生成的矩陣上來降低維數(shù),該矩陣從以下分布 中提取元素。
以下片段說明了如何使用高斯隨機投影轉(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)
sklearn.random_projection.SparseRandomProjection
通過使用稀疏隨機矩陣投影原始輸入空間來降低維數(shù)。
稀疏隨機矩陣是稠密高斯隨機投影矩陣的替代并保證相似的嵌入質(zhì)量,同時具有更高的存儲效率而且可以更快地計算投影數(shù)據(jù)。
如果我們定義s = 1 / density
,則隨機矩陣的元素來自:
其中
以下小片段說明了如何使用稀疏隨機投影轉(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)
參考文獻
D. Achlioptas. 2003. Database-friendly random projections: Johnson-Lindenstrauss with binary coins. Journal of Computer and System Sciences 66 (2003) 671–687 Ping Li, Trevor J. Hastie, and Kenneth W. Church. 2006. Very sparse random projections. In Proceedings of the 12th ACM SIGKDD international conference on Knowledge discovery and data mining (KDD ‘06). ACM, New York, NY, USA, 287-296.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: