MiniBatchDictionaryLearning#

class sklearn.decomposition.MiniBatchDictionaryLearning(n_components=None, *, alpha=1, max_iter=1000, fit_algorithm='lars', n_jobs=None, batch_size=256, shuffle=True, dict_init=None, transform_algorithm='omp', transform_n_nonzero_coefs=None, transform_alpha=None, verbose=False, split_sign=False, random_state=None, positive_code=False, positive_dict=False, transform_max_iter=1000, callback=None, tol=0.001, max_no_improvement=10)[source]#

Mini-Batch Dictionary Learning.

Findet ein Dictionary (eine Menge von Atomen), das gut zur dünnbesetzten Kodierung der angepassten Daten geeignet ist.

Löst das Optimierungsproblem

(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

||.||_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:
n_componentsint, default=None

Anzahl der zu extrahierenden Dictionary-Elemente.

alphafloat, Standard=1

Parameter zur Steuerung der Spärlichkeit.

max_iterint, default=1_000

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

Hinzugefügt in Version 1.1.

fit_algorithm{‘lars’, ‘cd’}, default=’lars’

Der verwendete Algorithmus

  • '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.

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.

batch_sizeint, default=256

Anzahl der Samples in jedem Mini-Batch.

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

shufflebool, Standard=True

Ob die Samples vor der Batch-Bildung gemischt werden sollen.

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

Anfangswert des Dictionaries für Szenarien mit warmem Neustart.

transform_algorithm{‘lasso_lars’, ‘lasso_cd’, ‘lars’, ‘omp’, ‘threshold’}, default=’omp’

Algorithmus, der zur Transformation der Daten verwendet wird.

  • 'lars': verwendet die Least Angle Regression-Methode (linear_model.lars_path);

  • 'lasso_lars': verwendet Lars zur Berechnung der Lasso-Lösung.

  • 'lasso_cd': verwendet die Coordinate Descent-Methode zur Berechnung der Lasso-Lösung (linear_model.Lasso). 'lasso_lars' ist schneller, wenn die geschätzten Komponenten dünnbesetzt sind.

  • 'omp': verwendet Orthogonal Matching Pursuit zur Schätzung der dünnbesetzten Lösung.

  • 'threshold': setzt alle Koeffizienten, die kleiner als alpha sind, aus der Projektion dictionary * X' auf Null.

transform_n_nonzero_coefsint, default=None

Anzahl der Nicht-Null-Koeffizienten, die in jeder Spalte der Lösung angestrebt werden. Dies wird nur von algorithm='lars' und algorithm='omp' verwendet. Wenn None, dann transform_n_nonzero_coefs=int(n_features / 10).

transform_alphafloat, default=None

Wenn algorithm='lasso_lars' oder algorithm='lasso_cd', ist alpha die Strafe, die auf die L1-Norm angewendet wird. Wenn algorithm='threshold', ist alpha der Absolutwert des Schwellenwerts, unterhalb dessen Koeffizienten auf Null gesetzt werden. Wenn None, wird standardmäßig alpha verwendet.

Geändert in Version 1.2: Wenn None, änderte sich der Standardwert von 1.0 zu alpha.

verbosebool oder int, default=False

Zur Steuerung der Ausführlichkeit des Verfahrens.

split_signbool, default=False

Ob der spärliche Feature-Vektor in die Konkatenation seines negativen und positiven Teils aufgeteilt werden soll. Dies kann die Leistung nachgeschalteter Klassifikatoren verbessern.

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_codebool, default=False

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

Hinzugefügt in Version 0.20.

positive_dictbool, default=False

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

Hinzugefügt in Version 0.20.

transform_max_iterint, default=1000

Maximale Anzahl von Iterationen, die durchgeführt werden sollen, wenn algorithm='lasso_cd' oder 'lasso_lars'.

Hinzugefügt in Version 0.22.

callbackcallable, default=None

Ein aufrufbares Objekt, das am Ende jeder Iteration aufgerufen wird.

Hinzugefügt in Version 1.1.

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.

Attribute:
components_ndarray der Form (n_components, n_features)

Aus den Daten extrahierte Komponenten.

n_features_in_int

Anzahl der während des fits gesehenen Merkmale.

Hinzugefügt in Version 0.24.

feature_names_in_ndarray mit Form (n_features_in_,)

Namen der während fit gesehenen Merkmale. Nur definiert, wenn X Merkmalnamen hat, die alle Zeichenketten sind.

Hinzugefügt in Version 1.0.

n_iter_int

Anzahl der Iterationen über den gesamten Datensatz.

n_steps_int

Anzahl der verarbeiteten Mini-Batches.

Hinzugefügt in Version 1.1.

Siehe auch

DictionaryLearning

Findet ein Dictionary, das Daten spärlich kodiert.

MiniBatchSparsePCA

Mini-Batch Sparse Principal Components Analysis.

SparseCoder

Findet eine spärliche Darstellung von Daten aus einem festen, vordefinierten Dictionary.

SparsePCA

Spärliche Hauptkomponentenanalyse.

Referenzen

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

Beispiele

>>> 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=30, n_components=15, n_features=20, n_nonzero_coefs=10,
...     random_state=42)
>>> dict_learner = MiniBatchDictionaryLearning(
...     n_components=15, batch_size=3, transform_algorithm='lasso_lars',
...     transform_alpha=0.1, max_iter=20, random_state=42)
>>> X_transformed = dict_learner.fit_transform(X)

