dict_learning#

sklearn.decomposition.dict_learning(X, n_components, *, alpha, max_iter=100, tol=1e-08, method='lars', n_jobs=None, dict_init=None, code_init=None, callback=None, verbose=False, random_state=None, return_n_iter=False, positive_dict=False, positive_code=False, method_max_iter=1000)[Quelle]#

Löst ein Dictionary-Learning-Matrixfaktorisierungsproblem.

Findet das beste Dictionary und den entsprechenden dünnbesetzten Code zur Approximation der Datenmatrix X durch Lösung von

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

wobei V das Dictionary und U der dünnbesetzte Code ist. ||.||_Fro steht für die Frobenius-Norm und ||.||_1,1 steht für die elementweise Matrixnorm, die die Summe der Absolutwerte aller Einträge in der Matrix ist.

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
Xarray-like der Form (n_samples, n_features)

Datenmatrix.

n_componentsint

Anzahl der zu extrahierenden Dictionary-Atome.

alphaint oder float

Parameter zur Steuerung der Spärlichkeit.

max_iterint, default=100

Maximale Anzahl von Iterationen, die durchgeführt werden sollen.

tolfloat, default=1e-8

Toleranz für die Abbruchbedingung.

method{‘lars’, ‘cd’}, Standard=’lars’

Die verwendete Methode

  • 'lars': verwendet die Least-Angle-Regression-Methode zur Lösung des Lasso-Problems (linear_model.lars_path);

    problem (linear_model.lars_path);

  • 'cd': verwendet die Koordinatensenkungsmethode zur Berechnung der Lasso-Lösung (linear_model.Lasso). Lars wird schneller sein, wenn die geschätzten Komponenten spärlich sind.

n_jobsint, default=None

Anzahl der parallelen Jobs, die ausgeführt werden sollen. None bedeutet 1, es sei denn, Sie befinden sich in einem joblib.parallel_backend-Kontext. -1 bedeutet die Verwendung aller Prozessoren. Weitere Einzelheiten finden Sie im Glossar.

dict_initndarray der Form (n_components, n_features), default=None

Anfangswert für das Dictionary für Warm-Start-Szenarien. Nur verwendet, wenn code_init und dict_init nicht None sind.

code_initndarray der Form (n_samples, n_components), Standard=None

Anfangswert für den dünnbesetzten Code für Warm-Start-Szenarien. Nur verwendet, wenn code_init und dict_init nicht None sind.

callbackcallable, default=None

Aufrufbar, das alle fünf Iterationen aufgerufen wird.

verbosebool, default=False

Zur Steuerung der Ausführlichkeit des Verfahrens.

random_stateint, RandomState-Instanz oder None, default=None

Wird zur zufälligen Initialisierung des Dictionarys verwendet. Geben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg an. Siehe Glossar.

return_n_iterbool, Standard=False

Ob die Anzahl der Iterationen zurückgegeben werden soll oder nicht.

positive_dictbool, default=False

Ob die Positivität bei der Ermittlung des Dictionarys erzwungen werden soll.

Hinzugefügt in Version 0.20.

positive_codebool, default=False

Ob die Positivität bei der Ermittlung des Codes erzwungen werden soll.

Hinzugefügt in Version 0.20.

method_max_iterint, Standard=1000

Maximale Anzahl von Iterationen, die durchgeführt werden sollen.

Hinzugefügt in Version 0.22.

Gibt zurück:
codendarray of shape (n_samples, n_components)

Der Faktor des dünnbesetzten Codes in der Matrixfaktorisierung.

dictionaryndarray der Form (n_components, n_features),

Der Dictionary-Faktor in der Matrixfaktorisierung.

errorsarray

Vektor der Fehler bei jeder Iteration.

n_iterint

Anzahl der durchgeführten Iterationen. Wird nur zurückgegeben, wenn return_n_iter auf True gesetzt ist.

Siehe auch

dict_learning_online

Löst ein Dictionary-Learning-Matrixfaktorisierungsproblem online.

DictionaryLearning

Findet ein Dictionary, das Daten spärlich kodiert.

MiniBatchDictionaryLearning

Ein schnellerer, weniger genauer Algorithmus für das Dictionary-Lernen.

SparsePCA

Spärliche Hauptkomponentenanalyse.

MiniBatchSparsePCA

Mini-Batch Sparse Principal Components Analysis.

Beispiele

>>> import numpy as np
>>> from sklearn.datasets import make_sparse_coded_signal
>>> from sklearn.decomposition import dict_learning
>>> X, _, _ = make_sparse_coded_signal(
...     n_samples=30, n_components=15, n_features=20, n_nonzero_coefs=10,
...     random_state=42,
... )
>>> U, V, errors = dict_learning(X, n_components=15, alpha=0.1, random_state=42)

Wir können den Grad der Sparsity von U überprüfen.

>>> np.mean(U == 0)
np.float64(0.62)

Wir können die durchschnittliche quadrierte euklidische Norm des Rekonstruktionsfehlers des spärlich kodierten Signals im Verhältnis zur quadrierten euklidischen Norm des ursprünglichen Signals vergleichen.

>>> X_hat = U @ V
>>> np.mean(np.sum((X_hat - X) ** 2, axis=1) / np.sum(X ** 2, axis=1))
np.float64(0.0192)