May 20, 2024

Wiki

Python

Aide

edit SideBar

Search

Pagerank


Applications des chaînes de Markov...

À la théorie de l'information

On peut considérer un texte dans une langue donnée comme une chaîne de Markov où la probabilité d'occurrence d'une lettre dépend :

  • du caractère précédent (chaîne dite du premier ordre),
  • des deux caractères précédents (chaîne dite du deuxième ordre),
  • etc.

Par une étude statistique, on obtient les probabilités de transitions.

On simule ainsi les différentes langues, et Shannon (1951) a utilisé ce modèle pour définir la quantité d'information qu'elle véhicule.

On peut, par exemple, prévoir l'évolution d'un système, en reconnaissance vocale par exemple, sans avoir à décrire totalement la structure complète d'une phrase.

Les applications des processus de Markov sont nombreuses, notamment en informatique. Citons, par exemple, leur utilisation :

  • en compression d'images, et plus généralement de signaux,
  • chez google : l'indice de popularité d'une page Web dans ce moteur est défini par une chaîne de Markov. Le pagerank est en effet, en première approximation, la probabilité d'être dans cette page à partir d'un état quelconque de la chaîne de Markov représentant le Web...

Le PageRank

Présentation

Derrière le fonctionnement du plus célèbre des moteurs de recherche se cache un gros morceau d'algèbre linéaire. En effet, le fonctionnement de Google repose sur le principe suivant...

  1. On attribue au web une structure de graphe, dont les pages constituent les sommets, et les liens entre les pages les arêtes.
  2. On définit à partir de cette structure une valeur mesurant l'importance relative de chaque page. On espère que cette valeur soit représentative de l'importance réelle de la page au regard de l'information qu'elle propose à l'internaute.

Mais cette définition n'est pas explicite. Il faut, pour connaître l'importance relatives de chacune des pages, résoudre un système linéaire.

Définition : On appellera vecteur PageRank un vecteur générateur de l'ensemble des solutions.

Structure de graphe

Soit $\{p_1, ..., p_n\}$ un ensemble de $n$ pages web, reliées entre elles par des liens du type $i \rightarrow j$. On note $l_i$ le nombre de liens émis de la page $i$. On peut interpréter cette structure comme un graphe du web.

En faisant quelques tests, on peut facilement se rendre compte que définir l'importance des pages n'est pas évident : les définitions les plus simples présentent de nombreux points faibles, et ne permettent pas d'attribuer clairement, à chaque page, une valeur représentative de son contenu.

Google apparaît

Une méthode de classement des pages par ordre d'importance qui s'approche assez bien de la réalité, et qui est celle utilisée par Google, fait appel à une définition récursive de la valeur "importance d'une page".

Le principe peut être résumé ainsi :

Une page $i$ est importante si beaucoup de pages importantes pointent vers $i$.

Ce qui amène à définir l'importance $\mu_i$ d'une page par : $\mu_i = \sum_{j \rightarrow i} \frac{\mu_j}{l_j}$

Mise en équation

En notant $A$ la matrice de terme général $a_{i,j} = \left\{ \begin{array}{ll} \mu_i & \textrm{ si } j \rightarrow i \\ 0 & \textrm{ sinon } \end{array}\right.$ et $\mu = (\mu_1, ..., \mu_n)^T$, il vient que la détermination des $\mu_i$ est équivalente à la résolution du système $A \mu = \mu$.

On remarque que la matrice $A$ est stochastique.

En faisant l'hypothèse que $\forall i, l_i \geqslant 1$ (quitte à faire pointer vers elles-mêmes les pages qui n'émettent pas de lien), on peut interpréter le coefficient $a_{ij}$ comme la probabilité de passer de la page $j$ à la page $i$, en suivant un des $l_j$ liens au hasard...

Marche aléatoire sur le web

À partir d'un vecteur stochastique $X$ (i.e. à coefficients positifs, dont la somme vaut 1) donné, effectuons un pas dans la marche aléatoire : on part de la page $j$ avec une probabilité $x_j$, puis on suit le lien $j \rightarrow i$ avec la probabilité $a_{ij}$.

La probabilité d'arriver sur la page $i$ en suivant ce chemin vaut dont $x_j a_{ij}$. Au total, la probabilité d'arriver sur la page $i$ en suivant n'importe quel chemin est $y_i = \sum_{j=1}^n x_j a_{ij}$.

