Devo eseguire alcune inferenze su una rete bayesiana, come nell'esempio che ho creato di seguito. Inferenza in una rete bayesiana
stavo guardando facendo qualcosa di simile qualcosa di simile per risolvere una deduzione come P (F | A = True, B = True). Il mio approccio iniziale era di fare qualcosa di simile
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
Ma io non credo che questo funzionerà perché abbiamo effettivamente bisogno di andare oltre molte variabili in una sola volta, non ogni volta.
Ho sentito parlare dell'algoritmo di Pearls per il passaggio di messaggi, ma devo ancora trovare una descrizione ragionevole che non sia estremamente densa. Per ulteriori informazioni, queste reti bayesiane sono vincolate in modo da non avere più di 15-20 nodi, e abbiamo tutte le tabelle di probabilità condizionale, il codice non deve essere veramente veloce o efficiente.
Fondamentalmente sto cercando un modo per farlo, non necessariamente il modo migliore per farlo.
Il tuo grafico è solo un esempio o tutte le principali variabili sono state osservate? –
L'algoritmo di passaggio dei messaggi di Pearl si applica solo alle reti senza loop. Esistono algoritmi esatti per reti loopy di variabili discrete e gaussiane, ma non sono semplici. Il mio consiglio è di trovare del software per fare i calcoli, quindi tutto ciò che devi fare è inserire la descrizione della rete (variabili, connessioni e tabelle di probabilità) ed eseguire le query. Ci sono sia software commerciali che non commerciali per questo; scusa, non ho una raccomandazione. –
il grafico era solo un esempio, le variabili principali non sono sempre strettamente osservate – suphug22