Inférence basée sur les réseaux sociaux

Détection de la fraude en R

Tim Verdonck

Professor Data Science at KU Leuven

Inférence basée sur les réseaux sociaux

Objectif

Prédire le comportement d'un nœud à partir de celui des autres nœuds

missing_nodes_in_network.png

Détection de la fraude en R

Inférence basée sur les réseaux sociaux

Défis

  • Les données ne sont pas indépendantes
    • Le comportement d'un nœud peut influencer celui des autres
    • Comportements corrélés entre nœuds
  • Inférence collective : les inférences sur des nœuds s'influencent mutuellement

missing_nodes_in_network.png

Détection de la fraude en R

Non relationnel vs relationnel

Modèle non relationnel

  • Exploite seulement l'information locale
  • Régression logistique, arbres de décision, …

logistic_regression.png

Modèle relationnel

  • Tient compte des liens du réseau
  • Classifieur des voisins relationnels

simple_network.png

Détection de la fraude en R

Classifieur des voisins relationnels

Hypothèses

  • Homophilie : des nœuds connectés tendent à appartenir à la même classe (« culpabilité par association »)
  • Certaines étiquettes de classe sont connues

missing_node.png

Détection de la fraude en R

Classifieur des voisins relationnels

Probabilité de fraude

$$P(F | ?) = \frac{1 + 1}{1 + 1 + 1 + 1 + 1}=\frac{2}{5}= 40\%$$

missing_node.png

Détection de la fraude en R

Classifieur des voisins relationnels pondéré

Probabilité de fraude

$$P(F | ?) = \frac{1 + 2}{3 + 1 + 1 + 2 + 1}=\frac{3}{8}=37,5\%$$

missing_node_weighted.png

Détection de la fraude en R

Classifieur des voisins relationnels

vertex_attr(network) ## Nodes are labeled as 1 (fraud), 0 (not fraud), or NA (unknown)
$name
"?" "B" "C" "D" "E" "A"
$isFraud
NA  1  0  1  0  0
edge_attr(network) ## The edges have a weight

$weight
2 3 1 1 1
Détection de la fraude en R

Classifieur des voisins relationnels

## subgraph(): create subgraph containing nodes "?" and all fraudulent nodes
subnetwork <- subgraph(network, v = c("?", "B", "D"))

## strength(): sum up the edge weights of the adjacent edges for node "?" prob_fraud <- strength(subnetwork, v = "?") / strength(network, v = "?")
prob_fraud
0.375
Détection de la fraude en R

Passons à la pratique !

Détection de la fraude en R

Preparing Video For Download...