Как можно использовать pymc для параметризации вероятностной графической модели?
Предположим, у меня есть PGM с двумя узлами X
и Y
. Допустим, X->Y
— это график.
Причем X
принимает два значения {0,1}
, а Y
также принимает два значения {0,1}
.
Я хочу использовать pymc, чтобы узнать параметры распределения и заполнить им графическую модель для выполнения выводов.
Я мог думать о следующем:
X_p = pm.Uniform("X_p", 0, 1)
X = pm.Bernoulli("X", X_p, values=X_Vals, observed=True)
Y0_p = pm.Uniform("Y0_p", 0, 1)
Y0 = pm.Bernoulli("Y0", Y0_p, values=Y0Vals, observed=True)
Y1_p = pm.Uniform("Y1_p", 0, 1)
Y1 = pm.Bernoulli("Y1", Y1_p, values=Y1Vals, observed=True)
Здесь Y0Vals
— значения Y
, соответствующие X
значениям = 0, а Y1Vals
— значения Y
, соответствующие X
значениям = 1.
План состоит в том, чтобы извлечь из них выборки MCMC и использовать средства Y0_p
и Y1_p
для заполнения вероятности дискретной байесовской сети... Итак, таблица вероятности для P(X) = (X_p,1-X_p)
, а для P(Y/X)
:
Y 0 1
X
0 Y0_p 1-Y0_p
1 Y1_p 1-Y1_p
Вопросы:
- Это правильный способ сделать это?
- Не становится ли это неуклюжим, особенно если у меня есть
X
с сотнями дискретных значений? или если у переменной есть два родителяX
иY
с 10 дискретными значениями каждый? - Есть ли что-то лучшее, что я могу сделать?
- Есть ли хорошие книги, в которых подробно описано, как мы можем реализовать такую взаимосвязь?