傳統機器學習模型如 XGBoost 在處理表格資料時表現出色,但在詐欺偵測等需要考量關聯性的場景下,其效能受到限制。圖神經網路(GNN)則能有效利用圖結構資料,捕捉節點之間的複雜關係,提升詐欺偵測的準確性。透過 FastRP 等圖嵌入技術,可以將圖結構資訊轉換為向量表示,更利於 GNN 模型的學習。實驗結果顯示,加入圖特徵和圖嵌入特徵後,XGBoost 模型的效能有所提升,但 GNN 模型的整體表現更為突出,特別是在精確度方面。這表明 GNN 模型更能捕捉詐欺行為中的隱藏模式,並有效區分正常交易與詐欺交易。
在TigerGraph雲端平台上設定機器學習工作檯
建立TigerGraph雲端叢集
為了開始使用TigerGraph的機器學習工作檯(ML Workbench),首先需要在TigerGraph雲端平台上建立一個叢集。以下是具體步驟:
- 登入TigerGraph雲端帳戶,進入Clusters畫面。
- 點選Create Cluster按鈕。
- 在Create Cluster頁面頂部,選擇右側的ML Bundle選項。
- 選擇一個例項大小。對於本練習,選擇最小的可使用案例項即可。
- 選擇一個使用案例(use case),但由於我們將使用內建於ML Workbench的資料集和查詢,因此這裡的選擇不會影響後續操作。完成其他選項的設定後,點選頁面底部的Create Cluster。
叢集的建立需要幾分鐘時間。
建立並複製資料函式庫憑證
ML Workbench包含一系列強大的範例Jupyter筆記本,這些筆記本使用pyTigerGraph下載資料集並在叢集中建立圖形。在執行這些操作之前,需要提供存取TigerGraph資料函式庫的憑證:
- 仍然停留在TigerGraph Cloud的Clusters頁面,點選剛建立的叢集的Access Management。
- 切換到Database Access標籤頁,然後點選Add Database Users。
- 輸入使用者名稱和密碼。請務必記住這兩個資訊,因為稍後在ML Workbench中會用到。
- 切換到Role Management標籤頁,選中剛建立的使用者,設定角色為globaldesigner,然後點選Save。
- 切換到Details標籤頁,複製Domain欄位的值,該值應以
i.tgcloud.io
結尾。
連線ML Workbench到圖形資料函式庫
- 進入該資料函式庫例項的GraphStudio。
- 在右上角點選Tools選單圖示(一個3x3的網格圖示),然後選擇ML Workbench。
- ML Workbench開啟後,在左側面板中找到
config.json
檔案並雙擊編輯。 - 將
host
的值替換為之前複製的Domain值。替換後的值仍應以https://
開頭並以i.tgcloud.io
結尾。 - 將
username
和password
的值更改為剛建立的新使用者的使用者名稱和密碼。
程式碼示例:config.json設定
{
"host": "https://你的Domain值.i.tgcloud.io",
"username": "你的使用者名稱",
"password": "你的密碼"
}
內容解密:
此JSON檔案用於組態ML Workbench與TigerGraph資料函式庫之間的連線。其中:
host
欄位指定了資料函式庫的存取網址。username
和password
欄位提供了存取資料函式庫所需的驗證資訊。
使用ML Workbench和Jupyter筆記本
- 在ML Workbench的檔案瀏覽器左側面板中雙擊
README.md
,以瞭解pyTigerGraph和ML Workbench元件的整體結構和功能。 - 開啟
Datasets.ipynb
筆記本(位於Basics資料夾中),這是一個Jupyter筆記本,結合了Python程式碼片段和說明性註解。 - 執行筆記本中的Python程式碼區塊,瞭解如何下載資料集、建立連線、匯入資料並視覺化schema。
程式碼示例:Datasets.ipynb中的關鍵程式碼
# [1] 下載資料集
from pyTigerGraph.datasets import Datasets
dataset = Datasets("your_dataset_name")
dataset.download()
# [2] 建立連線
from pyTigerGraph import TigerGraphConnection
conn = TigerGraphConnection(
host="https://你的Domain值.i.tgcloud.io",
username="你的使用者名稱",
password="你的密碼"
)
# [3] 匯入資料
conn.ingestDataset(dataset)
# [4] 視覺化schema
from pyTigerGraph.visualization import Visualization
vis = Visualization(conn)
vis.drawSchema()
內容解密:
此段程式碼展示瞭如何使用pyTigerGraph函式庫下載資料集、建立與TigerGraph資料函式庫的連線、匯入資料集以及視覺化圖形schema。其中:
- 使用
Datasets
類別下載指定的資料集。 - 透過
TigerGraphConnection
類別建立與資料函式庫的連線。 - 使用
ingestDataset
方法將下載的資料集匯入資料函式庫。 - 利用
Visualization
類別視覺化圖形schema。
圖形Schema和資料集
對於圖形機器學習的例子,將使用applications
資料夾中的fraud_detection
筆記本。該資料集涉及以太坊(Ethereum)平台上的交易,形成一個圖形,其中頂點代表錢包(即帳戶),邊代表帳戶間的交易。
Mermaid圖形結構示意
graph LR A[帳戶1] -->|交易|> B(帳戶2) B -->|交易|> C(帳戶3) C -->|交易|> A
圖表翻譯: 此圖展示了帳戶之間的交易關係,形成一個有向圖。其中每個節點代表一個帳戶,箭頭代表交易的方向。
提升詐騙偵測技術:圖形神經網路與傳統機器學習的比較分析
在現今的數位金融時代,詐騙行為日益猶如過江之鯽,手法層出不
圖機器學習在詐欺偵測中的應用與進階技術探討
隨著圖機器學習(Graph Machine Learning)技術的迅速發展,詐欺偵測(Fraud Detection)領域正經歷著前所未有的變革。本文將探討如何利用圖機器學習技術提升詐欺偵測的準確性,並結合實際案例進行詳細分析。
圖特徵工程與傳統監督式學習方法
在進行詐欺偵測時,首先需要建立一個包含圖相關特徵(Graph-related Features)的資料集。這些特徵能夠有效地描述每個頂點(Vertex)的特性,包括是否為詐欺帳戶的真實標籤(Ground Truth)。接著,可以利用傳統的監督式機器學習(Supervised Machine Learning)方法來預測詐欺行為。
FastRP 嵌入技術的應用
FastRP(Fast Random Projection)是一種根據隨機投影(Random Projection)原理的頂點嵌入(Vertex Embedding)演算法,能夠有效地進行維度縮減(Dimensionality Reduction)。TigerGraph 將 FastRP 納入其內建演算法函式庫中,對於較小的資料集,如本文所使用的資料集,FastRP 能夠在合理的資源消耗下提供良好的效能。
# 執行 FastRP 嵌入計算
graph.run_algo("FastRP", params={"dimension": 128, "iteration": 2})
資料集分析與分割
在進行模型訓練之前,需要對資料集進行分析與分割。首先,透過檢查標籤(Check Labels)區塊來統計詐欺帳戶與正常帳戶的數量。根據統計結果,資料集中包含 1165 個詐欺帳戶(佔 3.62%)和 31003 個正常帳戶(佔 96.38%)。
接著,利用 vertexSplitter
函式將資料集分割為 80% 的訓練資料和 20% 的驗證資料。該函式為每個頂點分配 is_training
和 is_validation
兩個布林特徵,以實作資料集的分割。
# 資料集分割
vertexSplitter(graph, split_ratios=[0.8, 0.2])
傳統模型的訓練與評估
在完成資料準備工作後,接下來將利用 XGBoost 這個流行的分類別演算法來訓練詐欺偵測模型。XGBoost 是一種針對表格資料(Tabular Data)最佳化的分類別演算法,適合用於本案例。
# 匯入 XGBoost 分類別器
from xgboost import XGBClassifier
# 建立 XGBoost 模型例項
tree_model = XGBClassifier()
分別使用三組不同的特徵集來訓練 XGBoost 模型,以比較其效能。第一組僅使用非圖特徵(Nongraph Features),第二組加入了 PageRank 和介數中心性(Betweenness Centrality),第三組進一步加入了 FastRP 嵌入特徵。
# 訓練 XGBoost 模型
tree_model.fit(X_train, y_train)
# 評估模型效能
accuracy = metrics.accuracy_score(y_test, y_pred)
precision = metrics.precision_score(y_test, y_pred)
recall = metrics.recall_score(y_test, y_pred)
實驗結果分析
實驗結果顯示,隨著圖特徵和圖嵌入特徵的加入,模型的準確性和精確率(Precision)顯著提升,而召回率(Recall)則略有下降。具體而言,僅使用非圖特徵時,模型的準確性約為 75%,精確率約為 12%,召回率達到 100%。加入 PageRank 和介數中心性後,準確性和精確率略有提升,但召回率下降至約 98%。最終,加入 FastRP 嵌入特徵後,模型的準確性和精確率均有顯著提升。
圖神經網路在詐欺偵測中的應用
除了傳統的監督式學習方法外,本文將探討如何利用圖神經網路(Graph Neural Network, GNN)進一步提升詐欺偵測的準確性。
GNN 模型的建立與訓練
首先,需要設定一些超引數(Hyperparameters)來控制 GNN 模型的訓練過程。這些超引數的選擇對於模型的效能至關重要。
# 設定 GNN 超引數
num_layers = 2
hidden_dim = 128
dropout = 0.5
接著,利用 neighborLoader
方法載入資料。與傳統的 vertexLoader
不同,neighborLoader
不僅載入單個頂點,還會載入其鄰近頂點,以捕捉圖結構資訊。
# 建立 GNN 資料載入器
train_loader = neighborLoader(graph, batch_size=1024, num_neighbors=[10, 5])
test_loader = neighborLoader(graph, batch_size=1024, num_neighbors=[10, 5], is_training=False)
在資料準備完成後,可以建立並訓練 GNN 模型。本案例使用 PyTorch Geometric GDS 函式庫,該函式庫提供了多種 GNN 模型可供選擇。
# 匯入 PyTorch Geometric GDS 函式庫
import torch_geometric.nn as pyg_nn
# 建立 GNN 模型
class GNNModel(torch.nn.Module):
def __init__(self):
super(GNNModel, self).__init__()
self.conv1 = pyg_nn.GCNConv(128, 128)
self.conv2 = pyg_nn.GCNConv(128, 64)
def forward(self, data):
x, edge_index = data.x, data.edge_index
x = torch.relu(self.conv1(x, edge_index))
x = self.conv2(x, edge_index)
return x
# 初始化 GNN 模型
gnn_model = GNNModel()
GNN 模型的評估與最佳化
訓練完成後,需要對 GNN 模型進行評估。評估指標包括準確性、精確率和召回率等。根據實驗結果,GNN 模型在詐欺偵測任務上展現出比傳統方法更優異的效能。
# 評估 GNN 模型
gnn_model.eval()
with torch.no_grad():
predictions = gnn_model(test_data)
accuracy = metrics.accuracy_score(test_labels, predictions.argmax(dim=1))
precision = metrics.precision_score(test_labels, predictions.argmax(dim=1))
recall = metrics.recall_score(test_labels, predictions.argmax(dim=1))
內容解密:
- 圖機器學習技術在詐欺偵測中的關鍵作用
- FastRP 嵌入技術的原理與應用
- 傳統監督式學習方法與圖神經網路的比較分析
- GNN 模型的建立、訓練與評估流程
- 未來研究方向與應用前景展望
圖表翻譯:
此圖示展示了不同特徵集對 XGBoost 模型預測效能的影響。可以觀察到,隨著圖特徵和圖嵌入特徵的加入,模型的準確性和精確率均有顯著提升。
- 大規模圖資料處理技術:研究如何高效處理大規模圖資料,以滿足日益增長的詐欺偵測需求。
- 圖神經網路架構創新:設計更先進的 GNN 架構,以進一步提升詐欺偵測的準確性和效率。
- 模型解釋性研究:加強對圖機器學習模型的解釋性研究,提高模型的透明度和可信度。
透過不斷的技術創新與實踐應用,圖機器學習技術將在詐欺偵測領域發揮越來越重要的作用,為金融安全保駕護航。
圖神經網路在詐欺偵測中的應用與比較分析
摘要
本文探討了在詐欺偵測領域中,傳統機器學習方法與圖神經網路(Graph Neural Network, GNN)的效能比較。實驗結果顯示,結合圖結構資料的GNN模型在偵測詐欺交易方面展現出優於傳統XGBoost模型的精確度。
圖神經網路模型架構
GNN模型設計
本研究採用PyTorch Geometric函式庫中的圖注意力網路(Graph Attention Network, GAT)進行實驗。GAT結合了注意力機制與圖鄰近卷積,能有效捕捉圖結構中的複雜關係。
import torch
from torch_geometric.nn import GATConv
class GAT(torch.nn.Module):
def __init__(self):
super(GAT, self).__init__()
self.conv1 = GATConv(dataset.num_features, 16, heads=8, dropout=0.6)
self.conv2 = GATConv(16*8, dataset.num_classes, dropout=0.6)
def forward(self, data):
x, edge_index = data.x, data.edge_index
x = torch.nn.functional.elu(self.conv1(x, edge_index))
x = self.conv2(x, edge_index)
return torch.nn.functional.log_softmax(x, dim=1)
內容解密:
- 模型初始化:定義GAT類別,繼承自PyTorch的nn.Module。
- 圖卷積層:使用GATConv實作圖注意力機制,第一層將特徵維度轉換為16並使用8個注意力頭,第二層輸出預測結果。
- 前向傳播:定義forward方法,處理輸入資料的特徵與邊緣索引,套用elu啟用函式並計算softmax輸出。
訓練流程與效能分析
訓練過程
模型訓練共進行10個訓練週期(epochs),每週期約耗時五秒。相較於傳統XGBoost模型,GNN模型展現出更高的精確度(超過90%)。
效能比較
模型 | 精確度 | 召回率 |
---|---|---|
XGBoost | 較低 | 較高 |
GNN | 更高 | 較低但仍良好 |
效能分析:
- 精確度提升:GNN模型透過圖結構資訊取得更好的預測效能。
- 特徵重要性變化:GNN模型中,「接收金額」、「傳送金額」和「輸入交易數量」成為重要特徵,而PageRank的重要性降低。
- 模型比較:GNN在精確度上優於XGBoost,但在召回率上略低。
圖視覺化與解釋
預測結果視覺化
隨機選取一個詐欺交易節點進行鄰近節點分析,結果顯示該節點具有大量輸入與輸出交易,可能是詐欺帳戶的特徵。
graph LR A[詐欺節點] -->|大量輸出|> B[接收帳戶1] A -->|大量輸出|> C[接收帳戶2] D[來源帳戶1] -->|輸入|> A E[來源帳戶2] -->|輸入|> A
圖表翻譯: 此圖展示了一個疑似詐欺的節點(A),它接收來自多個來源帳戶的資金,並將資金轉移到多個接收帳戶。該行為模式可能與洗錢或詐欺活動相關。
研究發現
- GNN模型優勢:在詐欺偵測任務中,GNN模型展現出比傳統機器學習方法更好的效能。
- 特徵重要性變化:GNN模型更依賴交易金額和數量等特徵。
- 未來方向:可進一步最佳化GNN模型結構,或結合更多圖結構特徵提升偵測效能。
實際應用建議
- 模型佈署:將GNN模型佈署於實際的詐欺偵測系統中。
- 持續最佳化:根據實際資料表現持續調整模型引數與結構。
- 多模型整合:結合多種模型的優點,建立混合偵測系統。
本研究證明瞭圖神經網路在處理具有圖結構特性的詐欺偵測問題上的強大能力,為相關領域提供了新的解決方案與研究方向。透過結合圖結構資訊與注意力機制,GNN模型能夠更準確地識別複雜的詐欺模式,為金融安全領域帶來顯著的改善。