Échantillonnage préférentiel

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

L'échantillonnage préférentiel, en anglais importance sampling, est une méthode de réduction de la variance qui peut être utilisée dans la méthode de Monte-Carlo. L'idée sous-jacente à l'échantillonnage préférentiel, EP dans la suite, est que certaines valeurs prises par une variable aléatoire dans une simulation ont plus d'effet que d'autres sur l'estimateur recherché. Si ces valeurs importantes se réalisent plus souvent, la variance de notre estimateur peut être réduite.

Par conséquent la méthode de l'EP est de choisir une distribution qui « encourage » les valeurs importantes. L'utilisation d'une distribution biaisée conduira à un estimateur biaisé si nous l'appliquons directement aux simulations. Cependant, les différentes simulations sont pondérées afin de corriger ce biais ; l'estimateur EP est alors sans biais. Le poids qui est donné à chaque simulation est le ratio de vraisemblance, qui est la densité de Radon-Nikodym de la vraie distribution par rapport à la distribution biaisée.

Le point fondamental dans l'implémentation d'une simulation utilisant l'EP est le choix de la distribution biaisée. Choisir ou créer une bonne distribution biaisée est l'art des EP. L'avantage peut alors être une énorme économie de temps de calculs alors que l'inconvénient pour une mauvaise distribution peut être des calculs plus longs qu'une simple simulation de Monte-Carlo.

Théorie[modifier | modifier le code]

En Monte-Carlo[modifier | modifier le code]

Article détaillé : Méthode de Monte-Carlo.

On souhaite estimer une quantité G, qui s'exprime sous la forme d'une intégrale :

G = \int_a^b g(x) \,\mbox{d}x

On considère ici une intégration en dimension 1, mais on peut généraliser à une dimension quelconque.

Le principe de base des méthodes de Monte-Carlo est de voir l'intégrale précédente comme

G = (b-a)\int_a^b g(x) f_X(x) \,\mbox{d}x = (b-a)\,\mathbb{E}(g(X))

X est une variable aléatoire uniformément distribuée sur [a;b] et f_X(\cdot)=\frac{1}{b-a} sa densité.

Si on dispose d'un échantillon (x_1, x_2, \cdots, x_N), identiquement et indépendamment distribué (i.i.d.) selon U([a;b]), on peut estimer G par :

\hat{g}_N = \frac{(b-a)}{N} \sum_{i=1}^N g(x_i)

Il s'agit d'un estimateur de G non-biaisé (c'est-à-dire que \mathbb{E}( \hat{g}_N)= G) et consistant (d'après la loi des grands nombres). Sa variance est :

\sigma^2_{\hat{g}_N} = \frac{(b-a)^2\sigma^2_g}{N}

avec \sigma^2_g la variance de la variable aléatoire g(X)

\sigma^2_g =\frac{1}{(b-a)}\int_a^b g^2(x) \,\mbox{d}x - \left(\frac{1}{b-a}\int_a^b g(x) \,\mbox{d}x\right)^2

L'échantillonnage préférentiel[modifier | modifier le code]

L'idée principale de l'échantillonnage préférentiel est de remplacer dans la simulation la densité uniforme sur [a;b] par une densité alternative (ou densité biaisée), notée f^{\ast}\,, qui tente d'imiter la fonction g. Ce faisant, on remplace les tirages uniformes, qui n'avantagent aucune région, par des tirages plus « fidèles ». Ainsi, l'échantillonnage est fait suivant l'importance de la fonction g : il est inutile de tirer dans les régions où g prend des valeurs non-significatives, pour, au contraire, se concentrer sur les régions de haute importance. On espère ainsi diminuer la variance \sigma^2_g. Autrement dit, si on se fixe un niveau d'erreur donné, l'échantillonage préférentiel permet de diminuer théoriquement le nombre de simulations N par rapport à une méthode de Monte-Carlo classique.

L'intégrale à estimer est réécrite comme :

G = \int_a^b \frac{g(x)}{f^{\ast}(x)} f^{\ast}(x) \, \mbox{d}x

ce qui revient à :

G = \mathbb{E}^{\ast} [w(X)]

où on a posé w(x)=g(x)/f^{\ast}(x) (appelé ratio de vraisemblance) et où X est simulé selon la densité f^{\ast}. Il est facile de généraliser les résultats précédents : l'estimateur de G est

\tilde{g}_N = \frac{1}{N} \sum_{i=1}^N w(x_i)

(x_1, x_2, \cdots, x_N) est un échantillon i.i.d. selon la densité f^{\ast}. La variance de l'estimateur est donnée par

\mbox{Var}^{\ast} (\tilde{g}_N) = \frac{\mbox{Var}^{\ast}[w(X)]}{N}

avec enfin

\mbox{Var}^{\ast}[w(X)] = \mbox{Var}^{\ast}\left[\frac{g(X)}{f^{\ast}(X)}\right]=\int_a^b \left[\frac{g(x)}{f^{\ast}(x)}\right]^2 f^{\ast}(x) \,\mbox{d}x - G^2

