Pomegranate: Frage: Sampling aus bedingter Wahrscheinlichkeit

Erstellt am 28. Feb. 2016  ·  18Kommentare  ·  Quelle: jmschrei/pomegranate

Hallo,
Ich weiß nicht, ob dies der richtige Ort ist, um dies zu fragen, bitte sagen Sie mir, wenn dies nicht der Fall ist.
Für meine Masterarbeit möchte ich bedingte Wahrscheinlichkeiten mehrerer Zufallsvariablen schätzen, die sowohl diskret als auch stetig sein können (Mischung aus stetigen und diskreten Variablen). Ich denke, dies könnte mit Granatapfel erreicht werden, indem die Dichte dieser Mischung und der gemeinsamen Verteilung der Beweisvariablen geschätzt wird. Das Ergebnis wäre ein Bruchteil von 2 Verteilungen, aber keine geschlossene Verteilung. Um eine Stichprobe aus der bedingten Verteilung zu erstellen, müsste ich daher auf eine Ablehnungsstichprobe (oder eine optimierte MCMC-Methode) zurückgreifen. Ist das richtig?

Hilfreichster Kommentar

@jmschrei : Klar! Die Methode sample() wäre großartig oder eine Möglichkeit, das Granatapfelmodell nach PyMC zu migrieren, damit dort das Sampling durchgeführt werden kann. :)

Alle 18 Kommentare

Granatapfel unterstützt derzeit leider keine bedingten Verteilungen, die von kontinuierlichen Verteilungen abhängig sind. Es ist jedoch etwas, das ich bald hinzufügen möchte. Die Idee klingt aber plausibel. Sie könnten PyMC in Betracht ziehen, das in diesem Bereich umfassender ist.

Dann, wenn ich darf, ein Vorschlag. PyMC unterstützt auch Verteilungsmischungen, HMM usw. Es gibt jedoch keine Factory-Methoden, um sie zu erstellen. Es wäre toll, wenn sich Granatapfel (der eine sehr klare Schnittstelle hat) in die (optimierten) Sampling-Methoden von PyMC integrieren könnte. Vielleicht durch die Umwandlung eines Granatapfelmodells in ein PyMC-Modell.

Das scheint eine vernünftige Idee zu sein. Wenn ich jedoch Zeit hätte, das einzurichten, hätte ich auch die Zeit, es in Granatapfel umzusetzen. Ich werde heute tatsächlich etwas Zeit haben, um an diesen Themen zu arbeiten. Wenn Sie ein Beispiel-Code-Snippet bereitstellen können, das Sie gerne sehen würden, kann ich sehen, ob ich es bald implementieren kann.

Ich habe Granatapfel noch nicht verwendet, ich bin in der Phase, die vollständigste Bibliothek für mein Problem zu durchsuchen. Aber mit bedingten Verteilungen hätte ich alles. Was ich habe, ist mein aktueller Code, in dem ich genau das tue, was ich in meinem ersten Beitrag erwähnt habe, aber nur eine Mischung von Gaussianern (für die eine Ableitung in geschlossener Form existiert).

edit: Ich zeige einen Ausschnitt, wie ich es jetzt mit sklearn GMM verwende

weighted_fit ist eine erweiterte Version von sklearns fit(), die gewichtete Daten verarbeitet

gmm.weighted_fit(data,weight_data)

meine Daten sind 3-dimensionale kontinuierliche Vektoren [X,Y,Z]

z=1,2

P(X=nan,X=nan | p=Z)

(con_mean, con_cov, con_weights) = Utility.cond_dist_gmm(np.array([np.nan,np.nan,z]), gmm.means_, gmm._get_covars(), gmm.weights_)

Illustrativer Pseudocode für das, was ich hinzufügen muss. Grundsätzlich, wenn Sie so etwas haben:

a = NormalDistribution( 5, 2 )
b = ConditionalGaussianDistribution( w=[5], w0=2, sigma=2 )

Das würde eine Elternverteilung spezifizieren, die eine Normalverteilung ist, und eine bedingte Normalverteilung, die um eine lineare Regression der Elternteile zentriert ist. Was auch immer für Sie am bequemsten wäre.

Ich bin mir nicht sicher, was Sie fragen. GMMs werden in Granatapfel implementiert (und ich denke schneller als sklearn). Suchen Sie bedingte Gaußsche Mischungsmodelle?

Bedingte GMMs habe ich.
Ich formuliere es anders, gegebene Daten mit diskreten und kontinuierlichen Variablen, zB d=[c1,c2,d1,d2].
Das möchte ich gerne können:

