Wnioskowanie na podstawie sieci społecznych

Wykrywanie oszustw w R

Tim Verdonck

Professor Data Science at KU Leuven

Wnioskowanie na podstawie sieci społecznych

Cel

Przewidywanie zachowania węzła na podstawie zachowania innych węzłów

missing_nodes_in_network.png

Wykrywanie oszustw w R

Wnioskowanie na podstawie sieci społecznych

Wyzwania

  • Dane nie są niezależne
    • Zachowanie jednego węzła może wpływać na zachowanie innych
    • Skorelowane zachowania między węzłami
  • Wnioskowanie zbiorowe: wnioski o węzłach mogą na siebie wpływać

missing_nodes_in_network.png

Wykrywanie oszustw w R

Nierelacyjny vs relacyjny

Model nierelacyjny

  • Wykorzystuje tylko informacje lokalne
  • Regresja logistyczna, drzewa decyzyjne, ...

logistic_regression.png

Model relacyjny

  • Wykorzystuje powiązania w sieci
  • Relacyjny klasyfikator sąsiadów

simple_network.png

Wykrywanie oszustw w R

Relacyjny klasyfikator sąsiadów

Założenia

  • Homofilia: połączone węzły mają tendencję do należenia do tej samej klasy ("wina przez skojarzenie")
  • Niektóre etykiety klas są znane

missing_node.png

Wykrywanie oszustw w R

Relacyjny klasyfikator sąsiadów

Prawdopodobieństwo oszustwa

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

missing_node.png

Wykrywanie oszustw w R

Relacyjny klasyfikator sąsiadów z wagami

Prawdopodobieństwo oszustwa

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

missing_node_weighted.png

Wykrywanie oszustw w R

Relacyjny klasyfikator sąsiadów

vertex_attr(network) ## Węzły są oznaczone jako 1 (oszustwo), 0 (nie oszustwo) lub NA (nieznane)
$name
"?" "B" "C" "D" "E" "A"
$isFraud
NA  1  0  1  0  0
edge_attr(network) ## Krawędzie mają wagę

$weight
2 3 1 1 1
Wykrywanie oszustw w R

Relacyjny klasyfikator sąsiadów

## subgraph(): tworzy podgraf zawierający węzły "?" i wszystkie węzły oszustów
subnetwork <- subgraph(network, v = c("?", "B", "D"))

## strength(): sumuje wagi krawędzi sąsiednich dla węzła "?" prob_fraud <- strength(subnetwork, v = "?") / strength(network, v = "?")
prob_fraud
0.375
Wykrywanie oszustw w R

Czas na ćwiczenia!

Wykrywanie oszustw w R

Preparing Video For Download...