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 contextojoblib.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óndictionary * 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'
yalgorithm='omp'
y se anula conalpha
en el casoomp
. Si esNone
, entoncestransform_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. Sialgorithm='threshold'
,alpha
es el valor absoluto del umbral (threshold) por debajo del cual los coeficientes serán reducidos a cero. Sialgorithm='omp'
,alpha
es el parámetro de tolerancia: el valor del error de reconstrucción al que se apunta. En este caso, anulan_nonzero_coefs
. Si esNone
, 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 cuandoshuffle
se establece comoTrue
, 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
.
Ver también
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
Ajusta el modelo a partir de los datos en X.
Ajusta a los datos y luego los transforma.
Obtiene los parámetros para este estimador.
Actualiza el modelo utilizando los datos en X como un mini lote.
Establece los parámetros de este estimador.
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
ey
con los parámetros opcionalesfit_params
y devuelve una versión transformada deX
.- 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.