sklearn.utils.extmath
.randomized_svd¶
- sklearn.utils.extmath.randomized_svd()¶
Calcula una SVD truncada aleatorizada.
- Parámetros
- M{ndarray, sparse matrix}
Matriz a descomponer.
- n_componentesint
Número de valores y vectores singulares a extraer.
- n_oversamplesint, default=10
Número adicional de vectores aleatorios para muestrear el rango de M y así garantizar un condicionamiento adecuado. El número total de vectores aleatorios utilizados para encontrar el rango de M es n_componentes + n_sobremuestras. Un número menor puede mejorar la velocidad pero puede afectar negativamente a la calidad de la aproximación de los vectores singulares y los valores singulares.
- n_iterint o “auto”, default=”auto”
Número de iteraciones de potencia. Puede utilizarse para tratar problemas muy ruidosos. Cuando es “auto”, se asigna a 4, a menos que
n_componentes
sea pequeño (< .1 * min(X.shape))n_iter
en cuyo caso se asigna a 7. Esto mejora la precisión con pocos componentes.Distinto en la versión 0.18.
- power_iteration_normalizer{“auto”, “QR”, “LU”, “none”}, default=”auto”
Si las iteraciones de potencia se normalizan con la factorización QR paso a paso (la más lenta pero la más precisa), “none” (la más rápida pero numéricamente inestable cuando
n_iter
es grande, por ejemplo, típicamente 5 o más), o la factorización “LU” (numéricamente estable pero puede perder ligeramente en exactitud). El modo “auto” no aplica ninguna normalización sin_iter
<= 2 y cambia a LU en caso contrario.Nuevo en la versión 0.18.
- transposebool o “auto”, default=”auto”
Si el algoritmo debe aplicarse a M.T en lugar de M. El resultado debería ser aproximadamente el mismo. El modo “auto” activará la transposición si M.shape[1] > M.shape[0] ya que esta implementación de SVD aleatoria tiende a ser un poco más rápida en ese caso.
Distinto en la versión 0.18.
- flip_signbool, default=True
El resultado de una descomposición de valores singulares sólo es única hasta una permutación de los signos de los vectores singulares. Si a
flip_sign
se le asignaTrue
, la ambigüedad de signos se resuelve haciendo que las mayores cargas de cada componente en los vectores singulares de la izquierda sean positivas.- random_stateint, instancia de RandomState o None, default=0
La semilla del generador de números pseudoaleatorios que se utilizará al revolver los datos, es decir, al obtener los vectores aleatorios para inicializar el algoritmo. Pasa un int para que los resultados sean reproducibles a través de múltiples llamadas a la función. Ver Glosario.
Notas
Este algoritmo encuentra una descomposición truncada del valor singular aproximada (normalmente muy buena) utilizando la aleatorización para acelerar los cálculos. Es particularmente rápido en matrices grandes en las que se desea extraer sólo un pequeño número de componentes. Para obtener una mayor velocidad, a
n_iter
se le puede asignar un valor <=2 (a costa de pérdida de precisión).Referencias
Finding structure with randomness: Stochastic algorithms for constructing approximate matrix decompositions Halko, et al., 2009 https://arxiv.org/abs/0909.4061
A randomized algorithm for the decomposition of matrices Per-Gunnar Martinsson, Vladimir Rokhlin and Mark Tygert
An implementation of a randomized algorithm for principal component analysis A. Szlam et al. 2014