Как использовать pymc для параметризации вероятностной графической модели?

Как можно использовать 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

Вопросы:

  1. Это правильный способ сделать это?
  2. Не становится ли это неуклюжим, особенно если у меня есть X с сотнями дискретных значений? или если у переменной есть два родителя X и Y с 10 дискретными значениями каждый?
  3. Есть ли что-то лучшее, что я могу сделать?
  4. Есть ли хорошие книги, в которых подробно описано, как мы можем реализовать такую ​​взаимосвязь?

person udai    schedule 06.06.2016    source источник
comment
Вы в конце концов поняли это? У меня похожая ситуация, вы видели какие-либо новые улучшения в pymc3, которые могут это сделать?   -  person Kevin Pei    schedule 21.09.2017