CommencerCommencer gratuitement

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

Afficher le cours

Instructions

  • Créez un graphe non orienté nommé net à partir de transfers. Définissez directed sur la valeur booléenne appropriée (TRUE ou FALSE).
  • Spécifiez une couleur pour chaque nœud : affectez V(net)$color à "darkorange" si account_info$isMoneyMule == TRUE, et à "slateblue1" sinon.
  • Utilisez subgraph() sur net pour créer un sous-graphe appelé subset contenant les sommets "I41", "I47", "I87" et "I20".
  • Utilisez la fonction strength() sur subnet ET sur net pour 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")
Modifier et exécuter le code