Bonjour à tous
J'ai une question théorique au sujet de la toolbox BNT (Bayes Net Toolbox) pour MATLAB.
Admettons que j'ai un jeu de données comprenant 1000 observations et 5 variables représenté par un tableau à 5 lignes et 1000 colonnes.
On suppose que chaque variable est discrète et peut prendre 2 états (1 ou 2).
Le réseau bayésien est simple : chacune des 4 premières variables pointe vers la cinquième.
Si je souhaite calculer la distribution de probabilité "prior" de ma variable n°5 (appelons-la V5), je peux la calculer ainsi : (nombre d'observations telles que V5 = 1)/1000 et (nombre d'observations telles que V5 = 2)/1000.
Je peux aussi utiliser l'inférence de la toolbox BNT avec le code ci-dessous (une fois le réseau bnet créé et l'apprentissage des paramètres effectué):
Ma question est : pourquoi les deux méthodes ne donnent-elles pas le même résultat ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 engine = jtree_inf_engine(bnet); evidence = cell(1,5); [engine, loglik] = enter_evidence(engine, evidence); marg = marginal_nodes(engine, 5); marg.T
J'ai l'impression que passer par un arbre de jonction "modifie" les probabilités observées.
J'ai fait le test avec d'autres réseaux notamment celui, très simple, qui se trouve à cette adresse http://bnt.googlecode.com/svn/trunk/docs/usage.html j'ai toujours une différence entre les deux méthodes.
Il doit sans doute y avoir une explication logique (je ne m'y connais pas en arbres de jonction et je ne maîtrise pas tous les algorithmes internes à la toolbox BNT).
Ma question subsidiaire : quelle méthode utiliser pour calculer mes probabilités "prior"?
Merci pour vos éclaircissements!
Toma_BN
Partager