MiniBatchNMF#
- class sklearn.decomposition.MiniBatchNMF(n_components='auto', *, init=None, batch_size=1024, beta_loss='frobenius', tol=0.0001, max_no_improvement=10, max_iter=200, alpha_W=0.0, alpha_H='same', l1_ratio=0.0, forget_factor=0.7, fresh_restarts=False, fresh_restarts_max_iter=30, transform_max_iter=None, random_state=None, verbose=0)[source]#
Mini-Batch Non-Negative Matrix Factorization (NMF).
Hinzugefügt in Version 1.1.
Findet zwei nicht-negative Matrizen, d.h. Matrizen mit allen nicht-negativen Elementen, (
W,H), deren Produkt die nicht-negative MatrixXannähert. Diese Faktorisierung kann beispielsweise zur Dimensionsreduktion, Quellentrennung oder Themenextraktion verwendet werden.Die Zielfunktion ist
\[ \begin{align}\begin{aligned}L(W, H) &= 0.5 * ||X - WH||_{loss}^2\\ &+ alpha\_W * l1\_ratio * n\_features * ||vec(W)||_1\\ &+ alpha\_H * l1\_ratio * n\_samples * ||vec(H)||_1\\ &+ 0.5 * alpha\_W * (1 - l1\_ratio) * n\_features * ||W||_{Fro}^2\\ &+ 0.5 * alpha\_H * (1 - l1\_ratio) * n\_samples * ||H||_{Fro}^2,\end{aligned}\end{align} \]wobei \(||A||_{Fro}^2 = \sum_{i,j} A_{ij}^2\) (Frobenius-Norm) und \(||vec(A)||_1 = \sum_{i,j} abs(A_{ij})\) (Elementweise L1-Norm) sind.
Die generische Norm \(||X - WH||_{loss}^2\) kann die Frobenius-Norm oder eine andere unterstützte Beta-Divergenz-Lossfunktion darstellen. Die Wahl zwischen den Optionen wird durch den Parameter
beta_lossgesteuert.Die Zielfunktion wird durch abwechselnde Minimierung von
WundHminimiert.Beachten Sie, dass die transformierten Daten
Wgenannt werden und die KomponentenmatrixHgenannt wird. In der NMF-Literatur ist die Namenskonvention normalerweise umgekehrt, da die DatenmatrixXtransponiert wird.Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- n_componentsint oder {‘auto’} oder None, default=’auto’
Anzahl der Komponenten. Wenn
None, werden alle Merkmale beibehalten. Wennn_components='auto', wird die Anzahl der Komponenten automatisch aus den Formen von W oder H abgeleitet.Geändert in Version 1.4: `auto`-Wert hinzugefügt.
Geändert in Version 1.6: Standardwert von
Noneauf'auto'geändert.- init{‘random’, ‘nndsvd’, ‘nndsvda’, ‘nndsvdar’, ‘custom’}, default=None
Methode zur Initialisierung des Verfahrens. Gültige Optionen
None: ‘nndsvda’, wennn_components <= min(n_samples, n_features), ansonsten zufällig.'random': Nicht-negative Zufallsmatrizen, skaliert mit:sqrt(X.mean() / n_components)'nndsvd': Nonnegative Double Singular Value Decomposition (NNDSVD) Initialisierung (besser für Sparsity).'nndsvda': NNDSVD mit Nullen, gefüllt mit dem Durchschnitt von X (besser, wenn Sparsity nicht erwünscht ist).'nndsvdar': NNDSVD mit Nullen, gefüllt mit kleinen Zufallswerten (allgemein schneller, weniger genaue Alternative zu NNDSVDa, wenn Sparsity nicht erwünscht ist).'custom': Verwenden Sie benutzerdefinierte MatrizenWundH, die beide bereitgestellt werden müssen.
- batch_sizeint, default=1024
Anzahl der Samples in jedem Mini-Batch. Große Batch-Größen führen zu einer besseren langfristigen Konvergenz auf Kosten eines langsameren Starts.
- beta_lossfloat oder {‘frobenius’, ‘kullback-leibler’, ‘itakura-saito’}, default=’frobenius’
Zu minimierende Beta-Divergenz, die den Abstand zwischen
Xund dem SkalarproduktWHmisst. Beachten Sie, dass Werte ungleich ‘frobenius’ (oder 2) und ‘kullback-leibler’ (oder 1) zu signifikant langsameren Fits führen. Beachten Sie, dass fürbeta_loss <= 0(oder ‘itakura-saito’) die EingabematrixXkeine Nullen enthalten darf.- tolfloat, Standard=1e-4
Steuert das frühe Anhalten basierend auf der Norm der Unterschiede in
Hzwischen 2 Schritten. Um das frühe Anhalten basierend auf Änderungen inHzu deaktivieren, setzen Sietolauf 0.0.- max_no_improvementint, default=10
Steuert das frühe Anhalten basierend auf der aufeinanderfolgenden Anzahl von Mini-Batches, die keine Verbesserung der geglätteten Kostenfunktion ergeben. Um die Konvergenzerkennung basierend auf der Kostenfunktion zu deaktivieren, setzen Sie
max_no_improvementauf None.- max_iterint, Standard=200
Maximale Anzahl von Iterationen über den gesamten Datensatz, bevor die Zeit abläuft.
- alpha_Wfloat, default=0.0
Konstante, die die Regularisierungsterme von
Wmultipliziert. Setzen Sie sie auf Null (Standardwert), um keine Regularisierung beiWzu haben.- alpha_Hfloat oder “same”, default=”same”
Konstante, die die Regularisierungsterme von
Hmultipliziert. Setzen Sie sie auf Null, um keine Regularisierung beiHzu haben. Wenn “same” (Standardwert), nimmt sie denselben Wert wiealpha_Wan.- l1_ratiofloat, default=0.0
Der Regularisierungs-Mixing-Parameter, mit 0 <= l1_ratio <= 1. Für l1_ratio = 0 ist die Strafe eine elementweise L2-Strafe (auch Frobenius-Norm genannt). Für l1_ratio = 1 ist es eine elementweise L1-Strafe. Für 0 < l1_ratio < 1 ist die Strafe eine Kombination aus L1 und L2.
- forget_factorfloat, default=0.7
Betrag der Skalierung vergangener Informationen. Sein Wert könnte bei endlichen Datensätzen 1 sein. Werte < 1 werden für Online-Lernen empfohlen, da neuere Batches stärker gewichtet werden als vergangene Batches.
- fresh_restartsbool, default=False
Ob W bei jedem Schritt vollständig gelöst werden soll. Frisch gestartete Durchläufe führen wahrscheinlich zu einer besseren Lösung bei gleicher Anzahl von Iterationen, sind aber deutlich langsamer.
- fresh_restarts_max_iterint, default=30
Maximale Anzahl von Iterationen beim Lösen von W in jedem Schritt. Nur verwendet, wenn frisch gestartet wird. Diese Iterationen können frühzeitig aufgrund einer kleinen Änderung von W abgebrochen werden, gesteuert durch
tol.- transform_max_iterint, default=None
Maximale Anzahl von Iterationen beim Lösen von W während der Transformation. Wenn None, wird standardmäßig
max_iterverwendet.- random_stateint, RandomState-Instanz oder None, default=None
Wird für die Initialisierung (wenn
init== ‘nndsvdar’ oder ‘random’) und im Coordinate Descent verwendet. Geben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg an. Siehe Glossar.- verbosebool, default=False
Ob die Ausgabe ausführlich sein soll.
- Attribute:
- components_ndarray der Form (n_components, n_features)
Faktorisierungsmatrix, manchmal auch „Wörterbuch“ genannt.
- n_components_int
Die Anzahl der Komponenten. Sie ist gleich dem Parameter
n_components, wenn dieser angegeben wurde. Andernfalls ist sie gleich der Anzahl der Merkmale.- reconstruction_err_float
Frobenius-Norm der Matrixdifferenz oder Beta-Divergenz zwischen den Trainingsdaten
Xund den rekonstruierten DatenWHaus dem angepassten Modell.- n_iter_int
Tatsächliche Anzahl der gestarteten Iterationen über den gesamten Datensatz.
- n_steps_int
Anzahl der verarbeiteten Mini-Batches.
- n_features_in_int
Anzahl der während des fits gesehenen Merkmale.
- feature_names_in_ndarray mit Form (
n_features_in_,) Namen der während fit gesehenen Merkmale. Nur definiert, wenn
XMerkmalnamen hat, die alle Zeichenketten sind.
Siehe auch
NMFNicht-negative Matrixfaktorisierung.
MiniBatchDictionaryLearningFindet ein Wörterbuch, das Daten mithilfe eines sparsamen Codes am besten darstellen kann.
Referenzen
[1]„Fast local algorithms for large scale nonnegative matrix and tensor factorizations“ Cichocki, Andrzej, und P. H. A. N. Anh-Huy. IEICE transactions on fundamentals of electronics, communications and computer sciences 92.3: 708-721, 2009.
[2]„Algorithms for nonnegative matrix factorization with the beta-divergence“ Fevotte, C., & Idier, J. (2011). Neural Computation, 23(9).
[3]„Online algorithms for nonnegative matrix factorization with the Itakura-Saito divergence“ Lefevre, A., Bach, F., Fevotte, C. (2011). WASPA.
Beispiele
>>> import numpy as np >>> X = np.array([[1, 1], [2, 1], [3, 1.2], [4, 1], [5, 0.8], [6, 1]]) >>> from sklearn.decomposition import MiniBatchNMF >>> model = MiniBatchNMF(n_components=2, init='random', random_state=0) >>> W = model.fit_transform(X) >>> H = model.components_
- fit(X, y=None, **params)[source]#
Lernt ein NMF-Modell für die Daten X.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Trainingsvektor, wobei
n_samplesdie Anzahl der Stichproben undn_featuresdie Anzahl der Merkmale ist.- yIgnoriert
Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.
- **paramskwargs
Parameter (Stichwortargumente) und Werte, die an die fit_transform-Instanz übergeben werden.
- Gibt zurück:
- selfobject
Gibt die Instanz selbst zurück.
- fit_transform(X, y=None, W=None, H=None)[source]#
Lernt ein NMF-Modell für die Daten X und gibt die transformierten Daten zurück.
Dies ist effizienter als fit gefolgt von transform aufzurufen.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Datenmatrix, die faktorisiert werden soll.
- yIgnoriert
Nicht verwendet, hier zur API-Konsistenz durch Konvention vorhanden.
- Warray-like von Form (n_samples, n_components), default=None
Wenn
init='custom', wird es als Anfangsschätzung für die Lösung verwendet. WennNone, wird die ininitangegebene Initialisierungsmethode verwendet.- Harray-like von Form (n_components, n_features), default=None
Wenn
init='custom', wird es als Anfangsschätzung für die Lösung verwendet. WennNone, wird die ininitangegebene Initialisierungsmethode verwendet.
- Gibt zurück:
- Wndarray von Form (n_samples, n_components)
Transformierte Daten.
- 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
fitgesehenen 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.
Hinzugefügt in Version 0.18.
- Parameter:
- X{ndarray, sparse matrix} von Form (n_samples, n_components)
Transformierte Datenmatrix.
- Gibt zurück:
- X_originalndarray von der Form (n_samples, n_features)
Gibt eine Datenmatrix der ursprünglichen Form zurück.
- partial_fit(X, y=None, W=None, H=None)[source]#
Aktualisiert das Modell mit den Daten in
Xals Mini-Batch.Diese Methode wird voraussichtlich mehrmals hintereinander auf verschiedenen Teilen eines Datensatzes aufgerufen, um Out-of-Core- oder Online-Lernen zu implementieren.
Dies ist besonders nützlich, wenn der gesamte Datensatz zu groß ist, um auf einmal in den Speicher zu passen (siehe Strategien zur Skalierung von Berechnungen: größere Daten).
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Datenmatrix, die faktorisiert werden soll.
- yIgnoriert
Nicht verwendet, hier zur API-Konsistenz durch Konvention vorhanden.
- Warray-like von Form (n_samples, n_components), default=None
Wenn
init='custom', wird es als Anfangsschätzung für die Lösung verwendet. Nur beim ersten Aufruf vonpartial_fitverwendet.- Harray-like von Form (n_components, n_features), default=None
Wenn
init='custom', wird es als Anfangsschätzung für die Lösung verwendet. Nur beim ersten Aufruf vonpartial_fitverwendet.
- Gibt zurück:
- self
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
transformundfit_transform."default": Standardausgabeformat eines Transformers"pandas": DataFrame-Ausgabe"polars": Polars-AusgabeNone: 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.
- set_partial_fit_request(*, H: bool | None | str = '$UNCHANGED$', W: bool | None | str = '$UNCHANGED$') MiniBatchNMF[source]#
Konfiguriert, ob Metadaten für die
partial_fit-Methode angefordert werden sollen.Beachten Sie, dass diese Methode nur relevant ist, wenn dieser Schätzer als Unter-Schätzer innerhalb eines Meta-Schätzers verwendet wird und Metadaten-Routing mit
enable_metadata_routing=Trueaktiviert ist (siehesklearn.set_config). Bitte lesen Sie das Benutzerhandbuch, um zu erfahren, wie der Routing-Mechanismus funktioniert.Die Optionen für jeden Parameter sind
True: Metadaten werden angefordert und anpartial_fitübergeben, wenn sie bereitgestellt werden. Die Anforderung wird ignoriert, wenn keine Metadaten bereitgestellt werden.False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht anpartial_fit.None: Metadaten werden nicht angefordert und der Meta-Schätzer löst einen Fehler aus, wenn der Benutzer sie bereitstellt.str: Metadaten sollten mit diesem Alias an den Meta-Schätzer übergeben werden und nicht mit dem ursprünglichen Namen.
Der Standardwert (
sklearn.utils.metadata_routing.UNCHANGED) behält die bestehende Anforderung bei. Dies ermöglicht es Ihnen, die Anforderung für einige Parameter zu ändern und für andere nicht.Hinzugefügt in Version 1.3.
- Parameter:
- Hstr, True, False, oder None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadaten-Routing für den Parameter
Hinpartial_fit.- Wstr, True, False, oder None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadaten-Routing für den Parameter
Winpartial_fit.
- Gibt zurück:
- selfobject
Das aktualisierte Objekt.
Galeriebeispiele#
Themenextraktion mit Non-negative Matrix Factorization und Latent Dirichlet Allocation