在現代欺詐和各類金融犯罪中,欺詐者通過改變自身身份等達到逃避風控規則的欺詐目的。您可以通過圖數據庫GDB建立追蹤用戶行為的圖結構,實時分析欺詐行為的離散數據,識別欺詐環,幫助您快速防范和解決欺詐行為。
背景信息
保險理賠欺詐一般根據保險提供商所具備的患者、疾病和索賠等數據,分析與被保人相關的理賠單、疾病等實體的關聯關系,識別異常理賠記錄,發現欺詐團伙。
1、數據和模型
以保險領域公開數據集為例。更多信息,請參見數據模型參考下載。
數據包括保險行業基本元素,可以將數據模型抽象為下圖:
- 點:投保人(policyholder)、保單(incharge)、理賠(claim)、病人(patient)、疾病(disease)。
- 邊:疾病-病人(has_disease)、投保人-理賠(policyholder_of_claim)、保單-理賠(inchagre_of_claim)、病人-理賠(insured_of_claim)、相似理賠(similar_claim)、投保人關聯(policyholder_connection)。
- 屬性:姓名(name),是否高危(high_risk)、風險分數(risk_score)、疾病名稱(disease_name)、相似度(similarity_score)、關聯等級(level)、理賠時間(claim_date)、保額(charge)等。
示例數據如下:
- 點文件:
//policyholder投保人信息。 ~id,~label,FNAME:string,LNAME:string,RISK_SCORE:int,HIGH_RISK:int PH3068,policyholder,ADAM,OCHSENBEIN,88,1 PH3069,policyholder,MALINDA,MEHSERLE,42,0 PH3070,policyholder,SANDRA,KUHTA,20,0 PH3071,policyholder,DORA,TAHU,62,1 //incharge保單信息。 ~id,~label,FNAME:string,LNAME:string,RISK_SCORE:int,SERVICE_ID:string PI18675,incharge,ROSCOE,ROSCOE,0,S10444 PI18676,incharge,AUDRIE,AUDRIE,24,S12029 PI18677,incharge,WINTER,WINTER,25,S15709 PI18678,incharge,LILA,LILA,27,S16484 PI18679,incharge,NANCIE,NANCIE,31,S12306 ...
- 邊文件:
//has_disease疾病-病人。 ~id,~from,~to,~label 10529764572383,105297,64572383,has_disease 10529764572383,105297,64572383,has_disease 10529764572384,105297,64572384,has_disease 10529764572389,105297,64572389,has_disease 10941664572116,109416,64572116,has_disease 10941664572116,109416,64572116,has_disease 10941664572117,109416,64572117,has_disease //policyholder_of_claim投保人-理賠。 ~id,~from,~to,~label C1528PH2963,C1528,PH2963,policyholder_of_claim C1529PH1353,C1529,PH1353,policyholder_of_claim C1530PH1071,C1530,PH1071,policyholder_of_claim C1531PH8102,C1531,PH8102,policyholder_of_claim C1532PH4768,C1532,PH4768,policyholder_of_claim C1533PH2287,C1533,PH2287,policyholder_of_claim C1534PH6948,C1534,PH6948,policyholder_of_claim C1535PH621,C1535,PH621,policyholder_of_claim
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() ==>120571 //統計邊的數目。 gremlin> g.E().count() ==>215943 //統計每種類型點的數量。 gremlin> g.V().group().by(label).by(count()) ==>[policyholder:10006,disease:397,patient:166,claim:100001,incharge:10001] //統計每種類型邊的數量。 gremlin> g.E().group().by(label).by(count()) ==>[inchagre_of_claim:100001,insured_of_claim:12,similar_claim:15279,policyholder_connection:347,policyholder_of_claim:99983,has_disease:321]
- 過濾查詢、排序查詢:
//查詢理賠單C4377的投保、理賠、被保情況。 gremlin> g.V('C4377').outE('policyholder_of_claim','inchagre_of_claim','insured_of_claim').path() ==>[v[C4377],e[C4377PI26607][C4377-inchagre_of_claim->PI26607]] ==>[v[C4377],e[C437711279][C4377-insured_of_claim->11279]] ==>[v[C4377],e[C4377PH3759][C4377-policyholder_of_claim->PH3759]]
- 數據統計:
- 通用場景
- K階鄰居:
//已知保單C4377為欺詐保單,查詢和理賠單C4377有相同理賠病人的理賠單,說明該理賠人有涉嫌騙保的嫌疑。 gremlin> g.V('C4377').repeat(bothE('insured_of_claim').otherV().simplePath()).times(2).path() ==>[v[C4377],e[C437711279][C4377-insured_of_claim->11279],v[11279],e[C1016011279][C10160-insured_of_claim->11279],v[C10160]] ==>[v[C4377],e[C437711279][C4377-insured_of_claim->11279],v[11279],e[C2658611279][C26586-insured_of_claim->11279],v[C26586]] ==>[v[C4377],e[C437711279][C4377-insured_of_claim->11279],v[11279],e[C2675411279][C26754-insured_of_claim->11279],v[C26754]] ==>[v[C4377],e[C437711279][C4377-insured_of_claim->11279],v[11279],e[C2896311279][C28963-insured_of_claim->11279],v[C28963]] ==>[v[C4377],e[C437711279][C4377-insured_of_claim->11279],v[11279],e[C367911279][C3679-insured_of_claim->11279],v[C3679]] ==>[v[C4377],e[C437711279][C4377-insured_of_claim->11279],v[11279],e[C6759411279][C67594-insured_of_claim->11279],v[C67594]] ==>[v[C4377],e[C437711279][C4377-insured_of_claim->11279],v[11279],e[C6939511279][C69395-insured_of_claim->11279],v[C69395]] ==>[v[C4377],e[C437711279][C4377-insured_of_claim->11279],v[11279],e[C8727811279][C87278-insured_of_claim->11279],v[C87278]] ==>[v[C4377],e[C437711279][C4377-insured_of_claim->11279],v[11279],e[C8760311279][C87603-insured_of_claim->11279],v[C87603]] ==>[v[C4377],e[C437711279][C4377-insured_of_claim->11279],v[11279],e[C9615511279][C96155-insured_of_claim->11279],v[C96155]] ==>[v[C4377],e[C437711279][C4377-insured_of_claim->11279],v[11279],e[C9654511279][C96545-insured_of_claim->11279],v[C96545]]
//查詢已知欺詐保單C4377的投保人的社交關系,可以對這些人的理賠情況提前預警。 gremlin> g.V('C4377').outE('policyholder_of_claim').inV().repeat(bothE('policyholder_connection').otherV().simplePath()).times(3).path() ==>[v[C4377],e[C4377PH3759][C4377-policyholder_of_claim->PH3759],v[PH3759],e[PH3759PH512][PH3759-policyholder_connection->PH512],v[PH512],e[PH512PH1569][PH512-policyholder_connection->PH1569],v[PH1569],e[PH1569PH4722][PH1569-policyholder_connection->PH4722],v[PH4722]] ==>[v[C4377],e[C4377PH3759][C4377-policyholder_of_claim->PH3759],v[PH3759],e[PH3759PH512][PH3759-policyholder_connection->PH512],v[PH512],e[PH512PH1569][PH512-policyholder_connection->PH1569],v[PH1569],e[PH1569PH4731][PH1569-policyholder_connection->PH4731],v[PH4731]]
- 最短路徑:
//查詢投保人PH3759和投保人PH4722的最短路徑,分析投保人之間的關聯關系。 gremlin> g.V('PH3759').repeat(bothE().otherV().simplePath()) .until(hasId('PH4722').or().loops().is(gt(3L))) //hasId()部分控制結束ID,gt()部分查詢深度。 .hasId('PH4722').path().dedup() ==>[v[PH3759],e[PH3759PH512][PH3759-policyholder_connection->PH512],v[PH512],e[PH512PH1569][PH512-policyholder_connection->PH1569],v[PH1569],e[PH1569PH4722][PH1569-policyholder_connection->PH4722],v[PH4722]] ==>[v[PH3759],e[PH3759PH512][PH3759-policyholder_connection->PH512],v[PH512],e[PH512PH1569][PH512-policyholder_connection->PH1569],v[PH1569],e[PH1569PH4731][PH1569-policyholder_connection->PH4731],v[PH4731],e[PH1565PH4731][PH1565-policyholder_connection->PH4731],v[PH1565],e[PH1565PH4722][PH1565-policyholder_connection->PH4722],v[PH4722]]
- 共同鄰居:
//查詢保單C4377和保單C67594的共同鄰居,從而找到兩個保單的共同投保人。 gremlin> g.V('C4377').repeat(bothE('policyholder_of_claim').otherV().simplePath()).times(2).hasId('C67594').path().dedup() //hasId()部分控制結束ID。 ==>[v[C4377],e[C4377PH3759][C4377-policyholder_of_claim->PH3759],v[PH3759],e[C67594PH3759][C67594-policyholder_of_claim->PH3759],v[C67594]]==>[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]]
- 協同推薦:
//已知保單C4377為欺詐保單,查找和保單C4377有共同投保人的保單,并按照共同鄰居的個數進行排序,從而找到欺詐疑似涉詐保單。 gremlin> g.V('C4377').both('policyholder_of_claim').aggregate("policyholder_of_claim").both('policyholder_of_claim').has(id, neq('C4377')).as("recomm_claim") .flatMap(__.both().where(within("policyholder_of_claim")).count()).as("comm_cnt").order().by(desc) .select("recomm_claim", "comm_cnt").dedup() ==>[recomm_claim:v[C26754],comm_cnt:1] ==>[recomm_claim:v[C26586],comm_cnt:1] ==>[recomm_claim:v[C10160],comm_cnt:1] ==>[recomm_claim:v[C28963],comm_cnt:1] ==>[recomm_claim:v[C3679],comm_cnt:1] ==>[recomm_claim:v[C67594],comm_cnt:1] ==>[recomm_claim:v[C69395],comm_cnt:1] ==>[recomm_claim:v[C87278],comm_cnt:1] ==>[recomm_claim:v[C87603],comm_cnt:1] ==>[recomm_claim:v[C96155],comm_cnt:1] ==>[recomm_claim:v[C96545],comm_cnt:1]
- 與已知涉詐保單相似的保單:
//查詢和相似的保單,根據相似度分數取前10。 gremlin> g.V('C4377') .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:C96545,相似度:0.992619926199262] ==>[Transaction:C15383,相似度:0.9871086556169429] ==>[Transaction:C17300,相似度:0.9871086556169429] ==>[Transaction:C30519,相似度:0.9871086556169429] ==>[Transaction:C56230,相似度:0.9871086556169429] ==>[Transaction:C60174,相似度:0.9871086556169429] ==>[Transaction:C6591,相似度:0.9871086556169429] ==>[Transaction:C66712,相似度:0.9871086556169429] ==>[Transaction:C68975,相似度:0.9871086556169429] ==>[Transaction:C7181,相似度:0.9871086556169429]
- K階鄰居:
6、客戶效果
某頭部保險公司,經測算其關聯查詢性能是原有保險反欺詐方案的10~100倍。在原先的客戶信息系統中,查詢一個保單關聯的信息(投保、理賠、疾病等信息),是通過兩表之間的多次JOIN實現,當屬性多、邏輯復雜時需要經過幾十次甚至百次數據庫交互,網絡通信的開銷帶來極大的性能損耗。通過使用阿里云圖數據庫GDB的存儲方案,可以帶來10~100倍的性能提升。