Inferenza basata su reti sociali

Rilevamento delle frodi in R

Tim Verdonck

Professor Data Science at KU Leuven

Inferenza basata su reti sociali

Obiettivo

Predire il comportamento di un nodo dal comportamento degli altri nodi

nodi mancanti nella rete

Rilevamento delle frodi in R

Inferenza basata su reti sociali

Sfide

  • I dati non sono indipendenti
    • Il comportamento di un nodo può influenzare quello degli altri
    • Comportamenti correlati tra nodi
  • Inferenza collettiva: le inferenze sui nodi si influenzano a vicenda

nodi mancanti nella rete

Rilevamento delle frodi in R

Non relazionale vs relazionale

Modello non relazionale

  • Usa solo informazioni locali
  • Regressione logistica, alberi decisionali, ...

regressione logistica

Modello relazionale

  • Usa i collegamenti della rete
  • Classificatore dei vicini relazionali

rete semplice

Rilevamento delle frodi in R

Classificatore dei vicini relazionali

Assunzioni

  • Omofilia: i nodi collegati tendono ad appartenere alla stessa classe ("colpa per associazione")
  • Alcune etichette di classe sono note

nodo mancante

Rilevamento delle frodi in R

Classificatore dei vicini relazionali

Probabilità di frode

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

nodo mancante

Rilevamento delle frodi in R

Classificatore dei vicini relazionali con pesi

Probabilità di frode

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

nodo mancante con pesi

Rilevamento delle frodi in R

Classificatore dei vicini relazionali

vertex_attr(network) ## I nodi sono etichettati come 1 (frode), 0 (non frode) o NA (sconosciuto)
$name
"?" "B" "C" "D" "E" "A"
$isFraud
NA  1  0  1  0  0
edge_attr(network) ## Gli archi hanno un peso

$weight
2 3 1 1 1
Rilevamento delle frodi in R

Classificatore dei vicini relazionali

## subgraph(): crea un sottografo con il nodo "?" e tutti i nodi fraudolenti
subnetwork <- subgraph(network, v = c("?", "B", "D"))

## strength(): somma i pesi degli archi adiacenti per il nodo "?" prob_fraud <- strength(subnetwork, v = "?") / strength(network, v = "?")
prob_fraud
0.375
Rilevamento delle frodi in R

Ayo berlatih!

Rilevamento delle frodi in R

Preparing Video For Download...