Einfaches Beispiel / Anwendungsfall für eine BNT-Gauß-CPD?
Ich versuche, einen Naive Bayes-Klassifikator mit BNT und MATLAB zu implementieren. Bisher habe ich mich an simple gehaltentabular_CPD
Variablen und "geschätzte" Wahrscheinlichkeiten für die Variablen. Mein bisheriges Prototypennetz besteht aus:
DAG = false(5);
DAG(1, 2:5) = true;
bnet = mk_bnet(DAG, [2 3 4 3 3]);
bnet.CPD{1} = tabular_CPD(bnet, 1, [.5 .5]);
bnet.CPD{2} = tabular_CPD(bnet, 2, [.1 .345 .45 .355 .45 .3]);
bnet.CPD{3} = tabular_CPD(bnet, 3, [.2 .02 .59 .2 .2 .39 .01 .39]);
bnet.CPD{4} = tabular_CPD(bnet, 4, [.4 .33333 .5 .33333 .1 .33333]);
bnet.CPD{5} = tabular_CPD(bnet, 5, [.5 .33333 .4 .33333 .1 .33333]);
engine = jtree_inf_engine(bnet);
Hier ist die Variable 1 meine gewünschte Ausgabevariable, die so eingestellt ist, dass sie anfangs jeder Ausgabeklasse eine Wahrscheinlichkeit von 0,5 zuweist.
Die Variablen 2-5 definieren CPDs für Features, die ich messe:
2 ist eine Clustergröße von 1 bis zu einem Dutzend oder mehr3 ist ein Verhältnis, das ein realer Wert> = 1 ist4 und 5 sind Standardabweichungswerte (reelle Werte) (X- und Y-Streuung)Um einen Kandidatencluster zu klassifizieren, teile ich alle Merkmalsmessungen in 3-4 Bereichsklammern ein:
...
evidence = cell(1, 5);
evidence{2} = sum(M > [0 2 6]);
evidence{3} = sum(O > [0 1.57 2 3]);
evidence{4} = sum(S(1) > [-Inf 1 2]);
evidence{5} = sum(S(2) > [-Inf 0.4 0.8]);
eng = enter_evidence(engine, evidence);
marginals = marginal_nodes(eng, 1);
e = marginals.T(1);
...
Das funktioniert eigentlich ganz gut, wenn man bedenkt, dass ich nur Entfernungsklammern und Wahrscheinlichkeitswerte errate. Aber ich glaube das was ichsollte Verwenden Sie hier ist eingaussian_CPD
. ichdenken dass agaussian_CPD
kann sowohl die optimalen Klammern als auch die Wahrscheinlichkeiten (als Mittel- und Kovarianzmatrizen und -gewichte) lernen.
Mein Problem ist, ich finde keineeinfach Beispiele dafür, wie die BNTgaussian_CPD
Klasse wird verwendet. Wie würde ich zum Beispiel vorgehen, um a zu initialisieren?gaussian_CPD
in etwa das gleiche Verhalten wie einer meinertabular_CPD
Variablen oben?