Clasificatorul bazat pe vecini relaționali
Un model relațional se bazează pe ideea că comportamentul nodurilor este corelat, adică nodurile conectate tind să aparțină aceleiași clase. Clasificatorul bazat pe vecini relaționali, în particular, prezice clasa unui nod pe baza nodurilor vecine și a muchiilor adiacente.
Setul de date transfers conține tranzacții din diferite conturi. Datele din account_info indică care dintre aceste conturi sunt money mule-uri. Totuși, nu se știe dacă contul "I41" este un money mule. Prezice probabilitatea ca "I41" să fie un money mule folosind un clasificator bazat pe vecini relaționali.
Acest exercițiu face parte din cursul
Detecția fraudelor în R
Instrucțiuni pentru exercițiu
- Creează un graf neorientat numit
netpe baza setului de datetransfers. Seteazădirectedla valoarea booleană corespunzătoare (TRUEsauFALSE). - Specifică o culoare pentru fiecare nod: setează
V(net)$colorla"darkorange"dacăaccount_info$isMoneyMule == TRUE, și la"slateblue1"în caz contrar. - Folosește
subgraph()penetpentru a crea un subgraf numitsubset, care să conțină vârfurile"I41","I47","I87"și"I20". - Folosește funcția
strength()pesubnetși penetpentru a calcula probabilitatea ca nodul"I41"să fie un money mule, ca fracție a vecinilor de tip mule
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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")