관계 이웃 분류기
관계 모델은 노드 간의 행동이 상관되어 있으며, 연결된 노드들이 같은 클래스에 속할 가능성이 높다는 아이디어에 기반합니다. 특히 관계 이웃 분류기는 한 노드의 이웃 노드와 인접한 엣지 정보를 바탕으로 그 노드의 클래스를 예측합니다.
transfers 데이터셋은 다양한 계좌 간 거래로 구성되어 있습니다. account_info 데이터에는 어떤 계좌가 머니 뮬(money mule)인지가 포함되어 있습니다. 그러나 계좌 "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")