Ich muss einige Rückschlüsse auf ein Bayes-Netzwerk vornehmen, wie das Beispiel, das ich unten erstellt habe. Inferenz in einem Bayes-Netzwerk
Ich habe versucht, etwas wie so etwas zu tun, um eine Inferenz wie P zu lösen (F | A = True, B = True). Mein erster Ansatz war so etwas wie
For every possible output of F
For every state of each observed variable (A,B)
For every unobserved variable (C, D, E, G)
// Calculate Probability
zu tun, aber ich glaube nicht, das wird funktionieren, weil wir tatsächlich benötigen, um viele Variablen auf einmal durchgehen, nicht jeder zu einer Zeit.
Ich habe über Pearls-Algorithmus für die Weitergabe von Nachrichten gehört, bin aber noch eine angemessene Beschreibung zu finden, die nicht extrem dicht ist. Für zusätzliche Informationen sind diese Bayes-Netzwerke so eingeschränkt, dass sie nicht mehr als 15-20 Knoten haben, und wir haben alle bedingten Wahrscheinlichkeitstabellen, der Code muss nicht wirklich schnell oder effizient sein.
Grundsätzlich suche ich nach einem Weg, dies zu tun, nicht unbedingt der beste Weg, dies zu tun.
Ist Ihr Graph nur ein Beispiel oder werden alle Top-Variablen beobachtet? –
Pearls Message-Passing-Algorithmus gilt nur für Netzwerke ohne Schleifen. Es gibt exakte Algorithmen für loopyy Netze von diskreten und Gaußschen Variablen, aber sie sind nicht einfach. Mein Rat ist, eine Software zu finden, die die Berechnungen durchführt. Sie müssen lediglich die Netzwerkbeschreibung (Variablen, Verbindungen und Wahrscheinlichkeitstabellen) eingeben und die Abfragen ausführen. Dazu gibt es sowohl kommerzielle als auch nichtkommerzielle Software; Entschuldigung, ich habe keine Empfehlung. –
das Diagramm war nur ein Beispiel, die oberen Variablen werden nicht immer genau beobachtet – suphug22