始める無料で始める

関係近傍分類器

関係モデルは、ノード間の振る舞いには相関があり、つながっているノードは同じクラスに属しやすいという考えに基づいています。特に関係近傍分類器は、あるノードのクラスを、その近傍ノードや隣接するエッジの情報から予測します。

transfers データセットは、複数の口座間の取引から成ります。account_info には、どの口座がマネーミュールかが含まれています。ただし、口座 "I41" がマネーミュールかどうかは不明です。関係近傍分類器を用いて、口座 "I41" のマネーミュールである可能性を予測してください。

この演習はコースの一部です

Rで学ぶ不正検知

コースを見る

演習の手順

  • transfers に基づいて、net という名前の「無向」グラフを作成します。directed には適切な真偽値(TRUE または FALSE)を設定してください。
  • 各ノードの色を指定します。account_info$isMoneyMule == TRUE のときは V(net)$color"darkorange" に、それ以外は "slateblue1" に設定します。
  • net に対して subgraph() を使い、"I41""I47""I87""I20" の頂点を含む subset というサブグラフを作成します。
  • subnetnet の両方に対して strength() 関数を使い、ノード "I41" のマネーミュール確率(ミュールの近傍の割合)を計算します

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# From data frame to graph
net <- graph_from_data_frame(___, directed = ___)

# Plot the network; color nodes according to isMoneyMule-variable
___(___)$color <- ifelse(___$___ == TRUE, ___, ___)
plot(net, vertex.label.color = "black", vertex.label.font = 2, vertex.size = 18)

# The id's of the money mule accounts:
print(account_info$id[account_info$isMoneyMule == TRUE])

# Create subgraph containing node "I41" and all money mules nodes "I47", "I87", "I20":
subnet <- ___(___, v = c(___))

# Compute the money mule probability of node "I41" based on the neighbors
___(___, v = "I41") / ___(___, v = "I41")
コードを編集して実行