Dès lors, le problème est de se concentrer sur l'obtention d'une densité biaisée f^{\ast}\, telle que la variance de l'estimateur EP soit moindre que celle de la méthode de Monte-Carlo classique. La densité minimisant la variance (qui la rend nulle sous certaines conditions) est appelée densité biaisée optimale. Cette dernière est égale à

f^{\ast}(x) = \frac{g(x)}{\displaystyle \int_a^b g(x) \,\mbox{d}x}

mais ce choix est inopérant, car on recherche justement le dénominateur. Toutefois, on peut s'attendre à réduire la variance en choisissant une densité f^{\ast} reproduisant la fonction g.

En quasi Monte Carlo[modifier | modifier le code]

Article détaillé : Méthode de quasi-Monte-Carlo.

Pour estimer l'intégrale G = \int_a^b g(x) \,\mbox{d}x on peut également se passer de tout le formalisme probabiliste précédent. Au lieu d'utiliser des variables aléatoires, on se sert de suites à faible discrépance (suites de Sobol par exemple). En dimension 1 l'approche la plus simple est

G = \int_a^b g(x) \,\mbox{d}x \quad \simeq \quad \frac{b-a}{N}\sum_{i=1}^N g\left(a+(b-a)\frac{i}{N}\right)

De même qu'en Monte Carlo usuel, cette approximation de l'intégrale converge d'autant plus vite que la fonction g est proche d'une constante. Si g est rigoureusement constante il suffit de prendre N = 1 pour avoir l'intégrale exacte. Réduire la variance de g est par conséquent crucial ici aussi ; dans ce but, l'échantillonnage préférentiel s'utilise comme suit :

G = \int_a^b g(x) \,\mbox{d}x = \int_a^b \frac{g(x)}{f^*(x)}f^*(x) \,\mbox{d}x \quad = \quad \int_{F(a)}^{F(b)} \frac{g(F^{-1}(y))}{f^*(F^{-1}(y))} \,\mbox{d}y

où l'on a fait le changement de variable y = F(x) avec  F\, '(x)= f^*(x) > 0. Il apparaît clairement que si f^*\simeq g alors la fonction à intégrer à droite est proche de la constante 1 (de faible variance donc).

Pour faire le lien avec l'interprétation probabiliste de la section précédente, on remarque que f^* est définie à un facteur K près qui disparaît dans le quotient. On peut donc imposer que \int_a^b f^*(x)\,\mbox{d}x = 1, ce qui en fait une densité de probabilité sur [a, b]. Le changement de variable s'interprète alors naturellement comme un changement de probabilité et on a la simplification :

 \int_{F(a)}^{F(b)} \frac{g(F^{-1}(y))}{f^*(F^{-1}(y))} \,\mbox{d}y \quad =\quad \int_{0}^{1} \frac{g(F^{-1}(y))}{f^*(F^{-1}(y))} \,\mbox{d}y

Cette technique se généralise immédiatement en dimension quelconque.

Application: estimation d'une probabilité[modifier | modifier le code]

Considérons que nous voulons estimer par simulation la probabilité p_t\, d'un événement { X \ge t\ }X est une variable aléatoire de fonction de distribution F et de densité f(x)= F'(x)\,. Ce problème se ramène à la présentation générale dans le sens où il met en œuvre une intégrale à estimer. Un échantillon \left(X_i\right)_{i \in\{1,\dots,K\}} identiquement et indépendamment distribué (i.i.d.) est tiré dans cette loi. On note k_t le nombre de réalisation supérieures à t. La variable k_t est une variable aléatoire suivant une loi binomiale de paramètres K et p_t:

P(k_t = k)={K\choose k}p_t^k(1-p_t)^{K-k},\,\quad \quad k=0,1,\dots,K

ce qui signifie notamment que E(k_t) = Kp_t: la fréquence empirique k_t/K converge donc vers sa probabilité associée p_t.

L'échantillonnage préférentiel entre en jeu ici pour diminuer la variance de l'estimation Monte-Carlo de la probabilité p_t\,. En effet, p_t\, est donnée par

\begin{align}
p_t &= {E} [X \ge t]\\
&= \int (x \ge t) \frac{f(x)}{f^{\ast}(x)} f^{\ast}(x) \,dx\\
&= {E_*} [(X \ge t) w(X)]
\end{align}

où, on a encore posé

w(\cdot) \equiv \frac{f(\cdot)}{f^{\ast}(\cdot)}

La dernière égalité de l'équation précédente suggère l'estimateur de p_t suivant :

 \hat p_t = \frac{1}{K}\,\sum_{i=1}^K (X_i \ge t) w(X_i),\,\quad \quad X_i \sim  f^{\ast}

C'est un estimateur EP de p_t\, qui est sans biais. Ceci étant défini, la procédure d'estimation est de générer un échantillon i.i.d. à partir de la densité f^{\ast}\, et pour chaque réalisation dépassant t\, de calculer son poids W\,. Le résultat sera la moyenne obtenue avec K\, tirages. La variance de cet estimateur est :


