projection
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 .
Paramètres Clés
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.
| 1 | DATA mycas.achats; |
| 2 | LENGTH from $10 to $10; |
| 3 | INPUT from $ to $ weight; |
| 4 | DATALINES; |
| 5 | Alice ProduitA 1 |
| 6 | Bob ProduitA 1 |
| 7 | Bob ProduitB 1 |
| 8 | Charlie ProduitB 1 |
| 9 | ; |
| 10 | RUN; |
Exemples d'utilisation
Projection simple des utilisateurs
Cet exemple illustre une projection basique pour relier les utilisateurs ayant acheté le même produit.
| 1 | PROC CAS; |
| 2 | network.projection / |
| 3 | links={name="achats"} |
| 4 | outProjectionLinks={name="liens_projetes", replace=true} |
| 5 | outProjectionNodes={name="noeuds_projetes", replace=true}; |
| 6 | RUN; |
| 7 | QUIT; |
Résultat Attendu :
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).
| 1 | PROC 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}; |
| 11 | RUN; |
| 12 | QUIT; |