Изучение байесовской статистики в первый раз; как угол к пониманию MCMC я задавался вопросом: делает ли он что-то, что принципиально не может быть сделано по-другому, или это просто делает что-то гораздо более эффективное, чем альтернативы?
В качестве иллюстрации предположим, что мы пытаемся вычислить вероятность наших параметров с учетом данных учетом модели, которая вычисляет противоположное значение . Чтобы вычислить это непосредственно с помощью теоремы Байеса, нам нужен знаменатель как указано здесь . Но можем ли мы рассчитать это путем интеграции, скажем так:
p_d = 0.
for x in range(xmin,xmax,dx):
for y in range(ymin,ymax,dy):
for z in range(zmin,zmax,dz):
p_d_given_x_y_z = cdf(model(x,y,z),d)
p_d += p_d_given_x_y_z * dx * dy * dz
Будет ли это работать (хотя и очень неэффективно с большим количеством переменных) или есть что-то еще, что может привести к провалу этого подхода?
Ответы:
Вы описываете аппроксимацию сетки апостериорным, и это правильный подход, хотя и не самый популярный. Существует довольно много случаев, когда апостериорное распределение может быть вычислено аналитически. Цепи Монте-Карло Маркова или другие приближенные методы - это методы получения выборок апостериорного распределения, которые иногда работают, когда аналитическое решение не может быть найдено.
Аналитические решения, которые могут быть найдены, как правило, являются случаями «сопряженных» семейств, и вы можете узнать больше об этом путем поиска в Google, см., Например, https://en.wikipedia.org/wiki/Conjugate_prior .
В качестве первого примера, если ваш предшествующий уровень
p
одинаков[0, 1]
, гдеp
параметр успеха в простом биномиальном эксперименте равен, апостериор равен бета-распределению. Интегрирование, или суммирование, может быть сделано явно в этом случае.Если у вас конечное число вариантов выбора или вы используете сеточное приближение, как в вашем примере, вам может понадобиться простое суммирование. Однако число вычислений может быстро возрасти, если у вас есть пара переменных и вы хотите использовать плотную сетку.
Существует несколько алгоритмов отбора проб сзади. Гамильтониан Монте - Карло, в частности NUTS пробник, сейчас популярна и используется
stan
иPyMC3
Метрополис Гастингс является классическим. Вариационный вывод является относительным новичком, фактически не методом выборки, а другим способом получения приближения. На данный момент ни один из методов, включая аналитические решения, не является лучшим, все они хорошо работают в конкретных случаях.источник
источник
Методы Монте-Карло - это методы, использующие случайные числа. Цель состоит в том, чтобы найти выборки , которые распределены в соответствии с и предполагается, что является комплексным. Это означает, что мы не можем оценить это напрямую. Если это не так, вы можете просто рассчитать его аналитически. Как в вашем примере это будет .П ( х )x P(x) P(x) P(D)
По сути, вы предлагаете поиск по сетке в пространстве и . Это может быть очень исчерпывающим, если и имеют большой размер, и неосуществимым, если они непрерывны. Другая проблема заключается в том, что вы должны вычислять cdf на каждом шаге.x y x y
Методы MCMC пытаются решить эту проблему, предлагая образцы-кандидаты а затем принимая или отклоняя их в зависимости от некоторой меры. Теоретически это может быть быстрее, чем проходить все возможные комбинации. так что в основном вы найдете образцы, которые взяты из предыдущего . Теоретическая проблема здесь состоит в том, что это имеет место только в предельном количестве выборок, то есть после выборок. Таким образом, вы не знаете, когда остановить цепь Маркова.ci P(D) ∞
источник