[PYTHON] Résumé de chacune des méthodes de la chaîne de Markov et de Monte Carlo

introduction

J'apprends actuellement les statistiques bayésiennes. Parmi eux, je résumerai la méthode de Monte Carlo en chaîne de Markov. Comme point de départ, cet article vous donnera un aperçu de la chaîne de Markov et de la méthode de Monte Carlo.

Article suivant

Voici le livre auquel j'ai fait référence cette fois.

Qu'est-ce que la méthode Markov Chain Monte Carlo?

Dans l'inférence bayésienne, considérons le modèle probabiliste $ P (X, Z) $, où $ X $ est les données observées et $ Z $ est l'ensemble des variables non observées telles que les paramètres et les variables latentes. A ce moment, il est nécessaire de calculer la distribution a posteriori de $ P (Z | X) $ afin de résoudre des problèmes spécifiques tels que l'apprentissage et la prédiction. En passant, il y a un problème que cette distribution a posteriori ne peut pas être résolue analytiquement, ou que sa résolution numérique nécessite une grande quantité de calcul. Par conséquent, je vais essayer d'étudier les caractéristiques de cette distribution souhaitée en obtenant plusieurs échantillons à partir de $ P (Z | X) $. Comme cette méthode de l'anneau d'échantillonnage, il existe la ** méthode de Monte Carlo par chaîne de Markov **.

Pour expliquer brièvement chaque terme,

Ce sera. Voici un bref résumé de chacun.

Méthodes de Monte Carlo

Il s'agit d'une méthode pour trouver une solution approximative par essai en utilisant des nombres aléatoires. Un exemple courant d'explication est une solution approximative avec un rapport de circonférence de $ π $. Considérons un cercle avec un rayon de $ R $ et un carré le recouvrant.

image.png

À ce stade, si l'aire du cercle est $ So $ et l'aire du carré moins l'aire du cercle est $ Ss $,

So = πR^2\\
Ss = 4R^2-πR^2\\

Peut être exprimé comme. Maintenant, ajoutez ces deux formules et exprimez $ π $ en utilisant $ So $ et $ Ss $.

π = \frac {4So}{So + Ss}

Ce sera. Maintenant, changeons le rayon en $ 1 $. En générant un nombre aléatoire dans l'intervalle $ [0,1] $, on calcule la probabilité de devenir $ 1 $ s'il est à l'intérieur du cercle et $ 0 $ s'il est à l'extérieur du cercle. Implémenter en python à titre d'exemple.

import random
inner =0
for i in range(1000000):
    x, y = random.random(), random.random()
    if x**2 + y**2 < 1:
        inner +=1
print (inner * 4/1000000)

Il est devenu 3,141072 $. Il s'avère que la valeur est proche de 3,1415 $. J'ai confirmé la méthode de Monte Carlo qui effectue une approximation par des nombres aléatoires.

Chaîne de Markov

La chaîne de Markov signifie que l'état suivant n'est déterminé que par l'état précédent. Si vous connaissez la formule graduelle que vous apprenez en mathématiques au secondaire, je pense que vous devriez y penser. Il est difficile d'imaginer un exemple réel déterminé par l'état précédent, mais voici quelques exemples tirés de manuels et de pages Web.

Il n'y a pas de fin à l'élever.

Prenons maintenant un exemple.

Problème de cravate au cou: Une école secondaire propose officiellement trois types de cravates uniformes. Zhu, vert et bleu. Supposons qu'il y ait 100 élèves de première année. On sait empiriquement que le premier jour, les élèves portent des cravates rouges, vertes et bleues avec une probabilité de 0,6, 0,25, 0,15 $, respectivement. ** Les élèves de ce lycée décident du motif de cravate pour la journée en se basant uniquement sur le motif de cravate pressé la veille. ** ** La probabilité est indiquée ci-dessous. Maintenant, quelle est la probabilité de porter chaque couleur un jour plus tard ou dix jours plus tard?

table Le jour: Zhu Le jour: vert Le jour: bleu
La veille: Zhu 0.3 0.3 0.4
La veille: vert 0.1 0.5 0.4
La veille: bleu 0.2 0.6 0.2

Soit la variable de probabilité représentant le motif de la cravate le jour $ t $ $ X ^ {t} $ en utilisant l'indice $ t (= 1, ...., T) $. Une variable stochastique qui change avec le temps est appelée un ** processus stochastique **. Le processus stochastique général est

P(X^t|X^{t-1},・ ・ ・,X^1)

Comme, c'est une probabilité conditionnelle basée sur les circonstances antérieures. Cependant, dans ce cas,

P(X^t|X^{t-1},・ ・ ・,X^1) = P(X^t|X^{t-1})

Le processus de probabilité qui n'est affecté que par la probabilité de la veille est appelé la chaîne de Markov.

La probabilité conditionnelle qui définit cette chaîne de Markov peut être exprimée comme suit. C'est ce qu'on appelle le ** noyau de transition ou noyau de transition **.


