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 Matrix X annä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_loss gesteuert.

Die Zielfunktion wird durch abwechselnde Minimierung von W und H minimiert.

Beachten Sie, dass die transformierten Daten W genannt werden und die Komponentenmatrix H genannt wird. In der NMF-Literatur ist die Namenskonvention normalerweise umgekehrt, da die Datenmatrix X transponiert wird.

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
n_componentsint oder {‘auto’} oder None, default=’auto’

Anzahl der Komponenten. Wenn None, werden alle Merkmale beibehalten. Wenn n_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 None auf 'auto' geändert.

init{‘random’, ‘nndsvd’, ‘nndsvda’, ‘nndsvdar’, ‘custom’}, default=None

Methode zur Initialisierung des Verfahrens. Gültige Optionen

  • None: ‘nndsvda’, wenn n_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 Matrizen W und H, 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 X und dem Skalarprodukt WH misst. Beachten Sie, dass Werte ungleich ‘frobenius’ (oder 2) und ‘kullback-leibler’ (oder 1) zu signifikant langsameren Fits führen. Beachten Sie, dass für beta_loss <= 0 (oder ‘itakura-saito’) die Eingabematrix X keine Nullen enthalten darf.

tolfloat, Standard=1e-4

Steuert das frühe Anhalten basierend auf der Norm der Unterschiede in H zwischen 2 Schritten. Um das frühe Anhalten basierend auf Änderungen in H zu deaktivieren, setzen Sie tol auf 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_improvement auf 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 W multipliziert. Setzen Sie sie auf Null (Standardwert), um keine Regularisierung bei W zu haben.

alpha_Hfloat oder “same”, default=”same”

Konstante, die die Regularisierungsterme von H multipliziert. Setzen Sie sie auf Null, um keine Regularisierung bei H zu haben. Wenn “same” (Standardwert), nimmt sie denselben Wert wie alpha_W an.

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_iter verwendet.

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 X und den rekonstruierten Daten WH aus 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 X Merkmalnamen hat, die alle Zeichenketten sind.

Siehe auch

NMF

Nicht-negative Matrixfaktorisierung.

MiniBatchDictionaryLearning

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

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_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.

**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. Wenn None, wird die in init angegebene 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. Wenn None, wird die in init angegebene 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 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.

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 X als 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 von partial_fit 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. Nur beim ersten Aufruf von partial_fit verwendet.

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

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=True aktiviert ist (siehe sklearn.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 an partial_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 an partial_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 H in partial_fit.

Wstr, True, False, oder None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadaten-Routing für den Parameter W in partial_fit.

Gibt zurück:
selfobject

Das aktualisierte Objekt.

transform(X)[source]#

Transformiert die Daten X gemäß dem angepassten MiniBatchNMF-Modell.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Datenmatrix, die vom Modell transformiert werden soll.

Gibt zurück:
Wndarray von Form (n_samples, n_components)

Transformierte Daten.