Décrire l'évolution d'un système où l'état courant détermine les probabilités de se trouver dans un autre état après changement.
Exemples :
Chaîne de Markov = états + transitions.
Exemple : état = progression dans un jeu
États = jouer au niveau 1, 2, contre le boss final (B)
avoir perdu (P)
avoir terminé le jeu (T)
Probabilités de transition ?
$$\begin{pmatrix} 0.0 & 0.7 & 0.0 & 0.3 & 0.0\\ 0.0 & 0.0 & 0.5 & 0.5 & 0.0\\ 0.0 & 0.0 & 0.0 & 0.8 & 0.2\\ 0.0 & 0.0 & 0.0 & 1.0 & 0.0\\ 0.0 & 0.0 & 0.0 & 0.0 & 1.0 \end{pmatrix}$$
import pydtmc as m
P = [
[0.0, 0.7, 0.0, 0.3, 0.0],
[0.0, 0.0, 0.5, 0.5, 0.0],
[0.0, 0.0, 0.0, 0.8, 0.2],
[0.0, 0.0, 0.0, 1.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 1.0]]
mc = m.MarkovChain(P,
['1', '2', 'B', 'P', 'T'])
$$\left[ \begin{array}{ccc|cc} \color{red}{0.0} & \color{red}{0.7} & \color{red}{0.0} & 0.3 & 0.0 \\ \color{red}{0.0} & \color{red}{0.0} & \color{red}{0.5} & 0.5 & 0.0 \\ \color{red}{0.0} & \color{red}{0.0} & \color{red}{0.0} & 0.8 & 0.2 \\ \hline 0.0 & 0.0 & 0.0 & 1.0 & 0.0 \\ 0.0 & 0.0 & 0.0 & 0.0 & 1.0 \end{array} \right]$$
États "transients" en haut à gauche: matrice $Q$.
États "absorbants" en bas à droite.
$$N = (I - Q)^{-1}$$
$N[i,j]$ = nombre de passages moyen par l'état $j$
si on commence en $i$
Sur l'exemple, [code: mc.fundamental_matrix
]
$$N = \begin{pmatrix} 1 & 0.7 & 0.35 \\ 0 & 1.0 & 0.50 \\ 0 & 0.0 & 1.00 \end{pmatrix}$$
$$\left[ \begin{array}{ccc|cc} 0.0 & 0.7 & 0.0 & \color{green}{0.3} & \color{green}{0.0} \\ 0.0 & 0.0 & 0.5 & \color{green}{0.5} & \color{green}{0.0} \\ 0.0 & 0.0 & 0.0 & \color{green}{0.8} & \color{green}{0.2} \\ \hline 0.0 & 0.0 & 0.0 & 1.0 & 0.0 \\ 0.0 & 0.0 & 0.0 & 0.0 & 1.0 \end{array} \right]$$
Temps moyen avant état absorbant depuis $i$ =
somme des éléments de la $i^{eme}$ ligne de $N$.
Probabilité d'être absorbé en $j$ depuis $i$ =
coefficient $(i,j)$ de $B = N R$.
> mc.absorption_times
array([2.05, 1.5 , 1. ])
Environ 2 "temps" avant un état absorbant depuis le niveau 1. "1.5" depuis le niveau 2, et 1 depuis le 3.
> mc.absorption_probabilities
array([[0.93, 0.9 , 0.8 ],
[0.07, 0.1 , 0.2 ]])
Probabilité autour de 0.9 de perdre si on commence au niveau 1 ou 2. 0.8 / 0.2 logique (pourquoi ?)
Exemple : état = niveau à Tetris (vitesse...)
Deux possibilités :
Supposons 4 états (= 4 niveaux).
Chemin possible : 1, 2, 3, 4, 1, 2, 1
Probabilités de transition ?
$$\begin{pmatrix} 0.3 & 0.7 & 0.0 & 0.0\\ 0.4 & 0.0 & 0.6 & 0.0\\ 0.6 & 0.0 & 0.0 & 0.4\\ 0.8 & 0.0 & 0.0 & 0.2 \end{pmatrix}$$
import pydtmc as m
P = [
[0.3, 0.7, 0.0, 0.0],
[0.4, 0.0, 0.6, 0.0],
[0.6, 0.0, 0.0, 0.4],
[0.8, 0.0, 0.0, 0.2]]
mc = m.MarkovChain(P,
['1','2','3','4'])
$P^n$ = matrice des transitions en $n$ étapes.
$P$ est régulière si $\exists n / P^n > 0$
# Test :
> mc.is_ergodic
True
Si $P$ est régulière, $\exists ! w / w P = w$
$w$ = distribution stationnaire.
$\propto$ temps moyen passé dans chaque état.
> mc.stationary_distributions
[array([0.42918455, 0.30042918, 0.18025751, 0.09012876])]
Temps moyen depuis $i$ avant de revenir en $i$ ( = $r_i$) ?
> mc.recurrence_times
array([ 2.33, 3.32857143, 5.54761905, 11.0952381 ])
$r_i = 1 / w_i$
Temps moyen pour arriver à $j$ en partant de $i$ ?
> mc.mean_first_passage_times_between(['1'], ['4'])
12.619047619047619
Astuce = considérer 4 comme absorbant.
$\rightarrow$ Retour au cas précédent.
m.plot_walk(mc, 20, '1', plot_type='sequence')
On vous donne une (longue) suite d'états.
Déterminer une chaîne y correspondant.
mc_est = mc.fit_walk(
'map',
['1','2','3','4'],
mc.walk(100, '1'))
On vous donne une suite d'états.
A-t-elle été générée par la chaîne $mc$ ?
> mc.walk_probability(
['1','2','3','1','2','3','1','2','1','2'])
0.012446783999999994
> mc.walk_probability(
['1','1','1','2','3','4','4','4','4','4'])
2.4191999999999995e-05
Application : détection d'anomalies.
Le chat "markovien" Gribouille ne réalise que 3 actions dans sa journée : dormir, manger et jouer.
Pour sortir de prison sous caution, Albert doit
payer 8€. Il n'a que 3€ sur lui.
Un gardien lui propose un jeu (en plusieurs tours) :
Probabilité qu'Albert sorte de prison ainsi ?
Stratégie optimale ?
Je n'ai pas parlé de...
Ces trois situations sont évidemment intéressantes mais nécessitent + de rappels mathématiques. Voir par exemple Probabilités et processus stochastiques (Yves Caumel 2011).