2.1. Gaußsche Mischmodelle#
sklearn.mixture ist ein Paket, das das Lernen von Gaußschen Mischmodellen (mit Diagonal-, sphärischen, gebundenen und vollen Kovarianzmatrizen) ermöglicht, sie zu stichprobenartig zu ziehen und aus Daten zu schätzen. Einrichtungen zur Bestimmung der geeigneten Anzahl von Komponenten werden ebenfalls bereitgestellt.
Zwei-Komponenten Gaußsches Mischmodell: Datenpunkte und Gleichwahrscheinlichkeitsflächen des Modells.#
Ein Gaußsches Mischmodell ist ein probabilistisches Modell, das davon ausgeht, dass alle Datenpunkte aus einer Mischung einer endlichen Anzahl von Gaußschen Verteilungen mit unbekannten Parametern generiert wurden. Man kann sich Mischmodelle als eine Verallgemeinerung des k-means-Clustering vorstellen, um Informationen über die Kovarianzstruktur der Daten sowie die Zentren der latenten Gaußschen zu integrieren.
Scikit-learn implementiert verschiedene Klassen zur Schätzung von Gaußschen Mischmodellen, die verschiedenen Schätzstrategien entsprechen, wie unten beschrieben.
2.1.1. Gaußsches Mischmodell#
Das Objekt GaussianMixture implementiert den Erwartungsmaximierungs-(EM)-Algorithmus zum Anpassen von Gaußschen Mischmodellen. Es kann auch Konfidenzellipsoide für multivariate Modelle zeichnen und das Bayes'sche Informationskriterium berechnen, um die Anzahl der Cluster in den Daten zu bewerten. Eine Methode GaussianMixture.fit wird bereitgestellt, die ein Gaußsches Mischmodell aus Trainingsdaten lernt. Gegebenen Testdaten kann sie jedem Sample die Gaußsche zuweisen, zu der es am wahrscheinlichsten gehört, mit der Methode GaussianMixture.predict.
Das GaussianMixture bietet verschiedene Optionen zur Einschränkung der Kovarianz der geschätzten verschiedenen Klassen: sphärische, diagonale, gebundene oder volle Kovarianz.
Beispiele
Siehe GMM-Kovarianzen für ein Beispiel zur Verwendung des Gaußschen Mischmodells als Clustering auf dem Iris-Datensatz.
Siehe Dichteschätzung für ein Gaußsches Mischmodell für ein Beispiel zum Plotten der Dichteschätzung.
Vor- und Nachteile der Klasse GaussianMixture#
Vorteile
- Geschwindigkeit:
Es ist der schnellste Algorithmus zum Erlernen von Mischmodellen
- Agnostisch:
Da dieser Algorithmus nur die Likelihood maximiert, wird er die Mittelwerte nicht gegen Null voreingenommen, noch die Clustergrößen so voreingenommen, dass sie spezifische Strukturen aufweisen, die möglicherweise zutreffen oder auch nicht.
Nachteile
- Singularitäten:
Wenn pro Mischung nicht genügend Punkte vorhanden sind, wird die Schätzung der Kovarianzmatrizen schwierig, und der Algorithmus ist dafür bekannt, zu divergieren und Lösungen mit unendlicher Likelihood zu finden, es sei denn, man regularisiert die Kovarianzen künstlich.
- Anzahl der Komponenten:
Dieser Algorithmus verwendet immer alle Komponenten, auf die er Zugriff hat, und benötigt zurückgehaltene Daten oder informationstheoretische Kriterien, um zu entscheiden, wie viele Komponenten in Abwesenheit externer Hinweise verwendet werden sollen.
Auswahl der Anzahl von Komponenten in einem klassischen Gaußschen Mischmodell#
Das BIC-Kriterium kann verwendet werden, um die Anzahl der Komponenten in einem Gaußschen Mischmodell effizient auszuwählen. Theoretisch wird die wahre Anzahl der Komponenten nur im asymptotischen Bereich (d.h. wenn viel Daten verfügbar sind und angenommen wird, dass die Daten tatsächlich i.i.d. aus einer Mischung von Gaußschen Verteilungen generiert wurden) wiederhergestellt. Beachten Sie, dass die Verwendung eines Variational Bayesian Gaußschen Mischmodells die Angabe der Anzahl der Komponenten für ein Gaußsches Mischmodell vermeidet.
Beispiele
Siehe Modellauswahl für Gaußsche Mischmodelle für ein Beispiel zur Modellauswahl mit einem klassischen Gaußschen Mischmodell.
Schätzalgorithmus Erwartungsmaximierung#
Die Hauptherausforderung beim Erlernen von Gaußschen Mischmodellen aus unbeschrifteten Daten besteht darin, dass man normalerweise nicht weiß, welche Punkte von welcher latenten Komponente stammen (wenn man Zugang zu dieser Information hat, wird es sehr einfach, eine separate Gaußsche Verteilung an jeden Punkt-Set anzupassen). Erwartungsmaximierung ist ein fundierter statistischer Algorithmus, um dieses Problem durch einen iterativen Prozess zu lösen. Zuerst nimmt man zufällige Komponenten an (zufällig auf Datenpunkte zentriert, aus k-means gelernt oder sogar einfach normal um den Ursprung verteilt) und berechnet für jeden Punkt eine Wahrscheinlichkeit, von jeder Komponente des Modells generiert zu werden. Dann passt man die Parameter an, um die Likelihood der Daten gegeben diese Zuweisungen zu maximieren. Die Wiederholung dieses Prozesses garantiert immer die Konvergenz zu einem lokalen Optimum.
Auswahl der Initialisierungsmethode#
Es gibt die Wahl zwischen vier Initialisierungsmethoden (sowie die Eingabe von benutzerspezifischen Initialmittelwerten), um die anfänglichen Zentren für die Modellkomponenten zu generieren
- k-means (Standard)
Dies wendet einen traditionellen k-means-Clustering-Algorithmus an. Dies kann im Vergleich zu anderen Initialisierungsmethoden rechenintensiv sein.
- k-means++
Dies verwendet die Initialisierungsmethode des k-means-Clustering: k-means++. Dies wählt das erste Zentrum zufällig aus den Daten aus. Nachfolgende Zentren werden aus einer gewichteten Verteilung der Daten ausgewählt, die Punkte bevorzugt, die weiter von bestehenden Zentren entfernt sind. k-means++ ist die Standardinitialisierung für k-means und daher schneller als die Ausführung eines vollständigen k-means, kann aber immer noch eine erhebliche Zeit für große Datensätze mit vielen Komponenten in Anspruch nehmen.
- random_from_data
Dies wählt zufällige Datenpunkte aus den Eingabedaten als anfängliche Zentren aus. Dies ist eine sehr schnelle Initialisierungsmethode, kann aber zu nicht-konvergierenden Ergebnissen führen, wenn die ausgewählten Punkte zu nahe beieinander liegen.
- random
Zentren werden als kleine Perturbation vom Mittelwert aller Daten ausgewählt. Diese Methode ist einfach, kann aber dazu führen, dass das Modell länger zur Konvergenz braucht.
Beispiele
Siehe Initialisierungsmethoden für GMM für ein Beispiel zur Verwendung verschiedener Initialisierungen in Gaußschen Mischmodellen.
2.1.2. Variational Bayesian Gaußsches Mischmodell#
Das Objekt BayesianGaussianMixture implementiert eine Variante des Gaußschen Mischmodells mit Variationsinferenzalgorithmen. Die API ist ähnlich der, die von GaussianMixture definiert wird.
Schätzalgorithmus: Variationsinferenz
Variationsinferenz ist eine Erweiterung der Erwartungsmaximierung, die eine untere Schranke der Modellbeweiskraft (einschließlich Priors) maximiert, anstatt der Datenwahrscheinlichkeit. Das Prinzip hinter Variationsmethoden ist dasselbe wie bei der Erwartungsmaximierung (d.h. beides sind iterative Algorithmen, die zwischen der Ermittlung der Wahrscheinlichkeiten für jeden Punkt, von jeder Mischung generiert zu werden, und der Anpassung der Mischung an diese zugewiesenen Punkte wechseln), aber Variationsmethoden fügen Regularisierung hinzu, indem Informationen aus Prior-Verteilungen integriert werden. Dies vermeidet die Singularitäten, die oft in den Lösungen der Erwartungsmaximierung auftreten, führt aber zu einigen subtilen Verzerrungen des Modells. Die Inferenz ist oft merklich langsamer, aber in der Regel nicht so langsam, dass ihre Anwendung unpraktikabel wäre.
Aufgrund ihrer bayesschen Natur benötigt der Variationsalgorithmus mehr Hyperparameter als die Erwartungsmaximierung, wobei der wichtigste davon der Konzentrationsparameter weight_concentration_prior ist. Die Angabe eines niedrigen Wertes für den Konzentrationsprior führt dazu, dass das Modell den größten Teil des Gewichts auf wenige Komponenten legt und die Gewichte der übrigen Komponenten sehr nahe an Null setzt. Hohe Werte für den Konzentrationsprior erlauben einer größeren Anzahl von Komponenten, in der Mischung aktiv zu sein.
Die Parameterimplementierung der Klasse BayesianGaussianMixture bietet zwei Arten von Prior für die Gewichtsverteilung: ein endliches Mischmodell mit Dirichlet-Verteilung und ein unendliches Mischmodell mit dem Dirichlet-Prozess. In der Praxis wird der Dirichlet-Prozess-Inferenzalgorithmus approximiert und verwendet eine truncierte Verteilung mit einer festen maximalen Anzahl von Komponenten (genannt Stick-breaking-Repräsentation). Die tatsächlich verwendete Anzahl von Komponenten hängt fast immer von den Daten ab.
Die folgende Abbildung vergleicht die Ergebnisse für die verschiedenen Arten des Gewichtskonzentrationspriors (Parameter weight_concentration_prior_type) für verschiedene Werte von weight_concentration_prior. Hier sehen wir, dass der Wert des Parameters weight_concentration_prior einen starken Einfluss auf die effektive Anzahl aktiver Komponenten hat. Wir können auch feststellen, dass große Werte für den Konzentrationsgewichtsprior zu gleichmäßigeren Gewichten führen, wenn der Prior-Typ 'dirichlet_distribution' ist, während dies nicht unbedingt für den Typ 'dirichlet_process' (Standard) gilt.
Die folgenden Beispiele vergleichen Gaußsche Mischmodelle mit einer festen Anzahl von Komponenten mit den Variations-Gaußschen Mischmodellen mit einem Dirichlet-Prozess-Prior. Hier wird ein klassisches Gaußsches Mischmodell mit 5 Komponenten auf einem Datensatz, der aus 2 Clustern besteht, angepasst. Wir sehen, dass das Variations-Gaußsche Mischmodell mit einem Dirichlet-Prozess-Prior in der Lage ist, sich auf nur 2 Komponenten zu beschränken, während das Gaußsche Mischmodell die Daten mit einer festen Anzahl von Komponenten anpasst, die vom Benutzer a priori festgelegt werden muss. In diesem Fall hat der Benutzer n_components=5 gewählt, was nicht mit der wahren generativen Verteilung dieses Spiel-Datensatzes übereinstimmt. Beachten Sie, dass bei sehr wenigen Beobachtungen das Variations-Gaußsche Mischmodell mit einem Dirichlet-Prozess-Prior einen konservativen Standpunkt einnehmen und nur eine Komponente anpassen kann.
Auf der folgenden Abbildung passen wir einen Datensatz an, der nicht gut durch ein Gaußsches Mischmodell dargestellt wird. Die Anpassung des Parameters weight_concentration_prior des BayesianGaussianMixture steuert die Anzahl der Komponenten, die zur Anpassung dieser Daten verwendet werden. Wir präsentieren auch auf den letzten beiden Plots eine zufällige Stichprobe, die aus den beiden resultierenden Mischungen generiert wurde.
Beispiele
Siehe Konfidenzellipsoide für Gaußsche Mischmodelle für ein Beispiel zum Plotten der Konfidenzellipsoide für sowohl
GaussianMixtureals auchBayesianGaussianMixture.Sinusförmige Kurve mit Gaußschem Mischmodell zeigt die Verwendung von
GaussianMixtureundBayesianGaussianMixturezur Anpassung einer Sinuswelle.Siehe Analyse des Konzentrationspriors für Variational Bayesian Gaussian Mixture für ein Beispiel, das die Konfidenzellipsoide für das
BayesianGaussianMixturemit unterschiedlichenweight_concentration_prior_typefür verschiedene Werte des Parametersweight_concentration_priorplottet.
Vor- und Nachteile der Variationsinferenz mit BayesianGaussianMixture#
Vorteile
- Automatische Auswahl:
Wenn
weight_concentration_priorklein genug ist undn_componentsgrößer ist als vom Modell als notwendig erachtet, neigt das Variational Bayesian Mischmodell dazu, einige Mischgewichtswerte nahe Null zu setzen. Dies ermöglicht es dem Modell, automatisch eine geeignete Anzahl effektiver Komponenten zu wählen. Nur eine Obergrenze dieser Anzahl muss angegeben werden. Beachten Sie jedoch, dass die "ideale" Anzahl aktiver Komponenten sehr anwendungsabhängig ist und in einer Datenexploration typischerweise schlecht definiert ist.- Weniger Empfindlichkeit gegenüber der Anzahl der Parameter:
Im Gegensatz zu endlichen Modellen, die fast immer alle Komponenten so weit wie möglich verwenden und daher bei unterschiedlichen Anzahlen von Komponenten wild unterschiedliche Lösungen liefern, ändert sich die Variationsinferenz mit einem Dirichlet-Prozess-Prior (
weight_concentration_prior_type='dirichlet_process') bei Änderungen der Parameter nicht wesentlich, was zu mehr Stabilität und weniger Abstimmung führt.- Regularisierung:
Aufgrund der Einbeziehung von Vorabinformationen haben Variationen Lösungen weniger pathologische Sonderfälle als Lösungen der Erwartungsmaximierung.
Nachteile
- Geschwindigkeit:
Die zusätzliche Parametrisierung, die für die Variationsinferenz erforderlich ist, macht die Inferenz langsamer, wenn auch nicht sehr.
- Hyperparameter:
Dieser Algorithmus benötigt einen zusätzlichen Hyperparameter, der möglicherweise experimentell mittels Kreuzvalidierung abgestimmt werden muss.
- Verzerrung:
Es gibt viele implizite Verzerrungen in den Inferenzalgorithmen (und auch im Dirichlet-Prozess, falls verwendet), und immer dann, wenn eine Diskrepanz zwischen diesen Verzerrungen und den Daten besteht, kann es möglich sein, bessere Modelle mit einer endlichen Mischung anzupassen.
2.1.2.1. Der Dirichlet-Prozess#
Hier beschreiben wir Variationsinferenzalgorithmen auf Dirichlet-Prozess-Mischungen. Der Dirichlet-Prozess ist eine Prior-Wahrscheinlichkeitsverteilung auf Clusterings mit einer unendlichen, unbeschränkten Anzahl von Partitionen. Variationstechniken ermöglichen es uns, diese Prior-Struktur auf Gaußsche Mischmodelle anzuwenden, fast ohne Einbußen bei der Inferenzzeit im Vergleich zu einem endlichen Gaußschen Mischmodell.
Eine wichtige Frage ist, wie der Dirichlet-Prozess eine unendliche, unbeschränkte Anzahl von Clustern verwenden und dennoch konsistent sein kann. Während eine vollständige Erklärung nicht in dieses Handbuch passt, kann man sich seine Stick-Breaking-Prozess-Analogie zu Hilfe nehmen, um ihn zu verstehen. Der Stick-Breaking-Prozess ist eine generative Geschichte für den Dirichlet-Prozess. Wir beginnen mit einem Stock der Länge Eins und brechen in jedem Schritt einen Teil des verbleibenden Stocks ab. Jedes Mal assoziieren wir die Länge des Stücks des Stocks mit dem Anteil der Punkte, die in eine Gruppe der Mischung fallen. Am Ende, um die unendliche Mischung darzustellen, assoziieren wir das letzte verbleibende Stück des Stocks mit dem Anteil der Punkte, die nicht in alle anderen Gruppen fallen. Die Länge jedes Stücks ist eine Zufallsvariable mit einer Wahrscheinlichkeit, die proportional zum Konzentrationsparameter ist. Kleinere Werte der Konzentration teilen die Einheit in größere Stücke des Stocks auf (definieren eine konzentriertere Verteilung). Größere Konzentrationswerte erzeugen kleinere Stücke des Stocks (erhöhen die Anzahl der Komponenten mit nicht-Null-Gewichten).
Variationsinferenztechniken für den Dirichlet-Prozess arbeiten weiterhin mit einer endlichen Annäherung an dieses unendliche Mischmodell, aber anstatt a priori festlegen zu müssen, wie viele Komponenten man verwenden möchte, gibt man nur den Konzentrationsparameter und eine Obergrenze für die Anzahl der Mischkomponenten an (diese Obergrenze, vorausgesetzt, sie ist höher als die "wahre" Anzahl der Komponenten, beeinflusst nur die algorithmische Komplexität, nicht die tatsächlich verwendeten Komponenten).

