Classifieur par voisinage relationnel
Un modèle relationnel part de l'idée que le comportement des nœuds est corrélé : des nœuds connectés ont tendance à appartenir à la même classe. Le classifieur par voisinage relationnel, en particulier, prédit la classe d’un nœud à partir de ses nœuds voisins et des arêtes adjacentes.
Le jeu de données transfers contient des transactions entre différents comptes. Les données account_info indiquent lesquels de ces comptes sont des « money mules ». En revanche, on ne sait pas si le compte "I41" en est un. Prédisez la propension du compte "I41" à être une money mule à l’aide d’un classifieur par voisinage relationnel.
Cet exercice fait partie du cours
Détection de fraude en R
Instructions
- Créez un graphe non orienté nommé
netà partir detransfers. Définissezdirectedsur la valeur booléenne appropriée (TRUEouFALSE). - Spécifiez une couleur pour chaque nœud : affectez
V(net)$colorà"darkorange"siaccount_info$isMoneyMule == TRUE, et à"slateblue1"sinon. - Utilisez
subgraph()surnetpour créer un sous-graphe appelésubsetcontenant les sommets"I41","I47","I87"et"I20". - Utilisez la fonction
strength()sursubnetET surnetpour calculer la probabilité que le nœud"I41"soit une money mule, comme la fraction de ses voisins qui sont des mules.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# From data frame to graph
net <- graph_from_data_frame(___, directed = ___)
# Plot the network; color nodes according to isMoneyMule-variable
___(___)$color <- ifelse(___$___ == TRUE, ___, ___)
plot(net, vertex.label.color = "black", vertex.label.font = 2, vertex.size = 18)
# The id's of the money mule accounts:
print(account_info$id[account_info$isMoneyMule == TRUE])
# Create subgraph containing node "I41" and all money mules nodes "I47", "I87", "I20":
subnet <- ___(___, v = c(___))
# Compute the money mule probability of node "I41" based on the neighbors
___(___, v = "I41") / ___(___, v = "I41")