Байєсівська мережа з використанням pymc (плутанина для початківців)


12

Зараз я проходжу курс PGM Дафни Коллер на 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 - це звичайні розподіли з деякими му та сигмами, але як я моделюю P (C | A, B)? Загальна ідея, яку я хочу дізнатися, - це як я дізнаюся цю BN за допомогою PyMC, щоб я міг запитати BN. Або я мушу якось доповнювати BN параметрами моделі.

Чи вирішується ця проблема за допомогою pymc? чи я неправильно зрозумів якісь основи?

Будь-яка допомога буде вдячна!

Відповіді:


6

Подивіться на публікацію у здоровому алгоритмі: http://healthyalgorithms.com/2011/11/23/causal-modeling-in-python-bayesian-networks-in-pymc/

також у тотаріалі 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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.