การอนุมานเครือข่ายแบบเบย์โดยใช้ pymc (ความสับสนของผู้เริ่มต้น)


13

ฉันกำลังเรียนหลักสูตร PGM โดย Daphne Koller บน Coursera โดยทั่วไปเราจะสร้างแบบจำลองเครือข่ายแบบเบย์เป็นเหตุและผลของกราฟกำกับของตัวแปรซึ่งเป็นส่วนหนึ่งของข้อมูลที่สังเกตได้ แต่ในบทเรียนและตัวอย่างของ PyMC ฉันเห็นว่ามันไม่ได้เป็นแบบอย่างในแบบเดียวกับ PGM หรือ atleast ที่ฉันสับสน ใน 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 หรือไม่ หรือฉันมีพื้นฐานบางอย่างผิดหรือเปล่า?

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม!

คำตอบ:


7

ดูโพสต์ในอัลกอริทึมที่มีสุขภาพดี: http://healthyalgorithms.com/2011/11/23/causal-modeling-in-python-bayesian-networks-in-pymc/

ใน totorial ของ PyMC ด้วย: 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.