k-Komponenten-Mischungsmodell, um die kontinuierlichen Daten [d1,d2] zu modellieren, ist die Multivariate zweidimensional, um den Vektor [d1,d2] zu modellieren

gmm=MixtureDistribution(MultivariateGaussianDistribution1, MultivariateGaussianDistribution2, ..., MultivariateGaussianDistributionk)

diskrete Verteilung

cat1=Diskrete Verteilung([(0,0.1),(1,0.3),(2,0.6)])
cat2=Diskrete Verteilung([(0,0.6),(1,0.4)])

neues Modell definiert die Join-Verteilung von kontinuierlichen und diskreten Daten -> p(d)

Ich glaube nicht, dass das beim Granatapfel noch möglich ist

Ich denke, deshalb war vielleicht nicht ganz klar, was ich vorhatte, ich habe eine gemischte Verteilungsmischung mit einer gemischten gemeinsamen Verteilung...

siehe Gemeinsame Verteilung der "gemischte Fall" unten auf der Seite für die mathematische Formulierung

d_model=JointDistribution( gmm,cat1,cat2)

Anpassen der Modellparameter an Daten

d_model.from_sample(Daten)

Da ich nun (ungefähr) die gemeinsame Wahrscheinlichkeit kenne, möchte ich zum Beispiel die gemeinsame Wahrscheinlichkeit von [c1,c2] wissen, wenn d1=1 und d2=0

cond_d = ConditionalDistr(d_model,[np.nan,np.nan,1,0] )

Tut mir leid, ich verstehe immer noch nicht ganz, was du meinst. Wollen Sie, dass a eine bedingte Verteilung definieren kann, die sowohl kontinuierliche als auch diskrete Eltern hat? Grundsätzlich ein Bayes-Netzwerk mit diskreten und kontinuierlichen Variablen darin?

Ja, das wäre es denke ich. Aber ich habe noch etwas recherchiert und werde jede Form von Sampling-Methoden zugunsten von EM vermeiden. Auch wenn dies die Aussagekraft meines Modells mindert. Wenn Sie also ein bedingtes Gaußsches Mischungsmodell implementieren würden (meine eigene Implementierung funktioniert nicht richtig), wäre dies sehr willkommen. Ich kann das verwendete Papier zur Verfügung stellen, aber Sie haben wahrscheinlich alle Ressourcen, die Sie benötigen.

Sicher, ich würde mir gerne die Zeitung ansehen, um sicherzugehen, dass wir auf der gleichen Seite sind.

Ich habe 2 Ansätze gefunden:
Die, die ich ausprobiert habe: Anhang A in Gaussian Processes for Machine Learning
oder Kapitel 2 in Conditional Gaussian Mixture Models für Umweltrisikokartierung

Haben Sie Fortschritte bei der bedingten Verteilung gemacht?

Ich hatte noch nicht viel Zeit, mich so intensiv mit diesem Thema zu befassen, in dieser Woche sind Besuchstage für Studieninteressierte. Ich werde auf dieses Thema bald zurückkommen.

Das ist mir völlig entgangen, tut mir leid! Wenn ich bald daran arbeiten würde, wäre es für Sie von Nutzen oder haben Sie Ihre Abschlussarbeit abgeschlossen?

Kein Problem.
Und danke, dass Sie sich bei mir melden, aber meine Diplomarbeit ist fertig.
Viel Glück mit Ihrer Bibliothek.

Am 01.09.2016 um 04:21 Uhr schrieb Jacob Schreiber [email protected] :

Das ist mir völlig entgangen, tut mir leid! Wenn ich bald daran arbeiten würde, wäre es für Sie von Nutzen oder haben Sie Ihre Abschlussarbeit abgeschlossen?


Sie erhalten dies, weil Sie den Thread verfasst haben.
Antworten Sie direkt auf diese E-Mail, zeigen Sie sie auf GitHub https://github.com/jmschrei/pomegranate/issues/86#issuecomment -243958007 an oder schalten Sie den Thread stumm https://github.com/notifications/unsubscribe-auth/AG5qEFMbUPk0uoKA4JTxdt8CaxTfPX29JxpZMwoH4

Lieber @jmschrei wie ist dein Vorgehen zu diesem Thema? Wäre auch sehr interessiert. Danke!

Hallo @jaSunny. Können Sie genau beschreiben, was Sie umgesetzt haben möchten?

@jmschrei : Klar! Die Methode sample() wäre großartig oder eine Möglichkeit, das Granatapfelmodell nach PyMC zu migrieren, damit dort das Sampling durchgeführt werden kann. :)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen