sklearn.decomposition.MiniBatchDictionaryLearning

class sklearn.decomposition.MiniBatchDictionaryLearning

Aprendizaje de diccionario por mini lotes

Encuentra un diccionario (un conjunto de átomos) que puede utilizarse mejor para representar los datos utilizando un código disperso.

Resuelve el problema de optimización:

(U^*,V^*) = argmin 0.5 || X - U V ||_2^2 + alpha * || U ||_1
             (U,V)
             with || V_k ||_2 = 1 for all  0 <= k < n_components

Lee más en el Manual de usuario.

Parámetros
n_componentsint, default=None

Número de elementos del diccionario a extraer.

alphafloat, default=1

Parámetro de control de la dispersión.

n_iterint, default=1000

Número total de iteraciones a realizar.

fit_algorithm{“lars”, “cd”}, default=”lars”

El algoritmo utilizado:

  • 'lars': utiliza el método de regresión de ángulo mínimo para resolver el problema de lasso (linear_model.lars_path)

  • 'cd': utiliza el método de descenso coordinado para calcular la solución Lasso (linear_model.Lasso). Lars será más rápido si los componentes estimados son dispersos.

n_jobsint, default=None

Número de trabajos paralelos a ejecutar. None significa 1 a menos que esté en un contexto joblib.parallel_backend. -1 significa utilizar todos los procesadores. Ver Glosario para más detalles.

batch_sizeint, default=3

Número de muestras en cada mini lote.

shufflebool, default=True

Si se barajan, mezclan o revuelven las muestras antes de formar los lotes.

dict_initndarray de forma (n_components, n_features), default=None

valores iniciales del diccionario, para escenarios de reinicio en caliente

transform_algorithm{“lasso_lars”, “lasso_cd”, “lars”, “omp”, “threshold”}, default=”omp”

Algoritmo utilizado para transformar los datos:

  • 'lars': utiliza el método de regresión de ángulo mínimo (linear_model.lars_path);

  • 'lasso_lars': utiliza Lars para calcular la solución Lasso.

  • 'lasso_cd': utiliza el método de descenso coordinado para calcular la solución Lasso (linear_model.Lasso). 'lasso_lars' será más rápido si los componentes estimados son dispersos.

  • 'omp': utiliza la búsqueda de correspondencias ortogonales para estimar la solución dispersa.

  • 'threshold': reduce a cero todos los coeficientes menores que alfa de la proyección dictionary * X'.

transform_n_nonzero_coefsint, default=None

Número de coeficientes distintos de cero para el objetivo en cada columna de la solución. Sólo se utiliza con algorithm='lars' y algorithm='omp' y se anula con alpha en el caso omp. Si es None, entonces transform_n_nonzero_coefs=int(n_features / 10).

transform_alphafloat, default=None

Si algorithm='lasso_lars' o `algorithm='lasso_cd', alpha es la penalización aplicada a la norma L1. Si algorithm='threshold', alpha es el valor absoluto del umbral (threshold) por debajo del cual los coeficientes serán reducidos a cero. Si algorithm='omp', alpha es el parámetro de tolerancia: el valor del error de reconstrucción al que se apunta. En este caso, anula n_nonzero_coefs. Si es None, por defecto es 1.

verbosebool, default=False

Para controlar la verbosidad del procedimiento.

split_signbool, default=False

Si se divide el vector de características disperso en la concatenación de su parte negativa y su parte positiva. Esto puede mejorar el rendimiento de los clasificadores posteriores.

random_stateentero, instancia de RandomState o None, default=None

Se utiliza para inicializar el diccionario cuando no se especifica dict_init, barajar, mezclar o revolver los datos aleatoriamente cuando shuffle se establece como True, y actualizar el diccionario. Pasa un número entero (int) para que los resultados sean reproducibles a través de múltiples llamadas a la función. Ver Glosario.

positive_codebool, default=False

Si se debe imponer la positividad al encontrar el código.

Nuevo en la versión 0.20.

positive_dictbool, default=False

Si se debe imponer la positividad al encontrar el diccionario.

Nuevo en la versión 0.20.

transform_max_iterint, default=1000

Número máximo de iteraciones a realizar si algorithm=”lasso_cd”` o 'lasso_lars'.

