Pymc kullanarak Bayes ağ çıkarımları (Yeni başlayanların kafa karışıklığı)


13

Şu anda Coursera'da Daphne Koller'in PGM kursuna katılıyorum. Bu bağlamda, genellikle bir Bayes Ağı'nı, gözlemlenen verilerin bir parçası olan değişkenlerin bir sebep ve sonuç odaklı grafiği olarak modelliyoruz. Ancak PyMC öğreticileri ve örneklerinde genellikle PGM ile aynı şekilde modellenmediğini veya en azından kafam karıştığını görüyorum. PyMC'de gözlemlenen herhangi bir gerçek dünya değişkeninin ebeveynleri genellikle değişkeni modellemek için kullandığınız dağılımın parametreleridir.

Şimdi sorum gerçekten pratik bir soru. Verilerin gözlendiği 3 değişkene sahip olduğumu varsayalım (A, B, C) (bunların hepsi için sadece sürekli değişkenler olduğunu varsayalım). Bazı alan bilgisinden, A ve B'nin C'ye neden olduğu söylenebilir. Yani burada bir BN var - A, B ebeveynler ve C çocuklar. şimdi P (A, B, C) = P (C | A, B) * P (A) * P (B) denkleminden

A ve B'nin bazı mu ve sigma ile bazı normal dağılımlar olduğunu söyleyebilirim, ancak P'yi nasıl modelleyebilirim (C | A, B)? Öğrenmek istediğim genel fikir, BN'yi sorgulayabilmem için PyMC kullanarak bu BN'yi nasıl öğreneceğim. Ya da BN'yi modelin parametreleriyle bir şekilde arttırmak zorunda mıyım?

Bu sorun pymc kullanılarak çözülebilir mi? ya da bazı temel bilgileri yanlış mı aldım?

Herhangi bir yardım mutluluk duyacağız!

Yanıtlar:


7

Sağlıklı Algoritma'da bir gönderiye göz atın: http://healthyalgorithms.com/2011/11/23/causal-modeling-in-python-bayesian-networks-in-pymc/

ayrıca PyMC'nin ders notunda: http://pymc-devs.github.io/pymc/tutorial.html

Belki aşağıdaki kod klibini denersiniz (pymc'yi mc olarak içe aktardığınız varsayılarak):

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)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.