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_componentsaufn_featuresgesetzt.- 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
Vzurü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 überrandomized_svderstellt.- 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_sizehat 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.
Nonebedeutet 1, es sei denn, Sie befinden sich in einemjoblib.parallel_backend-Kontext.-1bedeutet 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_initnicht angegeben ist, zum zufälligen Mischen der Daten, wennshuffleaufTruegesetzt 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
tolauf 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_improvementauf 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_iteraufTruegesetzt ist.
Siehe auch
dict_learningLöst ein Dictionary-Learning-Matrixfaktorisierungsproblem.
DictionaryLearningFindet ein Dictionary, das Daten spärlich kodiert.
MiniBatchDictionaryLearningEine schnellere, weniger genaue Version des Dictionary-Lernalgorithmus.
SparsePCASpärliche Hauptkomponentenanalyse.
MiniBatchSparsePCAMini-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)