sklearn.random_projection.johnson_lindenstrauss_min_dim?
sklearn.random_projection.johnson_lindenstrauss_min_dim(n_samples, *, eps=0.1)
[源碼]
查找數量“安全”的組件以隨機投影到
由隨機投影p引入的失真在歐幾里得空間中以良好的概率僅將兩點之間的距離改變一個因子(1 +-eps)。 投影p是eps嵌入,其定義如下:
(1-eps)|| u-v || ^ 2 <|| p(u)-p(v)|| ^ 2 <(1 + eps)|| u-v || ^ 2
其中u和v是從形狀[n_samples,n_features]的數據集中獲取的任何行,eps在] 0中,1 [,p是形狀為[n_components,n_features]的隨機高斯N(0,1)矩陣的投影 (或稀疏的Achlioptas矩陣)。
保證eps嵌入的最小組件數由下式給出:
n_components> = 4 log(n_samples)/(eps ^ 2/2-eps ^ 3/3)
請注意,尺寸的數量與原始要素的數量無關,而是取決于數據集的大小:數據集越大,eps嵌入的最小尺寸越高。
在用戶指南中閱讀更多內容。
參數 | 說明 |
---|---|
n_samples | int or numpy array of int greater than 0, 樣本數。 如果給出了一個數組,它將按數組計算安全數量的組件。 |
eps | float or numpy array of float in ]0,1[, optional (default=0.1) 由Johnson-Lindenstrauss引理定義的最大失真率。 如果給出了一個數組,它將按數組計算安全數量的組件。 |
返回值 | 說明 |
---|---|
n_components | int or numpy array of int, 最小數量的組件,以極有可能保證n_samples的eps嵌入。 |
參考資料
1 https://en.wikipedia.org/wiki/Johnson%E2%80%93Lindenstrauss_lemma](https://en.wikipedia.org/wiki/Johnson–Lindenstrauss_lemma)
2 Sanjoy Dasgupta and Anupam Gupta, 1999, “An elementary proof of the Johnson-Lindenstrauss Lemma.” http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.45.3654
示例
>>> johnson_lindenstrauss_min_dim(1e6, eps=0.5)
663
>>> johnson_lindenstrauss_min_dim(1e6, eps=[0.5, 0.1, 0.01])
array([ 663, 11841, 1112658])
>>> johnson_lindenstrauss_min_dim([1e4, 1e5, 1e6], eps=0.1)
array([ 7894, 9868, 11841])