Inferența bazată pe rețele sociale

Detecția fraudelor în R

Tim Verdonck

Professor Data Science at KU Leuven

Inferența bazată pe rețele sociale

Obiectiv

Predicția comportamentului unui nod pe baza comportamentului altor noduri

missing_nodes_in_network.png

Detecția fraudelor în R

Inferența bazată pe rețele sociale

Provocări

  • Datele nu sunt independente
    • Comportamentul unui nod poate influența comportamentul altor noduri
    • Comportament corelat între noduri
  • Inferență colectivă: inferențele despre noduri se pot influența reciproc

missing_nodes_in_network.png

Detecția fraudelor în R

Non-relațional vs. relațional

Model non-relațional

  • Folosește doar informații locale
  • Regresie logistică, arbori de decizie, ...

logistic_regression.png

Model relațional

  • Utilizează legăturile din rețea
  • Clasificator relațional de vecini

simple_network.png

Detecția fraudelor în R

Clasificator relațional de vecini

Ipoteze

  • Homofilie: nodurile conectate tind să aparțină aceleiași clase ("vinovat prin asociere")
  • Unele etichete de clasă sunt cunoscute

missing_node.png

Detecția fraudelor în R

Clasificator relațional de vecini

Probabilitatea de fraudă

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

missing_node.png

Detecția fraudelor în R

Clasificator relațional de vecini cu ponderi

Probabilitatea de fraudă

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

missing_node_weighted.png

Detecția fraudelor în R

Clasificator relațional de vecini

vertex_attr(network) ## Nodurile sunt etichetate cu 1 (fraudă), 0 (fără fraudă) sau NA (necunoscut)
$name
"?" "B" "C" "D" "E" "A"
$isFraud
NA  1  0  1  0  0
edge_attr(network) ## Muchiile au o pondere

$weight
2 3 1 1 1
Detecția fraudelor în R

Clasificator relațional de vecini

## subgraph(): creează un subgraf cu nodul "?" și toate nodurile frauduloase
subnetwork <- subgraph(network, v = c("?", "B", "D"))

## strength(): sumează ponderile muchiilor adiacente pentru nodul "?" prob_fraud <- strength(subnetwork, v = "?") / strength(network, v = "?")
prob_fraud
0.375
Detecția fraudelor în R

Să exersăm!

Detecția fraudelor în R

Preparing Video For Download...