Wir können den Grad der Dünnbesetztheit von X_transformed überprüfen.

>>> np.mean(X_transformed == 0) > 0.5
np.True_

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 = X_transformed @ dict_learner.components_
>>> np.mean(np.sum((X_hat - X) ** 2, axis=1) / np.sum(X ** 2, axis=1))
np.float64(0.052)

Ein detaillierteres Beispiel finden Sie unter Bildrauschen mit Dictionary Learning

fit(X, y=None)[source]#

Passt das Modell anhand von Daten in X an.

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

Trainingsvektor, wobei n_samples die Anzahl der Stichproben und n_features die Anzahl der Merkmale ist.

yIgnoriert

Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.

Gibt zurück:
selfobject

Gibt die Instanz selbst zurück.

fit_transform(X, y=None, **fit_params)[source]#

An Daten anpassen, dann transformieren.

Passt den Transformer an X und y mit optionalen Parametern fit_params an und gibt eine transformierte Version von X zurück.

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

Eingabestichproben.

yarray-like der Form (n_samples,) oder (n_samples, n_outputs), Standardwert=None

Zielwerte (None für unüberwachte Transformationen).

**fit_paramsdict

Zusätzliche Fit-Parameter. Nur übergeben, wenn der Estimator zusätzliche Parameter in seiner fit-Methode akzeptiert.

Gibt zurück:
X_newndarray array der Form (n_samples, n_features_new)

Transformiertes Array.

get_feature_names_out(input_features=None)[source]#

Holt die Ausgabemerkmale für die Transformation.

Die Feature-Namen werden mit dem kleingeschriebenen Klassennamen präfixiert. Wenn der Transformer z.B. 3 Features ausgibt, dann sind die Feature-Namen: ["klassenname0", "klassenname1", "klassenname2"].

Parameter:
input_featuresarray-like von str oder None, default=None

Wird nur verwendet, um die Feature-Namen mit den in fit gesehenen Namen zu validieren.

Gibt zurück:
feature_names_outndarray von str-Objekten

Transformierte Merkmalnamen.

get_metadata_routing()[source]#

Holt das Metadaten-Routing dieses Objekts.

Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.

Gibt zurück:
routingMetadataRequest

Ein MetadataRequest, der Routing-Informationen kapselt.

get_params(deep=True)[source]#

Holt Parameter für diesen Schätzer.

Parameter:
deepbool, default=True

Wenn True, werden die Parameter für diesen Schätzer und die enthaltenen Unterobjekte, die Schätzer sind, zurückgegeben.

Gibt zurück:
paramsdict

Parameternamen, zugeordnet ihren Werten.

inverse_transform(X)[source]#

Daten zurück in ihren ursprünglichen Raum transformieren.

Parameter:
Xarray-ähnlich von der Form (n_samples, n_components)

Zu transformierende Daten. Muss die gleiche Anzahl von Komponenten wie die zum Trainieren des Modells verwendeten Daten haben.

Gibt zurück:
X_originalndarray von der Form (n_samples, n_features)

Transformierte Daten.

partial_fit(X, y=None)[source]#

Aktualisiert das Modell mit den Daten in X als Mini-Batch.

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

Trainingsvektor, wobei n_samples die Anzahl der Stichproben und n_features die Anzahl der Merkmale ist.

yIgnoriert

Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.

Gibt zurück:
selfobject

Gibt die Instanz selbst zurück.

set_output(*, transform=None)[source]#

Ausgabecontainer festlegen.

Siehe Einführung in die set_output API für ein Beispiel zur Verwendung der API.

Parameter:
transform{“default”, “pandas”, “polars”}, default=None

Konfiguriert die Ausgabe von transform und fit_transform.

  • "default": Standardausgabeformat eines Transformers

  • "pandas": DataFrame-Ausgabe

  • "polars": Polars-Ausgabe

  • None: Die Transformationskonfiguration bleibt unverändert

Hinzugefügt in Version 1.4: Die Option "polars" wurde hinzugefügt.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.

set_params(**params)[source]#

Setzt die Parameter dieses Schätzers.

Die Methode funktioniert sowohl bei einfachen Schätzern als auch bei verschachtelten Objekten (wie Pipeline). Letztere haben Parameter der Form <component>__<parameter>, so dass es möglich ist, jede Komponente eines verschachtelten Objekts zu aktualisieren.

Parameter:
**paramsdict

Schätzer-Parameter.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.

transform(X)[source]#

Kodiert die Daten als spärliche Kombination der Dictionary-Atome.

Die Kodierungsmethode wird durch den Objektparameter transform_algorithm bestimmt.

Parameter:
Xndarray der Form (n_samples, n_features)

Zu transformierende Testdaten. Muss die gleiche Anzahl von Merkmalen wie die zum Trainieren des Modells verwendeten Daten haben.

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

Transformierte Daten.