pymc를 이용한 베이지안 네트워크 추론 (초보자의 혼란)


13

현재 Coursera에서 Daphne Koller의 PGM 과정을 수강하고 있습니다. 여기에서 우리는 일반적으로 베이지안 네트워크를 관측 된 데이터의 일부인 변수의 원인 및 결과 지향 그래프로 모델링합니다. 그러나 PyMC 자습서 및 예제에서 나는 일반적으로 PGM과 같은 방식으로 모델링되지 않았거나 혼란 스럽습니다. PyMC에서 관측 된 실제 변수의 부모는 종종 변수를 모델링하는 데 사용하는 분포의 매개 변수입니다.

이제 제 질문은 실제로 실용적인 질문입니다. 데이터가 관찰되는 3 개의 변수가 있다고 가정합니다 (A, B, C) (그들을 위해 모두 연속 변수라고 가정합니다). 일부 도메인 지식에서 A와 B가 C를 유발한다고 말할 수 있습니다. 따라서 여기에는 BN이 있습니다. A, B는 부모이고 C는 아이들입니다. 이제 BN 방정식에서 P (A, B, C) = P (C | A, B) * P (A) * P (B)

A와 B는 mu와 sigma가있는 정규 분포라고 말할 수 있지만 P (C | A, B)를 어떻게 모델링합니까? 내가 배우고 싶은 일반적인 생각은 PyMC를 사용하여 BN을 쿼리 할 수 ​​있도록이 BN을 배우는 방법입니다. 아니면 어떤 방식으로 모델의 매개 변수로 BN을 보강해야합니까?

이 문제는 pymc를 사용하여 해결할 수 있습니까? 아니면 기본이 잘못 되었습니까?

도움을 주시면 감사하겠습니다!

답변:


7

Healthy Algorithm의 게시물을보십시오 : http://healthyalgorithms.com/2011/11/23/causal-modeling-in-python-bayesian-networks-in-pymc/

PyMC의 totorial에서 : http://pymc-devs.github.io/pymc/tutorial.html

어쩌면 다음 코드 클립을 사용해보십시오 (pymc를 mc로 가져 왔다고 가정).

A = mc.Normal('A', mu_A, tau_A)
B = mc.Normal('B', mu_B, tau_B)
p_C = mc.Lambda('p_C', lambda A=A, B=B: <<dependency spec goes here>>, doc='Pr[C|AB]')
C = mc.Bernoulli('C', p_C)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.