Apprendre les statistiques bayésiennes pour la première fois; comme un angle vers la compréhension de MCMC, je me suis demandé: est-ce qu'il fait quelque chose qui ne peut fondamentalement pas être fait d'une autre manière, ou est-ce juste quelque chose de bien plus efficace que les alternatives?
À titre d'illustration, supposons que nous essayons de calculer la probabilité de nos paramètres étant donné les données étant donné un modèle qui calcule l'opposé, . Pour calculer cela directement avec le théorème de Bayes, nous avons besoin du dénominateur comme indiqué ici . Mais pourrions-nous calculer cela par intégration, disons ce qui suit: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
Est-ce que cela fonctionnerait (quoique très inefficacement avec un plus grand nombre de variables) ou y a-t-il autre chose qui ferait échouer cette approche?
Réponses:
Vous décrivez une approximation de la grille vers la partie postérieure, et c'est une approche valable, bien qu'elle ne soit pas la plus populaire. Il existe de nombreux cas dans lesquels la distribution postérieure peut être calculée analytiquement. Les chaînes de Markov de Monte Carlo, ou d'autres méthodes approximatives, sont des méthodes pour obtenir des échantillons de la distribution postérieure, qui fonctionnent parfois lorsque la solution analytique ne peut pas être trouvée.
Les solutions analytiques qui peuvent être trouvées sont généralement des cas de familles «conjuguées», et vous pouvez en savoir plus à ce sujet en recherchant sur Google, voir par exemple https://en.wikipedia.org/wiki/Conjugate_prior .
Comme premier exemple, si votre a priori
p
est uniforme sur[0, 1]
, oùp
est un paramètre de succès dans une expérience binomiale simple, le postérieur est égal à une distribution bêta. L'intégration, ou la sommation, peut se faire explicitement dans ce cas.Si vous avez un nombre infini de choix de paramètres ou si vous utilisez une approximation de grille comme dans votre exemple, une simple somme peut suffire. Cependant, le nombre de calculs peut exploser rapidement si vous avez quelques variables et que vous souhaitez utiliser une grille dense.
Il existe plusieurs algorithmes d'échantillonnage à partir de la partie postérieure. Hamiltonian Monte Carlo, en particulier l'échantillonneur NUTS, est maintenant populaire et utilisé dans
stan
etPyMC3
, Metropolis Hastings est le classique. L'inférence variationnelle est un nouveau venu relatif, pas une méthode d'échantillonnage en fait, mais une façon différente d'obtenir une approximation. Pour le moment, aucune des méthodes, y compris les solutions analytiques, n'est la meilleure, elles fonctionnent toutes bien dans des cas spécifiques.la source
la source
Les méthodes de Monte Carlo sont des techniques qui utilisent des nombres aléatoires. Le but est de trouver des échantillons distribués selon et on suppose que est complexe. Cela signifie que nous ne pouvons pas l'évaluer directement. Si ce n'est pas le cas, vous pouvez simplement le calculer analytiquement. Comme dans votre exemple, ce serait .P ( x ) P ( x ) P ( D )x P(x) P(x) P(D)
Ce que vous proposez est essentiellement une recherche dans la grille à travers l'espace de et . Cela peut être très exhaustif si et sont de grande dimension et irréalisable s'ils sont continus. Un autre problème est que vous devez calculer le cdf à chaque étape.y x yx y x y
Les méthodes MCMC tentent de résoudre ce problème en proposant des échantillons candidats , puis en les acceptant ou en les rejetant en fonction de certaines mesures. Cela peut en théorie être plus rapide que de passer par toutes les combinaisons possibles. Donc, fondamentalement, vous trouvez des échantillons qui sont tirés du précédent . Un problème théorique ici est que ce n'est le cas que pour le nombre limite d'échantillons prélevés, c'est-à-dire après échantillons. Vous ne savez donc pas quand arrêter la chaîne de Markov. P ( D ) ∞ci P(D) ∞
la source