network

community

##set_network

Description

L'action community est l'outil de détective ultime pour vos données relationnelles . Elle permet de segmenter un graphe en groupes de nœuds (communautés) plus densément connectés entre eux qu'avec le reste du réseau. C'est un peu comme essayer de deviner qui fait partie de la même famille lors d'un mariage géant en regardant simplement qui discute avec qui. Elle supporte des algorithmes célèbres comme LouvainAlgorithme de détection de communautés (proc NETWORK) optimisant la modularité d'un graphe. Il regroupe les nœuds en clusters denses de manière itérative pour révéler la structure hiérarchique. ou la propagation de labels, tout en gérant des contraintes de taille via des approches récursives.

Syntaxe Officielle
network.community /
algorithm="LOUVAIN" | "LABELPROPAGATION"
deterministic=True | False
direction="DIRECTED" | "UNDIRECTED"
links={name="table_des_liens"}
nodes={name="table_des_noeuds"}
outNodes={name="table_de_sortie_noeuds"}
resolutionList={valeur1, valeur2...}
recursive={maxCommSize=entier, maxDiameter=entier}

Paramètres Clés

Nom du paramètre Description
algorithm Définit la méthode de calcul. 'LOUVAIN' (par défaut) est excellent pour maximiser la modularité, tandis que 'LABELPROPAGATION' est souvent plus rapide sur de très grands réseaux .
resolutionList Une liste de coefficients pour contrôler la granularité. Plus la valeur est élevée, plus vous obtiendrez de petites communautés (on zoome sur les détails) .
recursive Permet de redécouper les communautés trop grandes selon des critères de taille (maxCommSize) ou de diamètre (maxDiameter) .
outNodes La table de sortie contenant l'assignation de chaque nœud à sa communauté .
tolerance Le seuil d'arrêt pour l'optimisation. Si le gain est inférieur à cette valeur, l'algorithme s'arrête de chercher .

Préparation des données

Création d'un réseau social imaginaire

On crée un petit réseau de relations (liens) pour tester la détection de groupes.

1DATA casuser.liens_amis; INPUT from $ to $; DATALINES; Luc Marie Luc Jean Marie Jean Alice Bob Alice Julie Bob Julie Luc Alice ; RUN;

Exemples d'utilisation

Détection de base (Louvain)

Utilisation de l'algorithme par défaut pour identifier les groupes naturels.

1PROC CAS; network.community / links={name='liens_amis'} outNodes={name='comm_out', replace=true}; RUN; QUIT; PROC PRINT DATA=casuser.comm_out; RUN;
Résultat Attendu :
Une table listant chaque individu avec un identifiant de communauté (community).
Multi-résolution et Découpage Récursif

On force l'algorithme à créer des communautés de 2 personnes maximum en utilisant une approche récursive et une résolution spécifique.

1PROC CAS; network.community / algorithm='LOUVAIN' direction='UNDIRECTED' links={name='liens_amis'} resolutionList={0.5, 1.2} recursive={maxCommSize=2} outNodes={name='comm_detail', replace=true} outLevel={name='comm_levels', replace=true}; RUN; QUIT;
Résultat Attendu :
Deux tables : 'comm_detail' pour le résultat final et 'comm_levels' pour voir l'évolution des groupes selon les niveaux de résolution.