On peut donc associer à un pas dans la marche aléatoire l'application linéaire $X \rightarrow AX$. Les propriétés de stochasticité de la matrice nous permettent d'affirmer :

  • l'existence et l'unicité (à la multiplication par un scalaire près) d'une mesure invariante associée à la matrice $A$, i.e. d'un vecteur propre tel que $X = AX$,
  • et la convergence d'une suite définie par la donnée d'un vecteur $X_0$, et $\forall n, X_{n+1} = A X_n$ vers cette mesure invariante.

Le surfeur aléatoire

Cependant, le modèle proposé a un grave défaut : imaginons que la page $n$ reçoive mais n'émette pas de lien (hormis celui qui pointe vers elle-même, comme convenu plus haut). Alors notre surfeur aléatoire arrivera tôt ou tard sur la page $n$, sans jamais pouvoir en sortir !

La seule mesure invariante est donc le vecteur $(0,...,0,1)^T$, qui ne reflète certainement pas l'importance relative d'une page...

Ainsi, Google utilise un modèle plus élaboré pour déterminer l'importance relative des pages. Avec $\epsilon = \left( \frac{1}{n}, ..., \frac{1}{n} \right)^T$, on définit désormais un pas dans la marche aléatoire par la fonction $T : X \rightarrow c \epsilon + (1-c)AX$$c \in $]0,1[.

Le surfeur aléatoire ainsi modélisé ne peut alors plus rester bloqué sur une page. Le vecteur stochastique $\epsilon$ correspondant à l'équiprobabilité, à chaque pas dans la marche aléatoire on a intégré la probabilité $c$ que le surfeur quitte la page et redémarre sur une autre page au hasard.

Signalons de plus que la fonction $T$ est continue et contractante (de rapport $1-c$), le problème du point fixe de Cauchy nous permet donc d'affirmer l'existence et l'unicité d'un point fixe $\mu$ tel que $T(\mu) = \mu$.

Quel que soit le vecteur stochastique $X_0$ que nous choisissons comme point de départ, la suite définie pour $n \geqslant 0$ par $X_{n+1} \geqslant X_n$ converge vers cet unique point fixe.

Le vecteur PageRank

Pour des raisons que nous ne développerons pas ici, il s'avère que les coordonnées de ce point fixe $\mu = (\mu_1, ..., \mu_n)^T$, que l'on définit comme étant le vecteur PageRank, reflètent bien l'importance relative des pages.

En particulier, il faut prêter attention au choix du paramètre $c$, qui peut par exemple être pris égal à 0,15, compte tenu du fait que $\frac{1}{c}$ représente le nombre moyen de liens parcourus par le surfeur avant de redémarrer sur une nouvelle page au hasard, et que 7 est - paraît-il - environ le nombre de pages parcourues par un internaute avant de redémarrer.

Remarques pratiques

  • Le théorème du point fixe nous fournit, de plus, une estimation de l'écart entre $X_n$ et $\mu$ (il s'agit du test de Runge) : on a, en posant $k=1-c$, $\forall n \geqslant 1, |X_n - \mu | \leqslant \frac{k}{1-k} | X_n - X_{n-1} |$
  • Plutôt que de programmer directement la suite introduite précédemment, il peut être intéressant d'utiliser des matrices creuses, obtenues en ne considérant que les termes non-nuls dans la matrice $A$.
  • Un calcul efficace de $T(X) = c \epsilon + (1-c) AX$ peut se faire par l'algorithme suivant :
  Entrée : $X \in \mathbb{R}^n$
Sortie : $Y = T(X)$
  Initialisation : 
      pour $i$ de 1 à $n$,
          $Y_i \leftarrow \frac{c}{n}$
  pour $j$ de 1 à $n$,
      pour $i \in L_j$,
          $Y_i \leftarrow Y_i + \frac{1-c}{l_j} X_j$
  retourner $Y$
La complexité de cet algorithme est optimale, car on traite chaque lien $j \rightarrow i$ exactement une fois. Ainsi, le nombre d'opérations est proportionnel à $\sum_{j=1}^n l_j$ : si les pages émettent en moyenne $m = \frac{1}{n} \sum{j=1}^n l_j$ liens, alors on effectue $nm$ opérations au total, contre $n^2$ pour une matrice dense.

Travaux pratiques

Réfléchir à la mise en oeuvre d'un mini moteur de recherche sur un mini-web.

On pourra créer $n$ pages sans contenu, si ce n'est des hyperliens, tirés aléatoirement, des unes vers les autres.

Page Actions

Recent Changes

Group & Page

Back Links