sklearn.utils.extmath.randomized_svd?
sklearn.utils.extmath.randomized_svd(M, n_components, *, n_oversamples=10, n_iter='auto', power_iteration_normalizer='auto', transpose='auto', flip_sign=True, random_state=0)
計算截斷的隨機SVD
參數 | 說明 |
---|---|
M | ndarray or sparse matrix 分解矩陣 |
n_components | int 要提取的奇異值和向量的數量。 |
n_oversamples | int (default is 10) 附加數量的隨機向量可對M的范圍進行采樣,以確保適當的條件。 用于查找M范圍的隨機向量總數為n_components + n_oversamples。 較小的數字可以提高速度,但會對奇異矢量和奇異值的近似質量產生負面影響。 |
n_iter | int or ‘auto’ (default is ‘auto’) 冪次迭代的次數。它可以用來處理非常嘈雜的問題。如果設為“ auto”,則將其設置為4,除非n_components很小(<.1 * min(X.shape)),n_iter在這種情況下設置為7。這樣就可以減少零件數量,從而提高精度。 |
power_iteration_normalizer | ‘auto’ (default), ‘QR’, ‘LU’, ‘none’ 設置冪次迭代是否通過逐步QR因子分解(最慢但最準確)歸一化,設置為none(當n iter較大時最快但數值不穩定,例如5或更大),或LU因子分解(數值穩定但精度會稍微下降)。如果n iter <= 2,則自動模式不應用歸一化,否則切換到LU。 新版本0.18的功能。 |
transpose | True, False or ‘auto’ (default) 是否應將算法應用于M.T而不是M。結果應大致相同。 如果M.shape [1]> M.shape [0],則“自動”模式將觸發換位,因為在這種情況下,隨機化SVD的實現往往會更快一些。 在版本0.18中進行了更改。 |
flip_sign | boolean, (True by default) 奇異值分解的輸出僅在奇異矢量的符號置換之前是唯一的。 如果將flip_sign設置為True,則通過使左奇異矢量中每個分量的最大負載為正來解決符號的不確定性。 |
random_state | int, RandomState instance or None, optional (default=None) 偽隨機數生成器的種子在對數據進行混洗時使用,即獲取隨機向量從而初始化算法。 在多個函數調用中傳遞可重復的結果。 請參閱詞匯表。 |
注:
該算法利用隨機化方法找到(通常很好的)近似截斷奇異值分解,以加快計算速度。當您希望只提取少量成分的大型矩陣時,它的速度特別快。為了進一步提高速度,可以將n iter設為<=2(以犧牲精度為代價)。
參考:
1 尋找具有隨機性的結構:用于構造近似矩陣分解的隨機算法 Halko等,2009 https://arxiv.org/abs/0909.4061
2 矩陣分解的隨機算法Per-Gunnar Martinsson,Vladimir Rokhlin和Mark Tygert
3 主成分分析的隨機算法的一種實現方法A. Szlam等。 2014年