関係近傍分類器
関係モデルは、ノード間の振る舞いには相関があり、つながっているノードは同じクラスに属しやすいという考えに基づいています。特に関係近傍分類器は、あるノードのクラスを、その近傍ノードや隣接するエッジの情報から予測します。
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というサブグラフを作成します。subnetとnetの両方に対して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")