{\bf{P}}=\begin{pmatrix} 0.3 & 0.3 & 0.4 \\ 
0.1 & 0.5 & 0.4 \\
 0.2 & 0.6 & 0.2 \end{pmatrix} 

Convergence vers une distribution stable

Maintenant, trouvons la distribution de probabilité après quelques jours. Lorsque $ p_Zhu ^ {t} = p (X ^ {t} = Zhu) $ est écrit, la distribution de probabilité de $ X ^ {t} $ est $ \ textbf p ^ {t} = (p_1 ^ {t} , p_2 ^ {t}, p_3 ^ {t}) $, et $ \ textbf p ^ {1} = (0.6,0.25,0.15) $. La probabilité de porter une cravate vermillon le deuxième jour est $ \ Textbf p (X ^ 2 = Zhu) = 0,3 × 0,6 + 0,1 × 0,25 + 0,2 × 0,15 = 0,235 $ Ce sera.

Il peut être calculé comme suit en répétant le calcul avec la même idée. image.png

Vous pouvez voir qu'il n'y a pas de changement après le 4ème jour. La réponse que j'ai mentionnée plus tôt est "après le 4ème jour, il sera stable au vermillon: vert: bleu = 1/6: 1/2: 1/3".

La distribution de probabilité $ \ bf p $ qui ne change pas à ce moment est appelée ** distribution régulière ou distribution invariante **. La période jusqu'à ce que cette distribution régulière soit remplacée est appelée la ** période de rodage **.

Conditions d'équilibrage détaillées (Fusion de la chaîne de Markov et méthode de Monte Carlo)

Le but de ce problème de cravate était de trouver l'état d'usure final, l'état d'équilibre. Cependant, cette fois, avec la distribution postérieure claire, je voudrais obtenir un nombre aléatoire qui correspond à la distribution postérieure. En d'autres termes, envisagez de concevoir un noyau de transition de sorte que la distribution postérieure devienne une distribution stationnaire. De cette façon, pour la distribution que vous souhaitez échantillonner, la méthode de construction de la chaîne de Markov avec elle comme ** distribution constante ** est appelée la ** méthode de Monte Carlo par chaîne de Markov ** (communément appelée méthode MCMC).

Dans la méthode MCMC, la distribution stationnaire est connue, mais le noyau de transition est inconnu (à l'opposé du problème de lien).

Ici, nous utilisons l'idée de ** condition d'équilibre détaillée ** comme condition pour que la chaîne de Markov converge vers une distribution stable. Pour les variables de probabilité $ θ et θ '$, il se réfère à la formule suivante.

f(θ'|θ)f(θ) = f(θ|θ')f(θ')

Dans le cas du problème de cravate que j'ai mentionné plus tôt,

p(Zhu|vert) ×\frac {1}{6} = p(vert|Zhu) ×\frac {1}{2}

Ce sera. f(θ'|θ)Ouf(θ|θ')Est le noyau de transition.

image.png

Voici un aperçu des conditions d'équilibrage détaillées. Soit le point $ θ $ près du centre de la distribution et le point $ θ '$ la périphérie de la distribution. À ce stade, ce que signifient les conditions d'équilibrage détaillées

f(θ'):f(θ) = 1 :Si un\\ 
f(θ|θ'):f(θ'|θ) = a :1

Ce sera.

Le mouvement de $ θ '$ → $ θ $ est $ a $ plus probable que le mouvement de $ θ $ → $ θ' $. En d'autres termes, cela signifie qu'il est facile de se déplacer près du centre.

Si cette condition d'équilibre détaillée est rompue, cela signifie que la séquence de nombres aléatoires finira par être dessinée au centre même si l'état initial est pris au hasard.

À la fin

Après avoir résumé la chaîne de Markov et la méthode de Monte Carlo, respectivement, j'ai résumé le problème des liens comme un exemple de la méthode de Monte Carlo par chaîne de Markov. Maintenant que le plan est terminé, je voudrais traiter de l'explication de l'algorithme qui utilise cette méthode MCMC la prochaine fois.

Le prochain article.

Comprendre la méthode Metropolitan Hasting (une des méthodes de la méthode Monte Carlo en chaîne de Markov) avec implémentation https://qiita.com/Fumio-eisan/items/6e8bad9977e945ddb2fc

Il est également décrit ci-dessous comme un blog. Le rôle est de résumer plus en détail.

https://fumio-eisan.hatenablog.com/

Recommended Posts

Résumé de chacune des méthodes de la chaîne de Markov et de Monte Carlo
PRML Chapitre 11 Implémentation Python Monte Carlo Chaîne de Markov
La première méthode de Monte Carlo en chaîne de Markov par PyStan
Comprendre la méthode Metropolitan Hasting (une des méthodes de la méthode Monte Carlo en chaîne de Markov) avec implémentation
[Statistiques] Je vais expliquer l'échantillonnage par la méthode de Monte Carlo en chaîne de Markov (MCMC) avec animation.
Comment fonctionnent les classes python et les méthodes magiques.
Méthode de Monte Carlo