pymcを使用したベイジアンネットワーク推論(初心者の混乱)


12

現在、コースラでダフネ・コラーの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)をモデル化するにはどうすればよいですか?私が学びたい一般的な考え方は、BNを照会できるように、PyMCを使用してこのBNをどのように学習するかです。または、何らかの方法でモデルのパラメーターを使用してBNを増強する必要がありますか?

この問題はpymcを使用して解決できますか?または、いくつかの基本的な間違いがありましたか?

助けていただければ幸いです!

回答:


6

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.