Pomegranate: Вопрос: выборка из условной вероятности

Созданный на 28 февр. 2016  ·  18Комментарии  ·  Источник: jmschrei/pomegranate

Привет,
Я не знаю, подходящее ли это место, чтобы спросить об этом, скажите, пожалуйста, если это не так.
В своей магистерской диссертации я хотел бы оценить условные вероятности нескольких случайных величин, которые могут быть как дискретными, так и непрерывными (смесь непрерывных и дискретных переменных). Я думаю, что это можно было бы сделать с использованием граната, выполнив оценку плотности этой смеси и совместного распределения переменных свидетельств. В результате получится смесь распределений, состоящая из двух частей, но не замкнутая форма распределения. Таким образом, для выборки из условного распределения мне пришлось бы прибегнуть к выборке отклонения (или оптимизированному методу MCMC). Это верно?

Самый полезный комментарий

@jmschrei : Конечно! Было бы здорово использовать метод sample () или возможность перенести модель граната в PyMC, чтобы там можно было выполнить выборку. :)

Все 18 Комментарий

pomegranate в настоящее время не поддерживает условные распределения, которые, к сожалению, обусловлены непрерывным распределением. Но это то, что я хочу добавить в ближайшее время. Однако идея звучит правдоподобно. Вы можете рассмотреть PyMC, который более полно работает в этой области.

Тогда, если можно, предложение. PyMC также поддерживает смеси распределения, HMM и т. Д. Но нет фабричных методов для их создания. Было бы здорово, если бы pomegranate (с очень понятным интерфейсом) мог интегрироваться с (оптимизированными) методами выборки PyMC. Возможно, преобразовав модель граната в модель PyMC.

Это кажется разумной идеей. Однако, если бы у меня было время настроить это, у меня также было бы время реализовать это в гранате. Сегодня у меня будет время поработать над этими проблемами. Если вы можете предоставить образец кода, который вы хотели бы увидеть в работе, я посмотрю, смогу ли я его реализовать в ближайшее время.

Я еще не использовал гранат, я нахожусь в фазе поиска наиболее полной библиотеки для моей проблемы. Но с условным распределением у меня было бы все. У меня есть текущий код, в котором я делаю именно то, что упоминал в моем первом посте, но только с использованием смеси гауссианцев (для которых существует производная закрытой формы).

edit: Я покажу отрывок того, как я использую его сейчас со sklearn GMM

weighted_fit - это расширенная версия sklearns fit (), которая обрабатывает взвешенные данные

gmm.weighted_fit (данные, вес_данные)

мои данные - трехмерные непрерывные векторы [X, Y, Z]

г = 1,2

P (X = нан, X = нан | p = Z)

(con_mean, con_cov, con_weights) = utility.cond_dist_gmm (np.array ([np.nan, np.nan, z]), gmm.means_, gmm._get_covars (), gmm.weights_)

Иллюстративный psueodocode для того, что мне нужно добавить. В принципе, если у вас есть что-то вроде этого:

a = NormalDistribution( 5, 2 )
b = ConditionalGaussianDistribution( w=[5], w0=2, sigma=2 )

Это определило бы родительское распределение, которое является нормальным, и условное нормальное распределение, сосредоточенное вокруг линейной регрессии родителей. Как вам будет удобнее.

Я не совсем понимаю, о чем вы спрашиваете. GMM реализованы в гранате (и я думаю, быстрее, чем в sklearn). Вы ищете модели условной гауссовой смеси?

Условные GMM у меня есть.
Я сформулирую это иначе, учитывая данные как с дискретными, так и с непрерывными переменными, например, d = [c1, c2, d1, d2].
Я бы хотел сделать это:

k-компонентная модель смеси, для моделирования непрерывных данных [d1, d2], многомерный является двумерным, чтобы моделировать вектор [d1, d2]

gmm = MixtureDistribution (MultivariateGaussianDistribution1, MultivariateGaussianDistribution2, ..., MultivariateGaussianDistributionk)

дискретное распределение

cat1 = DiscreteDistribution ([(0,0.1), (1,0.3), (2,0.6)])
cat2 = DiscreteDistribution ([(0,0.6), (1,0.4)])

новая модель определяет объединенное распределение как непрерывных, так и дискретных данных -> p (d)

Я пока не думаю, что это возможно в гранате.

Я думаю, что, может быть, поэтому было не совсем понятно, что я задумал, я смешал смесь распределения со смешанным совместным распределением ...

См. математическую формулировку в Совместном распределении «смешанный случай» внизу страницы.

d_model = JointDistribution (gmm, cat1, cat2)

соответствовать параметрам модели данными

d_model.from_sample (данные)

теперь, учитывая, что я знаю (приблизительно) совместную вероятность, я хотел бы знать, например, совместную вероятность [c1, c2], учитывая, что d1 = 1 и d2 = 0

cond_d = ConditionalDistr (d_model, [np.nan, np.nan, 1,0])

Извините, я все еще не совсем понимаю, что вы имеете в виду. Вы хотите сказать, что хотите, чтобы объект a имел возможность определять условное распределение, чтобы иметь как непрерывные, так и дискретные родительские элементы? По сути, байесовская сеть с дискретными и непрерывными переменными?

Да, думаю, именно так. Но я провел еще несколько исследований и буду избегать любых методов выборки в пользу ЭМ. Даже если это снижает выразительность моей модели. Итак, если вы реализуете модель условной гауссовской смеси (моя собственная реализация не работает должным образом), то это будет очень признательно. Я могу предоставить бумагу, которую использовал, но у вас, вероятно, есть все необходимые ресурсы.

Конечно, я хотел бы взглянуть на газету, чтобы убедиться, что мы на одной странице.

Вы продвинулись к условному распределению?

У меня еще не было много времени, чтобы вдаваться в подробности этого, на этой неделе будут дни посещения будущих студентов. Я скоро вернусь к этому вопросу.

Это полностью упало с моего радара, извините! Если бы я поработал над этим в ближайшее время, он был бы вам полезен, или вы закончили свою диссертацию?

Без проблем.
И спасибо, что связались со мной, но моя диссертация закончена.
Удачи с вашей библиотекой.

1 сентября 2016 года в 04:21 Якоб Шрайбер [email protected] написал:

Это полностью упало с моего радара, извините! Если бы я поработал над этим в ближайшее время, он был бы вам полезен, или вы закончили свою диссертацию?

-
Вы получаете это, потому что вы являетесь автором темы.
Ответьте на это электронное письмо напрямую, просмотрите его на GitHub https://github.com/jmschrei/pomegranate/issues/86#issuecomment -243958007 или отключите поток https://github.com/notifications/unsubscribe-auth/AG5qEFMbUPk0uoKA4JTxdt8CaxJpwo.

Уважаемый @jmschrei, как вы занимаетесь по этой теме? Было бы также очень интересно. Благодарность!

Привет @jaSunny. Можете ли вы точно описать, что бы вы хотели реализовать?

@jmschrei : Конечно! Было бы здорово использовать метод sample () или возможность перенести модель граната в PyMC, чтобы там можно было выполнить выборку. :)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги