Moteurs de recherche (Master 2) TP 2 – Initiation au PageRank (suite) Ce sujet fait suite au TP1, et nous permet d’aborder le cas de graphes plus « réalistes » que ceux qui ont été vus jusqu’ici. Ceci nous permet d’aboutir à la dernière version académique connue de l’algorithme de PageRank. 1 Cas des graphes périodiques Le cas d’un graphe dont la matrice est périodique, autrement dit d’un graphe dont le pgcd de la longueur des circuits est supérieur à 1, se résoud assez facilement. En terme de surfeur aléatoire, il suffit en fait de supposer qu’à chaque pas, le surfeur peut décider avec une probabilité quelconque (non nulle) de rester sur la page actuelle. Exercice 1 1. En quoi cette modification résoud-elle le problème ? Modifiez l’expression vectorielle du PageRank pour tenir compte de ce cas. Jugez-vous probable que ce cas se produise en pratique ? 2. Corrigez l’algorithme originel (cf. TP1) en conséquence, puis testez la nouvelle version sur un graphe fortement connexe à matrice périodique. 3. Cette modification apportera-t-elle une amélioration dans le cas où le graphe n’est pas fortement connexe ? Le vérifier par l’exemple. 2 Cas des matrices sous-stochastiques Un graphe décrivant les liens entre des pages web réelles possède la plupart du temps des puits correspondant à des pages sans liens vers d’autres pages. La particularité des matrices d’adjacences de graphes possédant des puits est de ne pas être stochastiques : en effet, les lignes de la matrice correspondant aux sommets de degré sortant nul ne contiennent que des 0, la somme de leurs éléments ne vaut donc évidemment pas 1. Il s’agit d’un cas particulier de matrices sous-stochastiques. Nous avons constaté au TP précédent que l’algorithme d’origine ne permet pas de traiter le cas de ce type de graphes. Puisque ces graphes apparaissent en pratique, il faut trouver un moyen de calculer malgré tout un PageRank significatif. 1 2.1 Première tentative : renormalisation Une première possibilité pour tenter de corriger les résultats obtenus à la question avec l’algorithme d’origine (cf. TP1) est d’appliquer une correction appelée renormalisation à chaque itération de l’algorithme. Celle-ci consiste à diviser à chaque étape Rn+1 par sa norme, ce qui assure qu’à chaque étape, la somme des éléments de Rn+1 vaut 1, et donc que Rn+1 représente une distribution de probabilité. Exercice 2 1. Modifiez l’algorithme originel en incluant l’étape de renormalisation et implémentez votre modification. 2. On vous propose les graphes suivants : 1. V = {1, 2, 3}, E = {(1, 1), (1, 2), (2, 3)} 2. V = {1, 2, 3}, E = {(1, 1), (1, 2), (1, 3), (2, 2), (2, 3)} 3. V = {1, 2, 3}, E = {(1, 2), (1, 3), (2, 3)} 4. V = {1, 2, 3, 4}, E = {(1, 2), (1, 3), (2, 2), (2, 4), (3, 3), (3, 4)} 5. V = {1, 2, 3, 4}, E = {(1, 2), (1, 3), (2, 2), (2, 4), (3, 3)} Testez l’algorithme avec renormalisation sur ces graphes, et comparez les résultats avec ceux de l’algorithme originel. 3. Relevez également les résultats obtenus avec différentes distributions initiales (paramètre Z). Quelle caractéristique de ce vecteur est d’après vous essentielle pour pouvoir espérer un calcul significatif ? 4. Pouvez-vous expliquer ces différents résultats ? Sont-ils entièrement satisfaisants ? Que penser du sommet n°3 du graphe 5 ? 2.2 Seconde tentative : complétion stochastique Une autre idée naturelle pour régler le problème des sommets sans successeurs est la suivante : en gardant l’idée d’un surfeur aléatoire, on peut supposer qu’un utilisateur atteignant une page sans lien sortant n’a d’autre choix que de choisir une nouvelle page au hasard1 . Concrètement, on va chercher à « compléter » la matrice d’adjacence du graphe considéré en remplaçant chaque ligne correspondant à un puits (qui ne contient donc que des 0) par la distribution initiale Z (que l’on choisit en général uniforme). On obtient l’algorithme 1 de PageRank par complétion stochastique. Exercice 3 1. Testez l’algorithme de PageRank par complétion stochastique sur les graphes fournis à l’exercice précédent. 2. Quelles différences constatez-vous ? Quelle caractéristique des graphes pose encore problème ? 3. Pouvez-vous imaginer d’autres moyens d’effectuer une complétion stochastique ? 1 Une approche récente, plus réaliste, consiste à modéliser la touche « retour » du navigateur. Consulter la bibliographie du cours pour plus de détails. 2 Algorithme 1: PageRank : modèle par complétion stochastique Data : Une matrice A, une distribution de probabilité Z et un réel ε. Result : Le vecteur propre principal de probabilité de AT avec une précision ε. début R0 = Z répéter Rn+1 = AT Rn µ = kRnk1 − kRn+1k1 Rn+1 = Rn+1 + µZ δ = kRn+1 − Rnk1 jusqu’à δ < ε fin 3 Cas des matrices non irréductibles Pour régler le problème des graphes non fortement connexes (à matrices non irréductibles), Brin et Page ont proposé une utilisation différente de la distribution initiale Z (appelée dans ce contexte distribution de « zap »). Cette fois, depuis n’importe quelle page, le surfeur choisit avec une probabilité d fixée de suivre l’un des liens sortants, et dans tous les autres cas (probabilité 1 − d) de ne suivre aucun lien mais plutôt de zapper vers une page quelconque suivant la distribution de probabilité Z. On obtient l’algorithme 2 de PageRank avec facteur zap. On peut également combiner cette approche avec l’algorithme par complétion stochastique, et obtenir l’algorithme 3 dit « µ-compensé ». Exercice 4 1. Comment peut-on interpréter l’algorithme 3 en terme de surfeur aléatoire ? 2. Implémentez ces deux algorithmes, puis testez-les sur plusieurs graphes, en prenant pour Z la distribution uniforme et pour d la valeur 0, 85. 3. Faites ensuite varier Z et d. 4. Dans le cas de l’algorithme 2, est-il correct de dire que le résultat est une distribution de probabilité ? Comment cela se fait-il ? 5. Comparez attentivement les résultats obtenus. Que remarquez-vous ? Pouvez-vous proposer un moyen plus simple d’obtenir le résultat de l’algorithme 3 à partir de celui de l’algorithme 2 ? 3 Algorithme 2: PageRank avec facteur zap Data : Une matrice A, une distribution de probabilité Z, un coefficient de zap d ∈]0, 1[ et un réel ε. Result : Le vecteur propre principal de probabilité de AT avec une précision ε. début R0 = Z répéter Rn+1 = d.AT Rn + (1 − d).Z δ = kRn+1 − Rnk1 jusqu’à δ < ε fin Algorithme 3: PageRank µ-compensé Data : Une matrice A, une distribution de probabilité Z, un coefficient de zap d ∈]0, 1[ et un réel ε. Result : Le vecteur propre principal de probabilité de AT avec une précision ε. début R0 = Z répéter Rn+1 = d.AT Rn µ = kRnk1 − kRn+1k1 Rn+1 = Rn+1 + µZ δ = kRn+1 − Rnk1 jusqu’à δ < ε fin 4 Conclusion Nous avons passé en revue plusieurs améliorations de l’algorithme de PageRank de base vu au TP1, permettant de traiter des graphes plus réalistes. Cependant, pour pouvoir faire des observations plus poussées et comparer ces différents algorithmes, il serait bon de travailler avec des graphes de taille plus importante, si possible issus de véritables parcours du Web. 4