Exemplo simples / caso de uso para um BNT gaussian_CPD?
Eu estou tentando implementar um classificador Naive Bayes usando BNT e MATLAB. Até agora tenho ficado com simplestabular_CPD
variáveis e probabilidades "adivinhadoras" para as variáveis. Minha rede de protótipos até agora consiste no seguinte:
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);
Aqui, a variável 1 é minha variável de saída desejada, definida para inicialmente atribuir uma probabilidade de 5 a uma das classes de saída.
As variáveis 2-5 definem CPDs para recursos que eu mensuro:
2 é um tamanho de cluster, variando de 1 a uma dúzia ou mais3 é uma relação que será um valor real> = 14 e 5 são valores de desvio padrão (real) (dispersão X e Y)Para classificar um agrupamento de candidatos, quebro todas as medidas do recurso em três a quatro parâmetros, assim:
...
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);
...
Isso funciona muito bem, considerando que estou apenas adivinhando os valores de intervalo e de probabilidade do intervalo. Mas eu acredito que o que eudevemos estar usando aqui é umgaussian_CPD
. Eupensar que umgaussian_CPD
pode aprender os colchetes e probabilidades ideais (como matrizes e pesos de média e covariância).
Meu problema é que não estou encontrandosimples exemplos de como o BNTgaussian_CPD
classe é usada. Como, por exemplo, eu iria sobre a inicialização de umgaussian_CPD
para aproximadamente o mesmo comportamento como um dos meustabular_CPD
variáveis acima?