network

projection

##set_network

Description

L'action 'projection' permet de calculer la projection d'un réseau multipartite pour obtenir un réseau unipartite. Imaginez un réseau où des utilisateurs sont liés à des produits qu'ils ont achetés. Cette action permet de créer un tout nouveau réseau reliant uniquement les utilisateurs entre eux, en fonction des produits qu'ils ont en commun ! C'est un tour de magie mathématique très pratique pour les moteurs de recommandation (et qui n'aime pas qu'on lui suggère de bons achats ?). Vous pouvez même spécifier des méthodes d'orientation comme CONVERGING ou DIVERGING via le paramètre directedMethod .

Syntaxe Officielle
proc cas;
network.projection /
links={name="table_liens"}
jaccard=TRUE
outProjectionLinks={name="out_links", replace=TRUE}
outProjectionNodes={name="out_nodes", replace=TRUE};
run;
quit;

Paramètres Clés

Nom du paramètre Description
links Spécifie la table de données d'entrée contenant les informations sur les liens du graphe. C'est ici que la magie commence ! links
jaccard Si défini sur True, calcule la similarité de Jaccard comme attribut de lien dans la table de sortie. Utile pour évaluer le taux de recouvrement entre vos nœuds projetés. jaccard
cosine Si défini sur True, calcule la similarité cosinus comme attribut de lien de sortie. Idéal pour voir si deux nœuds pointent dans la même direction. cosine
outProjectionLinks Spécifie la table de sortie pour stocker les liens du graphe projeté. outProjectionLinks
direction Spécifie s'il faut considérer le graphe d'entrée comme orienté ('DIRECTED') ou non orienté ('UNDIRECTED'). direction

Préparation des données

Création d'un graphe d'achats utilisateurs-produits

Ce code crée une table de liens représentant un graphe biparti typique : des utilisateurs qui achètent différents produits.

1DATA mycas.achats;
2 LENGTH from $10 to $10;
3 INPUT from $ to $ weight;
4 DATALINES;
5Alice ProduitA 1
6Bob ProduitA 1
7Bob ProduitB 1
8Charlie ProduitB 1
9;
10RUN;

Exemples d'utilisation

Projection simple des utilisateurs

Cet exemple illustre une projection basique pour relier les utilisateurs ayant acheté le même produit.

1PROC CAS;
2 network.projection /
3 links={name="achats"}
4 outProjectionLinks={name="liens_projetes", replace=true}
5 outProjectionNodes={name="noeuds_projetes", replace=true};
6RUN;
7QUIT;
Résultat Attendu :
Les tables 'liens_projetes' et 'noeuds_projetes' seront créées en mémoire. Vous constaterez qu'Alice est connectée à Bob (via ProduitA) et que Bob est lié à Charlie (via ProduitB).
Projection avancée avec métriques de similarité

Dans cet exemple un peu plus costaud, on projette le graphe en spécifiant qu'il n'est pas orienté, et on en profite pour calculer plusieurs métriques de similarité puissantes (Jaccard, Cosinus et les voisins communs).

1PROC CAS;
2 network.projection /
3 direction="UNDIRECTED"
4 jaccard=true
5 cosine=true
6 commonNeighbors=true
7 links={name="achats"}
8 linksVar={from="from", to="to", weight="weight"}
9 outProjectionLinks={name="liens_projetes_metriques", replace=true}
10 outProjectionNodes={name="noeuds_projetes_metriques", replace=true};
11RUN;
12QUIT;
Résultat Attendu :
La table de sortie 'liens_projetes_metriques' contiendra des informations enrichies avec les scores jaccard, cosinus et le nombre de voisins en commun pour chaque paire d'utilisateurs connectée. Pratique pour segmenter finement sa clientèle !