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 si n_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 asigna True, 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