Nauka statystyk bayesowskich po raz pierwszy; zastanawiając się nad kątem MCMC, zastanawiałem się: czy robi coś, czego zasadniczo nie da się zrobić inaczej, czy też robi coś znacznie wydajniejszego niż alternatywy?
Dla ilustracji załóżmy, że próbujemy obliczyć prawdopodobieństwo naszych parametrów, biorąc pod uwagę dane biorąc pod uwagę model, który oblicza coś przeciwnego, . Aby obliczyć to bezpośrednio za pomocą twierdzenia Bayesa, potrzebujemy mianownika jak wskazano tutaj . Ale czy możemy to obliczyć przez integrację, powiedzmy w następujący sposób:P ( D | x , y , z ) P ( D )
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
Czy to zadziałałoby (choć bardzo nieefektywnie przy większej liczbie zmiennych), czy może jest coś innego, co spowodowałoby niepowodzenie tego podejścia?
Odpowiedzi:
Opisujesz przybliżenie siatki do tylnej części ciała i jest to prawidłowe podejście, choć nie najpopularniejsze. Istnieje kilka przypadków, w których rozkład tylny można obliczyć analitycznie. Łańcuchy Monte Carlo Markowa lub inne przybliżone metody to metody uzyskiwania próbek rozkładu tylnego, które czasem działają, gdy nie można znaleźć rozwiązania analitycznego.
Rozwiązania analityczne, które można znaleźć, to zazwyczaj przypadki rodzin „sprzężonych”, a więcej informacji na ten temat można znaleźć w Google, patrz na przykład https://en.wikipedia.org/wiki/Conjugate_prior .
Jako pierwszy przykład, jeśli twój poprzedni
p
jest jednolity[0, 1]
, gdziep
parametr sukcesu w prostym eksperymencie dwumianowym, tył jest równy rozkładowi Beta. W takim przypadku integrację lub sumowanie można wykonać jawnie.Jeśli masz do wyboru wiele parametrów lub korzystasz z przybliżenia siatki, tak jak w twoim przykładzie, proste podsumowanie może być wszystkim, czego potrzebujesz. Liczba obliczeń może jednak gwałtownie wzrosnąć, jeśli masz kilka zmiennych i chcesz użyć gęstej siatki.
Istnieje kilka algorytmów próbkowania z tyłu. Hamiltonian Monte Carlo, a zwłaszcza sampler NUTS, jest teraz popularny i stosowany w,
stan
aPyMC3
Metropolis Hastings to klasyk. Wnioskowanie wariacyjne jest względnym nowicjuszem, właściwie nie metodą próbkowania, ale innym sposobem uzyskania aproksymacji. W tej chwili żadna z metod, w tym rozwiązania analityczne, nie jest najlepsza, wszystkie działają dobrze w określonych przypadkach.źródło
źródło
Metody Monte Carlo to techniki wykorzystujące liczby losowe. Celem jest znalezienie próbek które są rozmieszczone zgodnie z i zakłada się, że jest złożone. Oznacza to, że nie możemy ocenić go bezpośrednio. Jeśli tak nie jest, możesz to po prostu obliczyć analitycznie. Jak w twoim przykładzie byłoby to .P ( x ) P ( x ) P ( D )x P(x) P(x) P(D)
Co proponujecie jest zasadniczo wyszukiwania siatki poprzez przestrzeni i . Może to być bardzo wyczerpująca jeśli i są wysokie wymiarów i niemożliwe, jeśli są one w sposób ciągły. Innym problemem jest to, że musisz obliczyć plik cdf na każdym kroku.y x yx y x y
Metody MCMC próbują rozwiązać ten problem, proponując próbki kandydujące a następnie przyjmując lub odrzucając je w zależności od niektórych miar. Teoretycznie może to być szybsze niż przejście przez wszystkie możliwe kombinacje. więc w zasadzie znajdziesz próbki, które są pobierane z wcześniejszego . Problem teoretyczny polega na tym, że dzieje się tak tylko w przypadku ograniczonej liczby pobranych próbek, tj . Próbek . Więc nie wiesz, kiedy zatrzymać Łańcuch Markowa. P ( D ) ∞ci P(D) ∞
źródło