Ich habe ein Mischungsmodell, mit dem ich den Maximum-Likelihood-Schätzer für einen gegebenen Datensatz und einen Satz teilweise beobachteter Daten finden möchte . Ich habe sowohl den E-Schritt (Berechnung der Erwartung von bei und der aktuellen Parameter ) als auch den M-Schritt implementiert , um die negative log-Wahrscheinlichkeit bei gegebenem zu minimieren .
Wie ich es verstanden habe, steigt die maximale Wahrscheinlichkeit für jede Iteration. Dies bedeutet, dass die negative Log-Wahrscheinlichkeit für jede Iteration abnehmen muss. Während ich iteriere, erzeugt der Algorithmus jedoch tatsächlich keine abnehmenden Werte der negativen Log-Wahrscheinlichkeit. Stattdessen kann es sowohl abnehmen als auch zunehmen. Zum Beispiel waren dies die Werte der negativen Log-Wahrscheinlichkeit bis zur Konvergenz:
Gibt es hier etwas, das ich missverstanden habe?
Außerdem habe ich für simulierte Daten, wenn ich die maximale Wahrscheinlichkeit für die echten latenten (nicht beobachteten) Variablen durchführe, eine nahezu perfekte Anpassung, was darauf hinweist, dass keine Programmierfehler vorliegen. Für den EM-Algorithmus konvergiert er häufig zu klar suboptimalen Lösungen, insbesondere für eine bestimmte Teilmenge der Parameter (dh die Anteile der klassifizierenden Variablen). Es ist bekannt, dass der Algorithmus zu lokalen Minima oder stationären Punkten konvergieren kann, ob es eine herkömmliche Suchheuristik gibt oder ebenfalls, um die Wahrscheinlichkeit zu erhöhen, das globale Minimum (oder Maximum) zu finden . Für dieses spezielle Problem gibt es meines Erachtens viele Fehlklassifizierungen, da aufgrund der bivariaten Mischung eine der beiden Verteilungen Werte mit der Wahrscheinlichkeit eins annimmt (es ist eine Mischung von Lebensdauern, bei denen die wahre Lebensdauer durch ermittelt wird wobei z die Zugehörigkeit zu einer der beiden Verteilungen angibt. Der Indikator z wird natürlich im Datensatz zensiert.
Ich habe eine zweite Zahl hinzugefügt, wenn ich mit der theoretischen Lösung beginne (die nahe am Optimum liegen sollte). Wie jedoch zu sehen ist, weichen die Wahrscheinlichkeit und die Parameter von dieser Lösung in eine deutlich schlechtere ab.
ist der Indikator, zu welcher Population die Beobachtung gehört (da sie bivariat ist, müssen wir nur 0 und 1 berücksichtigen).
und . Dies ergibt auch die folgende vollständige Mischungsverteilung:
und
Wir fahren fort, die allgemeine Form der Wahrscheinlichkeit zu definieren:
Jetzt wird nur teilweise beobachtet, wenn , andernfalls ist es unbekannt. Die volle Wahrscheinlichkeit wird
Dabei ist das Gewicht der entsprechenden Verteilung (möglicherweise verbunden mit einigen Kovariaten und ihren jeweiligen Koeffizienten durch eine Verknüpfungsfunktion). In der meisten Literatur wird dies auf die folgende Loglikelihood vereinfacht
Für den M-Schritt wird diese Funktion maximiert, wenn auch nicht vollständig in einer Maximierungsmethode. Stattdessen wissen wir nicht, dass dies in Teile .
Für den k: th + 1 E-Schritt müssen wir den erwarteten Wert der (teilweise) nicht beobachteten latenten Variablen . Wir verwenden die Tatsache, dass für dann .
Hier haben wir durch
was uns
(Beachten Sie hier, dass , sodass kein Ereignis beobachtet wird. wird die Wahrscheinlichkeit der Daten durch die Schwanzverteilungsfunktion angegeben.
quelle
Antworten:
Das Ziel von EM ist es, die beobachtete Datenprotokollwahrscheinlichkeit zu maximieren.
Leider ist es schwierig, dies in Bezug auf zu optimieren . Stattdessen bildet und maximiert EM wiederholt die Hilfsfunktionθ
Wenn maximiert , garantiert EM diesθt+1 Q(θ,θt)
Wenn Sie genau wissen möchten, warum dies der Fall ist, finden Sie in Abschnitt 11.4.7 von Murphys maschinelles Lernen: Eine probabilistische Perspektive eine gute Erklärung. Wenn Ihre Implementierung diese Ungleichheiten nicht erfüllt, haben Sie irgendwo einen Fehler gemacht. Dinge sagen wie
ist gefährlich. Mit vielen Optimierungs- und Lernalgorithmen ist es sehr einfach, Fehler zu machen und dennoch die meiste Zeit richtig aussehende Antworten zu erhalten. Eine Intuition, die ich mag, ist, dass diese Algorithmen für unordentliche Daten gedacht sind. Es ist also nicht verwunderlich, dass sie auch gut mit Fehlern umgehen können!
Weiter zur anderen Hälfte Ihrer Frage:
Zufällige Neustarts sind der einfachste Ansatz. Am einfachsten ist wahrscheinlich das simulierte Tempern über die Anfangsparameter. Ich habe auch von einer EM-Variante namens deterministisches Tempern gehört , aber ich habe sie nicht persönlich verwendet, kann Ihnen also nicht viel darüber erzählen.
quelle