IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Réseaux bayésiens : comment marche l'inférence dans la toolbox BNT ?


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur risques côtiers
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur risques côtiers
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Réseaux bayésiens : comment marche l'inférence dans la toolbox BNT ?
    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é):

    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
    Ma question est : pourquoi les deux méthodes ne donnent-elles pas le même résultat ?
    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

  2. #2
    Candidat au Club
    Homme Profil pro
    Ingénieur risques côtiers
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur risques côtiers
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Points : 4
    Points
    4
    Par défaut
    Je repasse sur le forum alors j'en profite pour faire un update sur mon message qui commence à dater :-)

    Au final, j'ai une possible explication "avec les mains" de la différence entre les deux méthodes: lorsque je calcule les probabilités "prior" de manière très simple (i.e. (nombre de 1)/1000 ; (nombre de 2)/1000), je considère chaque variable individuellement et complètement dé-corrélée du réseau bayésien. Or avec un arbre de jonction, la structure du réseau est utilisée dans le calcul. Autrement dit, dans la seconde méthode, on calcule la probabilité marginale sachant le réseau. Je pense donc que la 1ere méthode est la plus appropriée car elle ne se base sur rien d'autre que la fréquence d'observation des valeurs d'une variable dans la base de données initiale. Autrement dit, la 1ere méthode est adéquate si l'on souhaite calculer une probabilité a priori sans a priori ;-)

Discussions similaires

  1. Comment marche les mots clefs dans les meta-moteurs ?
    Par yolle dans le forum Référencement
    Réponses: 1
    Dernier message: 09/03/2015, 14h02
  2. [Data] Comment marche les transactions dans spring?
    Par mcfly37 dans le forum Spring
    Réponses: 7
    Dernier message: 09/07/2010, 13h58
  3. Réponses: 2
    Dernier message: 05/02/2010, 16h13
  4. Comment marche le OnChange dans un edit
    Par michel71 dans le forum Langage
    Réponses: 2
    Dernier message: 19/09/2008, 11h51
  5. [système] Comment ajouter un item dans le context menu de Windows ?
    Par ddmicrolog dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 29/06/2005, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo