sklearn.decomposition.TruncatedSVD

class sklearn.decomposition.TruncatedSVD

Reducción de dimensionalidad usando la SVD truncada (también conocida como LSA).

Este transformador realiza una reducción lineal de la dimensionalidad mediante la descomposición del valor singular (SVD) truncada. A diferencia del PCA, este estimador no centra los datos antes de calcular la descomposición del valor singular. Esto significa que puede trabajar con matrices dispersas de forma eficiente.

En particular, la SVD truncada funciona en matrices de recuento de términos/tf-idf tal y como las devuelven los vectorizadores de sklearn.feature_extraction.text. En ese contexto, se conoce como análisis semántico latente (LSA).

Este estimador soporta dos algoritmos: un solucionador SVD aleatorizado rápido y un algoritmo «ingenuo» (naive) que utiliza ARPACK como método de obtención de autovalores en X * X.T o X.T * X lo que sea más eficiente.

Más información en el Manual de usuario.

Parámetros
n_componentsint, default=2

Dimensionalidad deseada de los datos de salida. Debe ser estrictamente menor que el número de características. El valor predeterminado es útil para la visualización. Para LSA, se recomienda un valor de 100.

algorithm{“arpack”, “randomized”}, default=”randomized”

Solucionador SVD a utilizar. Ya sea «arpack» para el envoltorio de ARPACK en SciPy (scipy.sparse.linalg.svds), o bien «randomized» para el algoritmo aleatorizado debido a Halko (2009).

n_iterint, default=5

Número de iteraciones para el solucionador SVD aleatorizado. No es utilizado por ARPACK. El valor predeterminado es mayor que el valor por defecto en randomized_svd para manejar matrices dispersas que pueden tener un gran espectro que decae lentamente.

random_stateint, instancia de RandomState o None, default=None

Se utiliza durante el svd aleatorizado. Pasa un entero (int) para obtener resultados reproducibles a través de múltiples llamadas a la función. Ver Glosario.

tolfloat, default=0.

Tolerancia para ARPACK. 0 significa precisión de máquina. Ignorado por el solucionador SVD aleatorizado.

Atributos
components_ndarray de forma (n_components, n_features)
explained_variance_ndarray de forma (n_components,)

La varianza de las muestras de entrenamiento transformada por una proyección a cada componente.

explained_variance_ratio_ndarray de forma (n_components,)

Porcentaje de la varianza explicada por cada uno de los componentes seleccionados.

singular_values_ndarray de forma (n_components,)

Los valores singulares correspondientes a cada uno de los componentes seleccionados. Los valores singulares son iguales a las 2-normas de las variables n_componentes en el espacio de dimensión inferior.

Ver también

PCA

Notas

SVD sufre de un problema llamado «indeterminación de signos», lo que significa que el signo de los components_ y la salida de la transformación dependen del algoritmo y del estado aleatorio. Para solucionar esto, se deben ajustar las instancias de esta clase a los datos una vez, y luego mantener la instancia alrededor para realizar transformaciones.

Referencias

Finding structure with randomness: Stochastic algorithms for constructing approximate matrix decompositions Halko, et al., 2009 (arXiv:909) https://arxiv.org/pdf/0909.4061.pdf

Ejemplos

>>> from sklearn.decomposition import TruncatedSVD
>>> from scipy.sparse import random as sparse_random
>>> X = sparse_random(100, 100, density=0.01, format='csr',
...                   random_state=42)
>>> svd = TruncatedSVD(n_components=5, n_iter=7, random_state=42)
>>> svd.fit(X)
TruncatedSVD(n_components=5, n_iter=7, random_state=42)
>>> print(svd.explained_variance_ratio_)
[0.0646... 0.0633... 0.0639... 0.0535... 0.0406...]
>>> print(svd.explained_variance_ratio_.sum())
0.286...
>>> print(svd.singular_values_)
[1.553... 1.512...  1.510... 1.370... 1.199...]

Métodos

fit

Ajusta el modelo a los datos de entrenamiento X.

fit_transform

Ajusta el modelo a X y realiza una reducción de la dimensionalidad en X.

get_params

Obtiene los parámetros para este estimador.

inverse_transform

Transforma X de nuevo a su espacio original.

set_params

Establece los parámetros de este estimador.

transform

Realiza una reducción de la dimensionalidad en X.

fit()

Ajusta el modelo a los datos de entrenamiento X.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Datos de entrenamiento.

yIgnorado
Devuelve
selfobject

Devuelve el objeto transformador.

fit_transform()

Ajusta el modelo a X y realiza una reducción de la dimensionalidad en X.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Datos de entrenamiento.

yIgnorado
Devuelve
X_newndarray de forma (n_samples, n_components)

Versión reducida de X. Esta será siempre un arreglo denso.

get_params()

Obtiene los parámetros para este estimador.

Parámetros
deepbool, default=True

Si es True, devolverá los parámetros para este estimador y los subobjetos contenidos que son estimadores.

Devuelve
paramsdict

Nombres de parámetros asignados a sus valores.

inverse_transform()

Transforma X de nuevo a su espacio original.

Devuelve un arreglo X_original cuya transformación sería X.

Parámetros
Xarray-like de forma (n_samples, n_components)

Nuevos datos.

Devuelve
X_originalndarray de forma (n_samples, n_features)

Ten en cuenta que siempre se trata de un arreglo denso.

set_params()

Establece los parámetros de este estimador.

El método funciona tanto en estimadores simples como en objetos anidados (como Pipeline). Estos últimos tienen parámetros de la forma <component>__<parameter>` para que sea posible actualizar cada componente de un objeto anidado.

Parámetros
**paramsdict

Parámetros del estimador.

Devuelve
selfinstancia de estimador

Instancia del estimador.

transform()

Realiza una reducción de la dimensionalidad en X.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Nuevos datos.

Devuelve
X_newndarray de forma (n_samples, n_components)

Versión reducida de X. Esta será siempre un arreglo denso.

Ejemplos usando sklearn.decomposition.TruncatedSVD