Application de l'algorithme PageRank à Weibo

L'idée existait depuis longtemps. En tant que professionnel du moteur de recherche, je comprends profondément l'importance de l'algorithme PageRank dans ce domaine, il s'agit d'une technologie fondamentale. Cependant, cet article ne vise pas à expliquer les principes de PageRank, mais plutôt à examiner comment cet algorithme crucial peut être appliqué sur Sina Weibo.

Les pages web transmettent leur importance par le biais des liens qui les relient. Ce principe s'applique également à Weibo, mais la situation y est plus complexe. C'est pourquoi je soutiens qu'il n'est pas nécessarie de calculer un PageRank total (impliquant tous les utilisateurs) sur la plateforme. Voici les raisons :

  1. La nature thématique des utilisateurs diffère de celle des pages web. Une page web a généralement un sujet unique, tandis qu'un utilisateur possède de multiples attributs thématiques (ou intérêts). Les intérêts d'une personne sont généralement variés.
  2. Les intérêts des utilisateurs évoluent avec le temps, contrairement à la plupart des pages web dont le sujet reste fixe après leur création (bien que leur PageRank doive être recalculé périodiquement, principalement en raison de l'évolution des liens).
  3. Outre les abonnements basés sur les intérêts, Sina Weibo comprend également des relations d'amitié réelles.

Concernant le premier point, la diversité des intérêts est évidente, comme le montrent les tags et le contenu des publications des utilisateurs. Que faire alors ? Ma proposition est de calculer le PageRank pour les utiliasteurs de Weibo au sein d'un domaine spécifique. On obtient ainsi un classement de l'influence au sein de ce domaine, ce qui est très utile : les particuliers peuvent trouver des experts, les chasseurs de têtes peuvent identifier des candidats, leur niveau d'expertise étant affiché de manière intuitive.

Pour illustrer cela, prenons l'exemple des tags. Pourquoi les utilisateurs de Weibo s'attribuent-ils des tags (contrairement à Twitter, c'est un trésor dans les données de Weibo, bien qu'environ une personne sur d'en ait) ? Deux raisons principales :

  1. Leurs intérêts personnels : cinéma, musique, archéologie, etc.
  2. Leurs domaines d'expertise : java, fouille de données, apprentissage automatique, compréhension du langage naturel, etc.

Ces tags sont définis par les utilisateurs eux-mêmes et ne sont pas toujours précis. Le PageRank est alors un excellent moyen d'évaluer ce degré de précision. Par exemple, si je me donne le tag "archéologie" comme intérêt, je suis normalement censé suivre des comptes d'actualités archéologiques ou des personnalités reconnues dans ce domaine. Sans ces abonnements, cet intérêt est discutable. De même, si je me donne le tag "réseaux complexes" mais qu'aucun de mes followers ne s'y intéresse, puis-je être considéré comme un expert ? L'expertise nécessite une reconnaissance par les pairs. C'est pourquoi, sous cet angle, le besoin d'un PageRank global n'est pas si impérieux.

Pour le deuxième point, il faut comprendre que le réseau social est dynamique et en constante évolution. Beaucoup de recherches portent sur les schémas et processus de cette évolution, ce qui n'est pas mon centre d'intérêt actuel. Quel est l'impact de cette "évolution" sur le calcul du classement ? En réalité, l'évolution d'un réseau se fait par phases, avec des changements radicaux et des périodes de stabilité relative. Lors des changements radicaux, la structure du réseau évolue beaucoup, mais le reste du temps, elle est relativement stable. Par exemple, Sina Weibo continue d'enregistrer de nouveaux utilisateurs quotidiennement et approche des 500 millions d'utilisateurs inscrits. Cependant, dans certains domaines spécifiques, la structure du réseau est déjà relativement solide : la plupart des personnes intéressées y sont déjà présentes, et la probabilité que d'autres arrivent est faible. Ainsi, le classement obtenu par le calcul du PageRank peut rester valide pendant un certain temps. Néanmoins, je recommande de recalculer périodiquement, plus fréquemment que pour les pages web classiques.

Le troisième point concerne principalement la détection de cercles sociaux, que nous n'approfondirons pas ici.

Quel outil utiliser pour le calcul ? Il existe plusieurs méthodes efficaces pour calculer le PageRank, comme des bibliothèques pour machine unique, des implémentations basées sur le modèle MapReduce ou sur Spark. Je vous présente ici un outil puissant : GraphChi. Il se targue d'être plus performant que Spark, et les solutions basées sur Hadoop ne sont pas nécessaires ici.

Après cette longue discussion sur les raisons d'appliquer PageRank à Weibo, utilisons GraphChi pour calculer le PageRank d'environ 30 millions de personnes, un calcul quasi global.

Brief utilisation de GraphChi :

  1. Télécharger GraphChi : wget http://graphchi.googlecode.com/files/graphchi_src_v0.1.7b.tar.gz
  2. Extraire l'archive : tar zxvf graphchi_src_v0.1.7b.tar.gz
  3. Entrer dans le répertoire : cd graphchi_v0.1.7b
  4. Compiler l'exemple : make example_apps/pagerank
  5. Exécuter : bin/example_apps/pagerank file your_graph_file <num_of_iterations>

Le fichier your_graph_file peut être au format :

  1. EdgeListFormat : src dst value
  2. AdjacencyListFormat : src num_neighbors dst1 dst2 dst3 dst4

Certains paramètres utiles. La commande générale est :

bin/example_apps/pagerank file GRAPH-FILE  config1 configvalue1 config2 configvalue2

Les configurations pratiques évitent de devoir tout définir en ligne de commande. Les plus courantes sont :

  • file : chemin vers le fichier de données du graphe.
  • filetype : type de stockage du graphe (edgelist ou adjacencylist).
  • execthreads : nombre de threads de calcul.
  • membudget_mb : quantité de mémoire (en Mo) pour charger les données du graphe.

Exemple :

bin/example_apps/pagerank file ../pg/part1_sort.txt 3 filetype edgelist execthreads 8 membudget_mb 4096

Une fois les données et l'outil prêts, lancez l'exécution. Examinons les résultats du PageRank pour cet échantillon aléatoire de 30 millions de personnes :

Les données présentées sont partielles et synthétisées. On peut déjà en tirer des enseignements. Par exemple, cela peut être interprété comme un classement de la qualité des followers. Dans un domaine spécifique, comme l'« apprentissage automatique », cela permet d'identifier les experts et de comparer leur niveau, ce qui est plus utile.

[Note] GraphChi actuel supporte les identifiants de nœud jusqu'à 2^31. Au-delà, le calcul n'est pas possible. Il faut donc préparer les données en conséquence.

Étiquettes: PageRank Sina Weibo GraphChi Réseaux sociaux Analyse d'influence

Publié le 18 juin à 20h40