在現代欺詐和各類金融犯罪中,欺詐者通過改變自身身份等達到逃避風控規則的欺詐目的。您可以通過圖數據庫GDB建立跟蹤用戶行為的圖結構,實時分析欺詐行為的離散數據,識別欺詐環,幫助您快速防范和解決欺詐行為。
1、數據模型
以金融交易領域公開數據集IEEE-CIS Fraud Detection數據集為例。更多信息,請參見數據模型參考下載。
數據是由電商平臺Vesta提供的交易記錄,包括了交易相關的設備、地址、郵箱等信息,可以將數據模型抽象為下圖:
在本文示例中,需要對交易涉及到屬性信息進行較多的過濾、統計等操作,所以這里將交易記錄及其屬性信息建模成邊;如果在實際的業務中更關注交易記錄本身,可以考慮將交易記錄的屬性信息直接建模成點的屬性。
示例數據如下:
點文件:
//Transaction交易信息。 ~id,~label,is_fraud:int 2987000,"transaction",0 2987001,"transaction",0 2987002,"transaction",0 2987003,"transaction",0 2987004,"transaction",0 //DeviceType設備類型信息。 ~id,~label "mobile","devicetype" "desktop","devicetype"
邊文件:
~id,~from,~to,~label 1,2987000,"","t_e_p" 2,2987000,"","t_e_r" 3,2987000,"315.0","t_a1" 4,2987000,"87.0","t_a2"
2、創建實例
3、數據導入
圖數據庫GDB支持從多種數據源將數據導入至圖數據庫GDB,您可以使用以下兩種方式進行數據導入:
4、連接實例
圖數據庫GDB支持多種方法連接實例,您可以通過以下五種方式連接實例:
通過GDB控制臺直接登錄數據管理服務DMS,更加方便快捷地遠程訪問、在線管理您的GDB數據庫。具體操作,請參見通過DMS登錄GDB數據庫。
通過開源組件GDB Console可視化控制臺登錄圖數據庫,可視化界面,操作簡單,并可根據業務需求對可視化界面進行二次開發。具體操作,請參見通過開源組件GDB Console登錄圖數據庫。
通過Gremlin Console連接實例,命令行模式,適合Gremlin內核版本,適合用于查詢語句性能優化。具體操作,請參見通過Gremlin Console連接實例。
通過Cypher Shell連接實例,命令行模式,適合Cypher內核版本。具體操作,請參見通過Cypher Shell連接實例 。
通過SDK連接,支持Java、Python、.Net、Go、Node.js五種SDK。具體操作,請參見SDK參考。
5、使用范例
簡單查詢
數據統計:
//統計點的數目。 gremlin> g.V().count() ==>592789 //統計邊的數目。 gremlin> g.E().count() ==>2533038
過濾查詢、排序查詢:
//查詢ID為2987000的交易信息。 gremlin> g.V('2987000').valueMap(true) ==>[id:2987000,label:transaction,is_fraud:[0]] //查詢ID為2987000的交易信息。 gremlin> g.V('2987000').outE() ==>e[3][2987000-t_a1->315.0] ==>e[4][2987000-t_a2->87.0] ==>e[5][2987000-t_p->W]
通用場景
K階鄰居:
//查詢和交易記錄2987000有相同地址的其他交易記錄。 gremlin> g.V('2987000').repeat(bothE('t_a1').otherV().simplePath()).times(2).path() //bothE() 部分控制查詢邊類型,times()部分控制查詢深度。 ==>[v[2987000],e[3][2987000-t_a1->315.0],v[315.0],e[86][2987015-t_a1->315.0],v[2987015]] ==>[v[2987000],e[3][2987000-t_a1->315.0],v[315.0],e[171][2987031-t_a1->315.0],v[2987031]] ==>[v[2987000],e[3][2987000-t_a1->315.0],v[315.0],e[196][2987036-t_a1->315.0],v[2987036]] ==>[v[2987000],e[3][2987000-t_a1->315.0],v[315.0],e[305][2987056-t_a1->315.0],v[2987056]] ==>[v[2987000],e[3][2987000-t_a1->315.0],v[315.0],e[356][2987066-t_a1->315.0],v[2987066]] ==>[v[2987000],e[3][2987000-t_a1->315.0],v[315.0],e[399][2987073-t_a1->315.0],v[2987073]] ==>[v[2987000],e[3][2987000-t_a1->315.0],v[315.0],e[411][2987075-t_a1->315.0],v[2987075]] ==>[v[2987000],e[3][2987000-t_a1->315.0],v[315.0],e[451][2987083-t_a1->315.0],v[2987083]] ==>[v[2987000],e[3][2987000-t_a1->315.0],v[315.0],e[510][2987094-t_a1->315.0],v[2987094]] ......
最短路徑:
//查詢交易記錄2987000和交易記錄2987172的最短路徑,最大深度為2。 gremlin> g.V('2987000').repeat(bothE().otherV().simplePath()) .until(hasId('2987172').or().loops().is(gt(2L))) //hasId()部分控制結束ID,gt()部分查詢深度。 .hasId('2987172').path().dedup() ==>[v[2987000],e[3][2987000-t_a1->315.0],v[315.0],e[938][2987172-t_a1->315.0],v[2987172]] ==>[v[2987000],e[4][2987000-t_a2->87.0],v[87.0],e[939][2987172-t_a2->87.0],v[2987172]] ==>[v[2987000],e[5][2987000-t_p->W],v[W],e[940][2987172-t_p->W],v[2987172]]
共同鄰居:
//查詢交易記錄2987000和交易記錄2987172的共同鄰居,從而找到具備相同屬性(地址、設備)的交易記錄。 gremlin> g.V('2987000').repeat(bothE().otherV().simplePath()).times(2).hasId('2987172').path().dedup() //hasId()部分控制結束ID。 ==>[v[2987000],e[3][2987000-t_a1->315.0],v[315.0],e[938][2987172-t_a1->315.0],v[2987172]] ==>[v[2987000],e[4][2987000-t_a2->87.0],v[87.0],e[939][2987172-t_a2->87.0],v[2987172]] ==>[v[2987000],e[5][2987000-t_p->W],v[W],e[940][2987172-t_p->W],v[2987172]]
Jaccard相似度:
//查詢和交易記錄2987000相似的交易記錄,根據相似度分數取前10。 gremlin> g.V('2987000') .sideEffect(out().store('v1n')) .as('v1') .select('v1n').unfold().in().limit(100).simplePath().dedup().as('v2') .project('i', 'u') .by(select('v2').out().where(within('v1n')).count()) .by(union(select('v2').out().fold(),select('v1n')).unfold().dedup().count()) .project('Transaction', '相似度') .by(select('v2').id()) .by(math('i/u')) .order().by(select('相似度'), desc).limit(10) ==>[Transaction:2987015,相似度:1.0] ==>[Transaction:2987056,相似度:1.0] ==>[Transaction:2987216,相似度:1.0] ==>[Transaction:2987251,相似度:1.0] ==>[Transaction:2987371,相似度:1.0] ==>[Transaction:2987474,相似度:1.0] ==>[Transaction:2987699,相似度:1.0] ==>[Transaction:2987707,相似度:1.0] ==>[Transaction:2987735,相似度:1.0] ==>[Transaction:2987770,相似度:1.0]
6、客戶效果
某頭部商業銀行信用卡中心,自動構建890個特征,發現涉嫌欺詐商戶12個、預測逾期用戶1.86萬人、套現卡片2.2萬張、識別欺詐團伙102個,模型召回命中率92.4%(客戶模型為60%)。