dict_learning_online#

sklearn.decomposition.dict_learning_online(X, n_components=2, *, alpha=1, max_iter=100, return_code=True, dict_init=None, callback=None, batch_size=256, verbose=False, shuffle=True, n_jobs=None, method='lars', random_state=None, positive_dict=False, positive_code=False, method_max_iter=1000, tol=0.001, max_no_improvement=10)[Quelle]#

Löst ein Dictionary-Learning-Matrixfaktorisierungsproblem online.

Findet das beste Dictionary und den entsprechenden spärlichen Code, um die Datenmatrix X durch Lösen 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 spärliche Code ist. ||.||_Fro steht für die Frobenius-Norm und ||.||_1,1 steht für die elementweise Matrixnorm, die die Summe der Absolutbeträge aller Einträge in der Matrix ist. Dies wird durch wiederholtes Iterieren über Minibatchs durch Slicing der Eingabedaten erreicht.

Lesen Sie mehr im Benutzerhandbuch.

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

Datenmatrix.

n_componentsint oder None, Standard=2

Anzahl der zu extrahierenden Dictionary-Atome. Wenn None, dann wird n_components auf n_features gesetzt.

alphafloat, Standard=1

Parameter zur Steuerung der Spärlichkeit.

max_iterint, default=100

Maximale Anzahl von Iterationen über den vollständigen Datensatz, bevor unabhängig von frühen Stoppkriterien beendet wird.

Hinzugefügt in Version 1.1.

return_codebool, Standard=True

Ob auch der Code U oder nur das Dictionary V zurückgegeben werden soll.

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

Anfangswerte für das Dictionary für Warmstart-Szenarien. Wenn None, werden die Anfangswerte für das Dictionary mit einer SVD-Zerlegung der Daten über randomized_svd erstellt.

callbackcallable, default=None

Eine aufrufbare Funktion, die am Ende jeder Iteration aufgerufen wird.

batch_sizeint, Standard=256

Die Anzahl der Samples, die in jedem Batch genommen werden.

Geändert in Version 1.3: Der Standardwert von batch_size hat sich von 3 auf 256 in Version 1.3 geändert.

verbosebool, default=False

Zur Steuerung der Ausführlichkeit des Verfahrens.

shufflebool, Standard=True

Ob die Daten vor der Aufteilung in Batches gemischt werden sollen.

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.

method{‘lars’, ‘cd’}, Standard=’lars’
  • 'lars': verwendet die Least-Angle-Regression-Methode zur Lösung des Lasso-Problems (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.

random_stateint, RandomState-Instanz oder None, default=None

Wird zur Initialisierung des Dictionarys verwendet, wenn dict_init nicht angegeben ist, zum zufälligen Mischen der Daten, wenn shuffle auf True gesetzt ist, und zum Aktualisieren des Dictionarys. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.

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 bei der Lösung des Lasso-Problems durchgeführt werden.

Hinzugefügt in Version 0.22.

tolfloat, Standard=1e-3

Steuert das frühe Stoppen basierend auf der Norm der Unterschiede im Dictionary zwischen 2 Schritten.

Um das frühe Stoppen basierend auf Änderungen im Dictionary zu deaktivieren, setzen Sie tol auf 0.0.

Hinzugefügt in Version 1.1.

max_no_improvementint, default=10

Steuert das frühe Stoppen basierend auf der aufeinanderfolgenden Anzahl von Minibatches, die keine Verbesserung der geglätteten Kostenfunktion ergeben.

Um die Konvergenzerkennung basierend auf der Kostenfunktion zu deaktivieren, setzen Sie max_no_improvement auf None.

Hinzugefügt in Version 1.1.

Gibt zurück:
codendarray der Form (n_samples, n_components),

Der spärliche Code (nur zurückgegeben, wenn return_code=True).

dictionaryndarray der Form (n_components, n_features),

Die Lösungen für das Dictionary-Learning-Problem.

n_iterint

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

Siehe auch

dict_learning

Löst ein Dictionary-Learning-Matrixfaktorisierungsproblem.

DictionaryLearning

Findet ein Dictionary, das Daten spärlich kodiert.

MiniBatchDictionaryLearning

Eine schnellere, weniger genaue Version des Dictionary-Lernalgorithmus.

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_online
>>> X, _, _ = make_sparse_coded_signal(
...     n_samples=30, n_components=15, n_features=20, n_nonzero_coefs=10,
...     random_state=42,
... )
>>> U, V = dict_learning_online(
...     X, n_components=15, alpha=0.2, max_iter=20, batch_size=3, random_state=42
... )

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

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

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.053)