Klasyfikator sąsiedztwa relacyjnego
Model relacyjny opiera się na założeniu, że zachowanie węzłów jest ze sobą skorelowane – tzn. połączone węzły mają tendencję do należenia do tej samej klasy. Klasyfikator sąsiedztwa relacyjnego przewiduje klasę węzła na podstawie jego sąsiednich węzłów i przyległych krawędzi.
Zbiór danych transfers zawiera transakcje z różnych kont. Dane account_info wskazują, które z tych kont są tzw. „słupami" (ang. money mules). Nie wiadomo jednak, czy konto "I41" jest słupem. Przewidź prawdopodobieństwo, że konto "I41" jest słupem, korzystając z klasyfikatora sąsiedztwa relacyjnego.
To ćwiczenie jest częścią kursu
Wykrywanie oszustw w R
Instrukcje do ćwiczenia
- Utwórz nieskierowany graf o nazwie
netna podstawietransfers. Ustawdirectedna odpowiednią wartość logiczną (TRUElubFALSE). - Przypisz kolor każdemu węzłowi: ustaw
V(net)$colorna"darkorange", jeśliaccount_info$isMoneyMule == TRUE, i na"slateblue1"w przeciwnym razie. - Użyj funkcji
subgraph()nanet, aby utworzyć podgraf o nazwiesubsetzawierający wierzchołki"I41","I47","I87"i"I20". - Użyj funkcji
strength()nasubnetoraz nanet, aby obliczyć prawdopodobieństwo, że węzeł"I41"jest słupem, jako ułamek sąsiadów będących słupami.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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")