Nuevo en la versión 0.22.

Atributos
components_ndarray de forma (n_components, n_features)

Componentes extraídos de los datos.

inner_stats_tupla de (A, B) ndarrays

Estadísticas internas suficientes que son mantenidas por el algoritmo. Mantenerlos es útil en los ajustes en línea, para evitar perder el historial de la evolución, pero no deberían tener ningún uso para el usuario final. A (n_components, n_components) es la matriz de covarianzas del diccionario. B (n_features, n_components) es la matriz de aproximación de datos.

n_iter_int

Número de iteraciones ejecutadas.

iter_offset_int

El número de iteraciones sobre lotes de datos que se han realizado anteriormente.

random_state_Instancia RandomState

Instancia de RandomState que se genera a partir de una semilla, el generador de números aleatorios o por np.random.

Notas

Referencias:

J. Mairal, F. Bach, J. Ponce, G. Sapiro, 2009: Online dictionary learning for sparse coding (https://www.di.ens.fr/sierra/pdfs/icml09.pdf)

Ejemplos

>>> import numpy as np
>>> from sklearn.datasets import make_sparse_coded_signal
>>> from sklearn.decomposition import MiniBatchDictionaryLearning
>>> X, dictionary, code = make_sparse_coded_signal(
...     n_samples=100, n_components=15, n_features=20, n_nonzero_coefs=10,
...     random_state=42)
>>> dict_learner = MiniBatchDictionaryLearning(
...     n_components=15, transform_algorithm='lasso_lars', random_state=42,
... )
>>> X_transformed = dict_learner.fit_transform(X)

Podemos comprobar el nivel de dispersión de X_transformed:

>>> np.mean(X_transformed == 0)
0.87...

Podemos comparar la norma euclidiana al cuadrado promedio del error de reconstrucción de la señal codificada dispersa con respecto a la norma euclidiana al cuadrado de la señal original:

>>> X_hat = X_transformed @ dict_learner.components_
>>> np.mean(np.sum((X_hat - X) ** 2, axis=1) / np.sum(X ** 2, axis=1))
0.10...

Métodos

fit

Ajusta el modelo a partir de los datos en X.

fit_transform

Ajusta a los datos y luego los transforma.

get_params

Obtiene los parámetros para este estimador.

partial_fit

Actualiza el modelo utilizando los datos en X como un mini lote.

set_params

Establece los parámetros de este estimador.

transform

Codifica los datos como una combinación dispersa de los átomos del diccionario.

fit()

Ajusta el modelo a partir de los datos en X.

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

Vector de entrenamiento, donde n_samples es el número de muestras y n_features es el número de características.

yIgnorado
Devuelve
selfobject

Devuelve la propia instancia.

fit_transform()

Ajusta a los datos y luego los transforma.

Ajusta el transformador a X e y con los parámetros opcionales fit_params y devuelve una versión transformada de X.

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

Muestras de entrada.

yarray-like de forma (n_samples,) o (n_samples, n_outputs), default=None

Valores objetivo (None para transformaciones no supervisadas).

**fit_paramsdict

Parámetros de ajuste adicionales.

Devuelve
X_newarreglo ndarray de forma (n_samples, n_features_new)

Arreglo transformado.

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

Los nombres de los parámetros mapeados a sus valores.

partial_fit()

Actualiza el modelo utilizando los datos en X como un mini lote.

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

Vector de entrenamiento, donde n_samples es el número de muestras y n_features es el número de características.

yIgnorado
iter_offsetint, default=None

El número de iteraciones sobre lotes de datos que se han realizado antes de esta llamada a partial_fit. Esto es opcional: si no se pasa ningún número, se utiliza la memoria del objeto.

Devuelve
selfobject

Devuelve la propia instancia.

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 del estimador

Instancia del estimador.

transform()

Codifica los datos como una combinación dispersa de los átomos del diccionario.

El método de codificación está determinado por el parámetro del objeto transform_algorithm.

Parámetros
Xndarray de forma (n_samples, n_features)

Los datos de prueba que se van a transformar, deben tener el mismo número de características que los datos utilizados para entrenar el modelo.

Devuelve
X_newndarray de forma (n_samples, n_components)

Datos transformados.