\begin{align}
\mbox{Var}^{\ast} \hat p_t &= \frac{1}{K} \mbox{Var}^{\ast} [(X \ge t)w(X)]\\
&= \frac{1}{K} \mbox{Var}^{\ast} [(X \ge t)w(X)] \\
&= \frac{1}{K}\Big[{E_*}[(X \ge t)^2 w^2(X)] - p_t^2 \Big]\\
&= \frac{1}{K}\Big[{E}[(X \ge t)^2 w(X)] - p_t^2 \Big]
\end{align}

Là encore il faudra profiler au mieux la densité f^{\ast} afin de diminuer la variance.

Exemples numériques[modifier | modifier le code]

Intégration de la fonction bêta par l'usage d'une distribution triangulaire[modifier | modifier le code]

Détail de la méthode[modifier | modifier le code]

On souhaite estimer la quantité suivante:

G = \int_0^1 x^4 (1-x)^2 \,\mbox{d}x

qui se trouve être la fonction bêta de paramètre (5;3), qui vaut G = 1/105 = 0,0095238095238095. Cela correspond au cas général avec a=0, b=1 et g(x)=x^4 (1-x)^2.

integrand g(x) = x^4(1-x)^2

On simule un échantillon (y_1, \cdots, y_n) selon la loi uniforme standard (U[0;1]) pour obtenir l'estimateur Monte-Carlo classique:

\hat{g}_1 = \frac{1}{n} \sum_{i=1}^n g(y_i)

et l'estimateur de sa variance:

\hat{\sigma}^2_{g_1} = \frac{1}{n} \left[ \frac{1}{n} \sum_{i=1}^n g^2(y_i) - \hat{g}_1^2\right]

S'inspirant de la forme générale de la fonction bêta, on peut remplacer la loi uniforme standard par la loi triangulaire T(a=0,c=2/3,b=1).

Elle ressemble à un triangle basé sur le segment [0;1] et "culminant" en (2/3;2). Sa densité est

f^{\ast}(x) = \begin{cases}
                 3x & x \in [0;2/3]\\
                 6(1-x) & x \in [2/3;1]
                \end{cases}
Loi de densité f^{\ast}(x) pour l'échantillonnage préférentiel de g(x)

On simule un échantillon (z_1, z_2, \cdots, z_n) dans cette loi, par la méthode de la transformée inverse, et, en posant w(x) = g(x)/f^{\ast}(x), l'estimateur EP est donné par

\hat{g}_2 = \frac{1}{n} \sum_{i=1}^n w(z_i)

et l'estimateur de sa variance est

\hat{\sigma}^2_{g_2} = \frac{1}{n} \left[ \frac{1}{n} \sum_{i=1}^n w^2(z_i) - \hat{g}_2^2\right]

Dans le tableau, on constate que l'utilisation de l'EP permet systématiquement de réduire la variance de l'estimation par rapport à l'estimation Monte-Carlo de même taille (c'est-à-dire à n donné). On constate aussi que la variance d'estimation est proportionnelle à 1/n: en passant de n = 1000 à n = 10 000 (multiplication par 10 de la taille), on réduit d'un facteur 10 la variance.

Comparaison de la méthode Monte-Carlo et de l'échantillonnage préférentiel
Monte-Carlo classique Échantillonnage préférentiel
n estimateur biais variance estimateur biais variance
500 0,009843 -3,19E-004 1,32E-007 0,009712 -1,88E-004 2,50E-008
1000 0,009735 -2,12E-004 6,53E-008 0,009680 -1,57E-004 1,26E-008
2500 0,009628 -1,04E-004 2,60E-008 0,009576 -5,18E-005 5,36E-009
5000 0,009717 -1,93E-004 1,31E-008 0,009542 -1,83E-005 2,71E-009
10000 0,009634 -1,10E-004 6,52E-009 0,009544 -1,99E-005 1,35E-009

On espère améliorer encore les performances en considérant une densité f^\ast "plus proche" de la densité f. Le principal problème sera d'obtenir des simulations. Dans les cas les plus simples, comme la loi triangulaire, la méthode de la transformée inverse pourra suffire; dans les cas plus complexes, il faudra avoir recours à la méthode de rejet.

Intégration d'une gaussienne[modifier | modifier le code]

La difficulté d'intégration d'une telle fonction est que la variable d'intégration prend des valeurs sur \mathbb{R}. Dans ce cas, utiliser une densité de probabilité uniforme est impossible, car la probabilité d'occurrence pour x\in\mathbb{R} serait p(x) = \lim_{l\to\infty} \frac{x}{l} = 0. Or, dans une intégration Monte-Carlo brute, il n'y a pas de connaissance à priori de la forme de la fonction, et toutes les valeurs de x doivent avoir une probabilité égale. Ainsi, l'échantillonnage préférentiel est une méthode permettant d'intégrer des fonctions pour une variable d'intégration comprise entre -\infty à +\infty, lorsque la distribution employée permet elle même de fournir des valeurs dans \mathbb{R}.

Voir aussi[modifier | modifier le code]

Liens internes[modifier | modifier le code]