ソーシャルネットワークに基づく推論

Rで学ぶ不正検知

Tim Verdonck

Professor Data Science at KU Leuven

ソーシャルネットワークに基づく推論

目的

他ノードの挙動から、あるノードの挙動を予測する

ネットワーク内の欠損ノード

Rで学ぶ不正検知

ソーシャルネットワークに基づく推論

課題

  • データは独立でない
    • あるノードの挙動が他ノードに影響
    • ノード間で挙動が相関
  • 集合推論: ノードの推論同士が影響し合う

ネットワーク内の欠損ノード

Rで学ぶ不正検知

非関係 vs 関係モデル

非関係モデル

  • ローカル情報のみを使用
  • ロジスティック回帰、決定木 など

ロジスティック回帰

関係モデル

  • ネットワークのリンクを活用
  • 関係近傍分類器

単純なネットワーク

Rで学ぶ不正検知

関係近傍分類器

前提

  • 同類性: 接続されたノードは同じクラスになりやすい(連座推定)
  • 一部のクラスラベルは既知

欠損ノード

Rで学ぶ不正検知

関係近傍分類器

不正の確率

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

欠損ノード

Rで学ぶ不正検知

重み付き関係近傍分類器

不正の確率

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

重み付き欠損ノード

Rで学ぶ不正検知

関係近傍分類器

vertex_attr(network) ## ノードは 1(不正)、0(非不正)、NA(不明)でラベル付け
$name
"?" "B" "C" "D" "E" "A"
$isFraud
NA  1  0  1  0  0
edge_attr(network) ## エッジには重みがあります

$weight
2 3 1 1 1
Rで学ぶ不正検知

関係近傍分類器

## subgraph(): ノード「?」と不正ノードを含む部分グラフを作成
subnetwork <- subgraph(network, v = c("?", "B", "D"))

## strength(): ノード「?」に隣接するエッジ重みの合計 prob_fraud <- strength(subnetwork, v = "?") / strength(network, v = "?")
prob_fraud
0.375
Rで学ぶ不正検知

Passons à la pratique !

Rで学ぶ不正検知

Preparing Video For Download...