Community Detection: CDlib

Realisé par :

CDlib est une bibliothèque python conçue pour fournir un support à l'extraction et à l'analyse des regroupements de réseaux.

Dans ce notebook, nous allons présenter certaines des principales caractéristiques de la bibliothèque et un aperçu de ses fonctionnalités.

Sommaire

  1. Installation de CDlib
  2. Community Discovery Workflow
    1. Création des graphes
    2. Algorithme(s) du Community Discovery: choix et configuration
    3. Évaluation du Clustering (Fitness functions)
    4. Évaluation du Clustering (Comparaison)
    5. Visualisation du Communauté/Statistiques
  3. Installations avancées: Pooling et Optimization
    1. Pooling
    2. Optimization
  4. Conclusions

1. Installation de CDlib 🔼

Dans un premier temps, nous devons nous assurer que CDlib est installé et fonctionne.

La bibliothèque est disponible pour python>=3.8, et sa version stable peut être installée en utilisant pip:

nous avons aussi installé networkx.

2. Community Discovery Workflow 🔼

CDlib permet d'extraire, d'analyser et de comparer les regroupements de réseaux en appliquant plusieurs approches. Workflow peut être résumé comme suit :

Dans cette section, nous allons observer comment modéliser un workflow en appliquant deux algorithmes classiques de regroupement de réseaux : Label Propagation et Leiden.

2.A Création des graphes 🔼

Dans un premier temps, nous devons définir la topologie du réseau qui sera utilisée comme terrain de jeu pour étudier les phénomènes diffusifs.

CDlib supporte networkx et igraph les structures de données.

Dans nos exemples, pour des raisons de simplicité, nous utiliserons networkx pour des graphes non orientés .

2.B Algorithme(s) du Community Discovery: choix et configuration 🔼

Après avoir défini le graphe, nous pouvons sélectionner le ou les algorithmes pour le partitionner.

Tous les algorithmes de découverte de communauté génèrent comme résultat un objet qui implémente une instance concrète du type de données Clustering.

En particulier, Louvain et Label Propagation renvoient tous deux un objet NodeClustering ayant les propriétés suivantes :

De plus, les objets de Clustering permettent également de générer une représentation JSON des résultats.

2.C Évaluation du Clustering (Fitness functions) (to top)

Après avoir obtenu un clustering de réseau, nous pouvons calculer plusieurs index sur celui-ci.

Pour un même indice, il est possible d'obtenir une représentation synthétique de ses valeurs min/max/moyenne/std.

Les scores de Fitness peuvent également être instanciés au niveau de la Library.

2.D Évaluation du Clustering (Comparaison) (to top)

Lorsque plusieurs clusters ont été calculés sur un même réseau, il est utile de mesurer leur ressemblance.

CDlib permet de le faire en exposant plusieurs scores de ressemblance de clustering, chacun d'entre eux étant adapté pour supporter un type spécifique de clustering de réseau (crisp/partition, couverture complète/partielle des nœuds).

Comme pour les fonctions de fitness, les scores de ressemblance peuvent être instanciés au niveau de la communauté et de la Library aussi.

2.E Visualisation du Communauté/Statistiques (to top)

CDlib permet de générer deux familles de tracés prédéfinis :

2.E.1 Visualisation des graphes

Une façon de visualiser les communautés identifiées sur un graphe est de colorer les nœuds du graphe en conséquence.

Cette stratégie est réalisable lorsque le réseau est suffisamment petit. Dans le cas de graphes de taille moyenne, une alternative consiste à regrouper tous les nœuds de communauté en un seul méta-nœud et à visualiser le graphe de communauté résultant :

2.E.2 Visualisations de Fitness/comparaison des communautés

Etant donné un (ou de plusieurs) regroupement(s), il peut être utile de visualiser comment une fonction de fitness donnée se répartit sur les communautés.

Pour ca on utilise les diagrammes de violon.

Un autre type de visualisation simple qui permet d'obtenir quelques aperçus des caractéristiques de la communauté est le diagramme de dispersion.

Nous pouvons facilement comparer par paire les fonctions de fitness pour un ou plusieurs clusters comme suit :

Supposons que nous voulions comparer différents regroupements sur un ensemble de partitions de vérité de base du réseau.

Afin d'obtenir un exemple plus intéressant, nous pouvons générer quelques graphes synthétiques avec des regroupements de vérité terrain plantés et effectuer le CD sur ceux-ci.
Nous pouvons facilement comparer visuellement leurs résultats comme suit :

3. Installations avancées: Pooling et Optimization (to top)

CDlib offre quelques fonctionnalités pour automatiser l'exécution de plusieurs approches CD sur un même graph.

Les fonctionnalités offertes peuvent être globalement regroupées en deux sous-classes:

3.A Pooling

Pooling permet d'empiler l'exécution de plusieurs algorithmes

Le paramètre configuration permet de définir une liste de paramètres pour chaque algorithme.
Chaque liste ne doit contenir que des instances de Parameter ou BoolParameter tuples nommés.

Parameter et Bool Parameter permettent de définir également des plages de grille, par exemple :

Une telle généralisation permet leur utilisation dans une autre fonction de Pooling : Grid Execution.

Grid Execution prend soin d'instancier un algorithme CD avec toutes les combinaisons possibles de valeurs de paramètres (produit cartésien) telles qu'exprimées par les plages passées en entrée.

3.A Optimization

Il est souvent judicieux d'exécuter plusieurs fois un algorithme de CD donné, en faisant varier ses paramètres w,r,t , afin d'identifier la configuration optimale par rapport à. un score de condition physique donné.

La façon la plus simple de le faire est d'effectuer une recherche par grille :

La recherche de grille exécutera toute la configuration possible telle qu'exprimée par les paramètres de la méthode et ne renverra que la partition optimale w.r.t. la fonction de fitness spécifiée (modularité ER dans notre exemple) et la fonction d'agrégation (nous voulons maximiser le score de fitness).

En effet, une telle stratégie pourrait être coûteuse.
Pour cette raison, CDlib implémente également une stratégie d'optimisation de la recherche aléatoire qui réduit le nombre d'instanciations de méthodes sur les grilles de configuration (en le contrôlant via la valeur du paramètre instance).

Enfin, on peut penser à combiner pooling et optimisation pour n'obtenir que les résultats optimaux pour tous les algorithmes que l'on souhaite appliquer à notre graphe.

Dans CDlib nous pouvons le faire facilement comme suit :

4. Conclusions (to top)

Dans ce notebook, nous avons présenté les fonctionnalités de base offertes par CDlib.