nodeSimilarity
Description
L'action nodeSimilarity calcule des mesures de similitude entre les nœuds d'un graphe en se basant sur sa structure topologique. Elle est particulièrement utile pour la prédiction de liens, les systèmes de recommandation ou l'identification d'entités redondantes. Vous pouvez calculer des indices classiques (Jaccard, Cosine, Dice) ou des similitudes basées sur des vecteurs latents (embeddings). C'est un peu comme essayer de deviner qui sera le prochain 'ami' de votre nœud en regardant ses fréquentations actuelles !
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| adamicAdar | Si positionné sur True, calcule la mesure de similitude d'Adamic-Adar, qui pondère davantage les voisins communs ayant un faible degré. |
| jaccard | Calcule l'indice de Jaccard (par défaut à True), défini comme la taille de l'intersection des voisinages divisée par la taille de leur union. |
| vector | Active le calcul de similitude vectorielle basé sur des techniques d'apprentissage profond pour graphes (embeddings). |
| nDimensions | Spécifie le nombre de dimensions pour les vecteurs de nœuds (embeddings). Par défaut 100. |
| topk | Limite la sortie aux K paires de nœuds ayant les scores de similitude les plus élevés. |
| outSimilarity | Désigne la table CAS de sortie qui contiendra les scores de similitude pour chaque paire de nœuds. |
Préparation des données
Création d'un réseau de relations simples
Ce code génère une table de liens représentant un petit réseau social pour tester les similitudes.
| 1 | DATA mycas.links; INPUT from $ to $; DATALINES; Anna Bob Anna Clara Bob Anna Bob Clara Bob David Clara Anna Clara Bob David Bob David Elsa ; RUN; |
Exemples d'utilisation
Calcul de similitude de Jaccard
Calcule les scores de Jaccard pour toutes les paires de nœuds du réseau.
| 1 | PROC CAS; network.nodeSimilarity / links={name="links"} jaccard=true outSimilarity={name="jaccard_out", replace=true}; RUN; QUIT; |
Résultat Attendu :
Similitude vectorielle avec Embeddings et Top-K
Génère des embeddings de dimension 10 et renvoie les 5 paires les plus similaires.
| 1 | PROC CAS; network.nodeSimilarity / links={name="links"} vector=true nDimensions=10 topk=5 orderBy="VECTOR" outSimilarity={name="vector_top5", replace=true} outNodes={name="node_vectors", replace=true}; RUN; QUIT; |