黃牛賬號(hào)識(shí)別之GraphCompute解決方案
本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務(wù)造成影響,請務(wù)必仔細(xì)閱讀。
在交易、注冊拉新場景,我們會(huì)經(jīng)常面臨黃牛賬號(hào)的困擾,影響拉新效果和新用戶的權(quán)益保證。針對這種業(yè)務(wù)場景,我們基于豐富表的圖數(shù)據(jù)關(guān)系,通過OneID快速識(shí)別和定位黃牛賬號(hào)、判定新人拉新規(guī)范,從而進(jìn)一步賦予業(yè)務(wù)更準(zhǔn)確和可解釋的防控手段。
為了方便用戶能夠熟悉圖計(jì)算服務(wù)GraphCompute,我們提供一份完整的OneID-黃牛賬號(hào)識(shí)別Demo數(shù)據(jù)、查詢Query和文檔指南,幫助用戶快速搭建一個(gè)圖計(jì)算應(yīng)用,并提供百萬級別數(shù)據(jù)量的黃牛賬號(hào)識(shí)別和挖掘能力。
什么是GraphCompute?
GraphCompute 是一個(gè)分布式的、萬億級數(shù)據(jù)規(guī)模下、高性能、高穩(wěn)定性的圖查詢和計(jì)算解決方案。同時(shí),搭載智能運(yùn)維和離線系統(tǒng),實(shí)現(xiàn)湖倉一體化的數(shù)據(jù)打通,支持多版本數(shù)據(jù)快速迭代和管理能力。結(jié)合阿里巴巴在電商、安全和社交等多個(gè)行業(yè)領(lǐng)域的積累,為全球企業(yè)及開發(fā)者提供圖技術(shù)服務(wù)
背景介紹
數(shù)字經(jīng)濟(jì)時(shí)代下,數(shù)據(jù)成為推動(dòng)創(chuàng)新發(fā)展的關(guān)鍵要素。數(shù)據(jù)的開放,推動(dòng)了多行業(yè)、跨行業(yè)、跨組織的協(xié)同與創(chuàng)新,催生出新型的產(chǎn)業(yè)形態(tài)和商業(yè)模式。但隨著數(shù)據(jù)價(jià)值的凸顯,針對數(shù)據(jù)的攻擊、竊取、濫用、劫持等活動(dòng)持續(xù)泛濫,并呈現(xiàn)出產(chǎn)業(yè)化、高科技化等特性。在互聯(lián)網(wǎng)企業(yè),對于識(shí)別、追蹤用戶身份都有強(qiáng)烈的需求,通過用戶的賬號(hào)、設(shè)備之間信息關(guān)聯(lián),能夠快速識(shí)別賬戶情況,做出更好的業(yè)務(wù)聯(lián)動(dòng)或者防護(hù)。在該類場景下,我們統(tǒng)一定義為OneID賬戶同人識(shí)別。
什么是OneID?
簡單來說OneID是一套跨屏、跨域的自然人身份識(shí)別、追蹤系統(tǒng),類似于實(shí)際生活中的身份證號(hào),對于每個(gè)互聯(lián)網(wǎng)世界的每個(gè)自然人都通過算法賦予一個(gè)穩(wěn)定的虛擬身份ID
- OneID,并且識(shí)別自然人所擁有的各類身份ID。 身份ID包括三大類:
- 賬號(hào)類:業(yè)務(wù)賬號(hào),手機(jī)號(hào),Email等等
- 設(shè)備類:設(shè)備IMEI,設(shè)備IMSI,設(shè)備IDFA,
- cookie類:Acookie等等。
OneID體系能夠?qū)⑾∈璧男畔⑼ㄟ^實(shí)體之間的關(guān)系匯聚起來,聚焦到自然人,譬如從重要設(shè)備ID能夠關(guān)聯(lián)出大量的賬號(hào)ID,說明這些賬號(hào)可以屬于一個(gè)人或者團(tuán)伙共有,并挖掘出業(yè)務(wù)平臺(tái)的黃牛或者非法團(tuán)伙信息。
為什么用“圖”做風(fēng)險(xiǎn)挖掘?
圖能夠高效表達(dá)關(guān)系和行為,業(yè)界通過圖計(jì)算相關(guān)技術(shù)能夠沉淀歸類部分圖模型和關(guān)系。而我們可以通過其中的關(guān)系現(xiàn)象進(jìn)行對應(yīng)的數(shù)據(jù)建模,就能將痕跡歸納總結(jié),應(yīng)用于欺詐防控。此外,傳統(tǒng)的欺詐檢測通常關(guān)注特征空間中的離群點(diǎn),而忽略了現(xiàn)實(shí)世界中的關(guān)系數(shù)據(jù)。在現(xiàn)實(shí)生活中,實(shí)體之間有著豐富的關(guān)系,圖結(jié)構(gòu)可以為欺詐檢測提供信息增益。
【黃牛賬號(hào)識(shí)別】業(yè)務(wù)落地
業(yè)務(wù)背景
某款科技公司網(wǎng)站,主要售賣各種AI數(shù)字化產(chǎn)品和解決方案,針對活動(dòng)都會(huì)發(fā)放優(yōu)惠券權(quán)益,但是主要希望能對網(wǎng)站的注冊賬戶做OneID風(fēng)控識(shí)別,幫助公司挖掘黃牛賬號(hào)、薅羊毛團(tuán)伙,減少無效資金損失。
通過對黃牛黨或者團(tuán)伙行為分析,普遍的現(xiàn)象是最大程度的利用手上設(shè)備資源,實(shí)現(xiàn)賬號(hào)體系的最大化;針對有部分用戶通過重復(fù)注冊賬號(hào)領(lǐng)取優(yōu)惠券薅羊毛的行為進(jìn)行檢測,需要進(jìn)行用戶到用戶的多度查詢;
根據(jù)業(yè)務(wù)的特點(diǎn)進(jìn)行抽象定義,最終的業(yè)務(wù)邏輯可以理解為:
1)查詢的業(yè)務(wù)場景:賬戶A - 設(shè)備G - 賬號(hào)B 二跳關(guān)系
2)需要獲取多種設(shè)備關(guān)聯(lián)的二跳用戶后,對設(shè)備路徑權(quán)重加分,最終得到
業(yè)務(wù)梳理
基于圖數(shù)據(jù)在交易欺詐、垃圾注冊場景下,我們就能夠OneID快速識(shí)別和定位黃牛賬號(hào)、新人拉新判定,從而進(jìn)一步賦予業(yè)務(wù)更準(zhǔn)確和可解釋的防控手段。
首先從離線算法出發(fā):探索的路線從圖傳播算法——>圖聚類算法——>圖表征算法,挖掘更大范圍,更深層次的風(fēng)險(xiǎn)。最開始使用圖傳播算法,可以快速地挖掘出少量風(fēng)險(xiǎn)實(shí)例且較高的準(zhǔn)確率效果,但是半監(jiān)督的圖傳播算法只能從局部出發(fā),挖掘出已知風(fēng)險(xiǎn)實(shí)體附近的少量風(fēng)險(xiǎn)實(shí)體。如何能夠從全局出發(fā),擴(kuò)大風(fēng)險(xiǎn)實(shí)例的召回,這時(shí)候開始使用圖聚類算法去挖掘風(fēng)險(xiǎn)團(tuán)伙。除了圖結(jié)構(gòu)可以幫助挖掘風(fēng)險(xiǎn)外,實(shí)體的屬性也可以幫助挖掘風(fēng)險(xiǎn)。充分結(jié)合賬號(hào)的違規(guī)、處罰、行為特征以帶來更多的信息增益,幫助挖掘更深層次的風(fēng)險(xiǎn)。
當(dāng)前我們重點(diǎn)講解的「黃牛賬號(hào)識(shí)別」,該類風(fēng)控場景就可以通過下圖第一步【圖傳播算法】,從當(dāng)前已經(jīng)風(fēng)險(xiǎn)的節(jié)點(diǎn)往外傳播影響決策能力,挖掘出高風(fēng)險(xiǎn)節(jié)點(diǎn),以及對應(yīng)的風(fēng)險(xiǎn)分?jǐn)?shù)。
Step1:日志數(shù)據(jù)梳理
用戶登錄、注冊信息進(jìn)行日志收集,將用戶的登錄記錄進(jìn)行
定義數(shù)據(jù):確認(rèn)數(shù)據(jù)源,定義每個(gè)數(shù)據(jù)源返回的數(shù)據(jù)格式、字段
SLS日志收集,原始的數(shù)據(jù)信息包括:
用戶登錄信息
用戶注冊信息
cookie信息
數(shù)據(jù)標(biāo)準(zhǔn)化及映射:有一個(gè)專門的平臺(tái)可以定義數(shù)據(jù)源數(shù)據(jù)到表中數(shù)據(jù)的映射,并允許對數(shù)據(jù)進(jìn)行腳本化處理
【用戶信息表】
注冊賬號(hào)、時(shí)間等有效信息
【設(shè)備信息表】
設(shè)備類型:手機(jī)、IP地址、email 等信息
事件觸發(fā)增量寫入:當(dāng)事件發(fā)生,觸發(fā)一個(gè)向?qū)?yīng)表內(nèi)寫的增量信息
新用戶注冊登錄后,進(jìn)行數(shù)據(jù)輸出,最終將進(jìn)行【用戶信息表】和【設(shè)備信息表】對應(yīng)信息更新
持久化:引入MaxCompute,存儲(chǔ)離線全量
Step2:離線算法選擇
Community Search根據(jù)網(wǎng)絡(luò)中給出的已知種子節(jié)點(diǎn)的局部信息出發(fā),去發(fā)現(xiàn)給定種子節(jié)點(diǎn)所在的局部社區(qū),具有更強(qiáng)的社區(qū)針對性,是一種圖傳播的方法。可以使用半監(jiān)督方法,基于已有的有標(biāo)記的節(jié)點(diǎn),為附近的無標(biāo)記的節(jié)點(diǎn)打上偽標(biāo)簽,并不斷迭代預(yù)測更多的無標(biāo)記節(jié)點(diǎn)。
在反作弊時(shí),通常只獲取到少量有標(biāo)簽數(shù)據(jù)。同時(shí),需要大量的無標(biāo)簽數(shù)據(jù),這些無標(biāo)簽數(shù)據(jù)中存在著大量的風(fēng)險(xiǎn)實(shí)例,如何從大量的無標(biāo)簽數(shù)據(jù)中,挖掘風(fēng)險(xiǎn)實(shí)例,是該場景需要解決的問題。這里構(gòu)建半監(jiān)督學(xué)習(xí)的流程,基于業(yè)務(wù)提供的風(fēng)險(xiǎn)數(shù)據(jù)作為原始輸入,挖掘風(fēng)險(xiǎn)數(shù)據(jù)周邊的高風(fēng)險(xiǎn)實(shí)例,并將挖掘的實(shí)例反饋給業(yè)務(wù)校驗(yàn),接下來將業(yè)務(wù)校驗(yàn)認(rèn)為有風(fēng)險(xiǎn)的實(shí)例添加到原始輸入中,繼續(xù)迭代,從而召回更多的風(fēng)險(xiǎn)數(shù)據(jù)。半監(jiān)督方法只能挖掘有限有標(biāo)簽附近的樣例,無法發(fā)現(xiàn)特定結(jié)構(gòu)的團(tuán)伙.
工業(yè)界比較知名的基于半監(jiān)督關(guān)系網(wǎng)絡(luò)圖上的風(fēng)險(xiǎn)實(shí)體挖掘方法有亞馬遜在2018年提出的GraphRAD方法和螞蟻集團(tuán)在2021年提出的Risk-alike方法,這兩種方法都是基于黑種子節(jié)點(diǎn)的輸入在圖上挖掘風(fēng)險(xiǎn)。也可以使用鏈接分析的方法,如PageRank,從已有的有標(biāo)記的節(jié)點(diǎn)出發(fā),計(jì)算網(wǎng)絡(luò)中其他節(jié)點(diǎn)的重要程度。
例如:
Risk_alike
輸入:黑種子節(jié)點(diǎn),所有的邊關(guān)系
step1:構(gòu)圖:基于與黑種子點(diǎn)有2跳以內(nèi)關(guān)聯(lián)關(guān)系的節(jié)點(diǎn)構(gòu)圖;
step2:用louvain做社區(qū)發(fā)現(xiàn)得到風(fēng)險(xiǎn)團(tuán)伙,并對跟團(tuán)伙有兩跳以內(nèi)關(guān)聯(lián)的節(jié)點(diǎn)做召回;然后用規(guī)則篩選黑節(jié)點(diǎn)占比>=40%且節(jié)點(diǎn)數(shù)量<=200的團(tuán)伙;
step3:基于pageRank計(jì)算每個(gè)節(jié)點(diǎn)的風(fēng)險(xiǎn)分并排序。從黑種子節(jié)點(diǎn)出發(fā),計(jì)算每個(gè)節(jié)點(diǎn)對黑種子節(jié)點(diǎn)的重要程度,作為風(fēng)險(xiǎn)分;
step4:提純Purify:基于louvain社區(qū)發(fā)現(xiàn)的結(jié)果和pageRank的結(jié)果篩選并輸出挖掘的高風(fēng)險(xiǎn)節(jié)點(diǎn)。
輸出:挖掘出的高風(fēng)險(xiǎn)節(jié)點(diǎn),以及對應(yīng)的風(fēng)險(xiǎn)分?jǐn)?shù)。
阿里云訓(xùn)練平臺(tái)PAI中已內(nèi)置了Risk-alike、Louvain、LPA、PageRank等反作弊算法,可直接調(diào)用即可。最終結(jié)果產(chǎn)出:【用戶信息表】注冊賬號(hào)、時(shí)間等有效信息、【新增】用戶團(tuán)伙標(biāo)簽 isbad = true | false
Step3:業(yè)務(wù)模型的梳理和沉淀
根據(jù)對前面業(yè)務(wù)邏輯的了解,我們設(shè)計(jì)了多種圖配置的業(yè)務(wù)模型來做相應(yīng)的圖構(gòu)建;
【方案一】 | 【方案二】 | 【方案三】 |
特點(diǎn):relation異構(gòu)表 與原始的數(shù)據(jù)結(jié)構(gòu)最貼近、表配置量過多 | 特點(diǎn):relation同構(gòu)表 圖配置簡單,只需要2張表:User用戶表和設(shè)備關(guān)聯(lián)表 | 特點(diǎn):增加設(shè)備作為獨(dú)立節(jié)點(diǎn) 對于熱門設(shè)備的關(guān)系變更更加友好 |
問題:設(shè)備類型不能靈活增加,設(shè)備關(guān)系表需要人工添加,不利于擴(kuò)展性 | 問題:對于插入一個(gè)新用戶,需要先進(jìn)行一(多)次查詢找到相關(guān)的用戶關(guān)系才能進(jìn)行插入 | 問題:犧牲一些查詢性能,增加了設(shè)備到用戶查詢 |
Step4:業(yè)務(wù)模型優(yōu)化方案
基于業(yè)務(wù)考量,最終業(yè)務(wù)配置模型選擇了【方案三】來支持,主要的考慮如下:
總結(jié)一:進(jìn)行起點(diǎn)為指定medium類型的快速檢索,通過type類型進(jìn)行過濾和統(tǒng)計(jì)計(jì)算更方便
總結(jié)二:插入性能優(yōu);對于插入一個(gè)新用戶,設(shè)計(jì)1、2需要先進(jìn)行一(多)次查詢找到相關(guān)的用戶關(guān)系才能進(jìn)行插入,設(shè)計(jì)3不需要這個(gè)步驟;設(shè)計(jì)1、2需要進(jìn)行一次點(diǎn)插入和多次邊插入,設(shè)計(jì)3只需1次點(diǎn)插入和2次邊插入。對于某些熱門的IP,一個(gè)使用熱門IP的新用戶插入需要插入數(shù)萬條邊,對系統(tǒng)的開銷會(huì)很大。考慮以下case:插入用戶D,已有3位用戶ABC使用與D相同的IP
方案1、2:插入用戶點(diǎn)D,查詢與D使用同IP的所有用戶,插入邊。插入前,3條點(diǎn)數(shù)據(jù),6條邊數(shù)據(jù);插入后4個(gè)點(diǎn),12條邊數(shù)據(jù)
方案3:插入用戶點(diǎn)D,如果該IP不存在表中,插入IP點(diǎn)192.168.1.1,插入用戶D到IP點(diǎn)之間的正反向邊。插入前,4條點(diǎn)數(shù)據(jù),6條邊數(shù)據(jù);插入后4(5)個(gè)點(diǎn),8條邊數(shù)據(jù)。
主要問題在于犧牲查詢性能:用戶到用戶的跳數(shù)從1跳增加到2跳,綜合考慮總結(jié)如下:通過【方案三】可以更好的簡化離線更新鏈路的邏輯,同時(shí)對于性能影響不會(huì)太大。
GraphCompute搭建
Step1:圖模型確定
根據(jù)前面的業(yè)務(wù)梳理和沉淀,我們最終按照【方案三】進(jìn)行圖配置,包括節(jié)點(diǎn)表User、medium設(shè)備表、relation 用戶設(shè)備關(guān)系表。
Step2:選擇適合自己的數(shù)據(jù)源方式
請根據(jù)自己的業(yè)務(wù)特點(diǎn)進(jìn)行選擇:
已是或者未來需要MaxCompute,源數(shù)據(jù)托管到MaxCompute,同時(shí)業(yè)務(wù)數(shù)據(jù)需要做24小時(shí)實(shí)時(shí)計(jì)算更新圖數(shù)據(jù) - 請參考【方案一:MaxCompute數(shù)據(jù)源 + API數(shù)據(jù)】 --- 最佳推薦方式
數(shù)據(jù)直接托管到圖計(jì)算GraphCompute,支持業(yè)務(wù)數(shù)據(jù)通過API方式,支持24小時(shí)實(shí)時(shí)數(shù)據(jù)更新 - 請參考【方案二:API數(shù)據(jù)源】
已是MaxCompute資深用戶,源數(shù)據(jù)托管到MaxCompute,每天定時(shí)產(chǎn)出MaxCompute分區(qū),無需對圖數(shù)據(jù)做24小時(shí)增量更新 - 可選擇【MaxCompute數(shù)據(jù)源】
Step3:【黃牛賬號(hào)識(shí)別】- 創(chuàng)建數(shù)據(jù)源
當(dāng)前我們的快速接入采用【方案一:MaxCompute源數(shù)據(jù)表 + API數(shù)據(jù)】、【方案二:API數(shù)據(jù)源】
【方案一:MaxCompute源數(shù)據(jù)表 + API數(shù)據(jù)】
該方案依靠MaxCompute已有項(xiàng)目和源表數(shù)據(jù)。
如果沒有現(xiàn)成的數(shù)據(jù),可以選擇直接使用我們提供的Demo數(shù)據(jù)源(已經(jīng)定義好了節(jié)點(diǎn)和關(guān)系數(shù)據(jù))。
如果業(yè)務(wù)數(shù)據(jù)已經(jīng)存在CSV或者M(jìn)axCompute中,可以選擇自己的MaxCompute源數(shù)據(jù)。
用戶源表:
使用【igraph_mock.anti_cheating_demo_user_vertex】,節(jié)點(diǎn)表中包括100000個(gè)用戶,其中有1%的風(fēng)險(xiǎn)賬戶(isbad=TRUE)
可參考的MaxCompute建表語句:
isbad字段可以根據(jù)需要添加,用于標(biāo)示一些已知的黃牛用戶。
根據(jù)需要可以加入更多的用戶信息字段,例如名字、性別、注冊時(shí)間等以滿足其他業(yè)務(wù)邏輯的需要。
CREATE TABLE IF NOT EXISTS anti_cheating_demo_user_vertex ( user_id BIGINT COMMENT '用戶賬號(hào)id' ,isbad BOOLEAN COMMENT '是否為風(fēng)險(xiǎn)賬號(hào)' ) COMMENT '用戶頂點(diǎn)表' PARTITIONED BY (ds STRING COMMENT '日期分區(qū)');
媒介表
使用【igraph_mock.anti_cheating_demo_medium_vertex】,關(guān)系表中包括100000個(gè)媒介,其中0.3%的媒介被超過1個(gè)用戶使用。
可參考的MaxCompute建表語句:
常見的medium_type包括電話號(hào)碼、郵箱、IP、設(shè)備等,本例中只包括電話號(hào)碼和郵箱。
weight用于表示媒介的重要性,一般來說同一種設(shè)備的weight可以使用同樣的值。例如:多個(gè)用戶使用同一IP不需要特定區(qū)分。
CREATE TABLE IF NOT EXISTS anti_cheating_demo_medium_vertex ( medium_id BIGINT COMMENT '媒介id' ,medium_type STRING COMMENT '媒介類型' ,weight double COMMENT '權(quán)重' ) COMMENT '媒介頂點(diǎn)表' PARTITIONED BY (ds STRING COMMENT '日期分區(qū)');
用戶媒介關(guān)系表
使用【igraph_mock.anti_cheating_demo_medium_edge】,關(guān)系表中包括100000個(gè)媒介,其中0.3%的媒介被超過1個(gè)用戶使用
可參考的MaxCompute建表語句:
score主要用于表示用戶使用媒介的頻繁程度/重要性,可以根據(jù)業(yè)務(wù)邏輯進(jìn)行賦值,如沒有特殊業(yè)務(wù)邏輯可以默認(rèn)設(shè)置為1。
CREATE TABLE IF NOT EXISTS anti_cheating_demo_user_medium_edge
(
user_id BIGINT COMMENT '用戶賬號(hào)id'
,medium_id BIGINT COMMENT '媒介id'
,score double COMMENT '權(quán)重'
)
COMMENT '用戶媒介關(guān)系邊表'
PARTITIONED BY (ds STRING COMMENT '日期分區(qū)');
【方案二:API數(shù)據(jù)源】
該方案依靠用戶服務(wù)端SDK或者控制臺(tái)寫入窗口進(jìn)行數(shù)據(jù)寫入和更新。
控制臺(tái)寫入窗口可參考:【圖運(yùn)維 - 選擇User、Relation后右鍵 - 增量數(shù)據(jù)寫入】。
【MaxCompute源表操作指南】
業(yè)務(wù)可參看如下步驟自行創(chuàng)建MaxCompute數(shù)據(jù)表:
在DataWorks創(chuàng)建數(shù)據(jù)表,每一種點(diǎn)表和邊表需要有一張自己單獨(dú)的數(shù)據(jù)表。
進(jìn)入DataWorks,左上角選擇數(shù)據(jù)開發(fā)。
進(jìn)入業(yè)務(wù)流程->MaxCompute->表,右鍵新建表,并輸入表的名字。
設(shè)置表的屬性。
項(xiàng)目名及表名(重要):
不可更改,記下項(xiàng)目名(MaxCompute引擎實(shí)例)及表名,需要給圖計(jì)算賬號(hào)授權(quán)。
基本屬性中文名:可以設(shè)置表的中文名字和描述。
物理模型設(shè)計(jì):
分區(qū)類型:請選擇分區(qū)表。
生命周期:設(shè)置生命周期意味著表的每個(gè)分區(qū)會(huì)保留xx天后被自動(dòng)刪除,請按照需要勾選 。
表結(jié)構(gòu)設(shè)計(jì):請逐列添加表的列屬性,主要包括列名、類型和是否為主鍵。字段類型的選擇請盡量貼合字段本身的屬性(例如:在精度要求不高的情況下使用float代替double類型、對于數(shù)字類型的ID使用int類型代替string類型),這樣有助于減少數(shù)據(jù)表構(gòu)建索引的大小,節(jié)約數(shù)據(jù)回流生效的時(shí)間。
警告注意:圖計(jì)算目前字段類型有所限制,僅支持MaxCompute 1.0、2.0的基礎(chǔ)數(shù)據(jù)類型,不支持復(fù)雜類型(ARRAY、MAP、STRUCT),具體字段類型定義及取值范圍請參考2.0數(shù)據(jù)類型版本。
Step4:【黃牛賬號(hào)識(shí)別】- 創(chuàng)建圖計(jì)算服務(wù)
Step4-1:購買實(shí)例鏈接
地域:為了減少網(wǎng)絡(luò)延遲,請盡可能選擇靠近您的位置。
用戶名/密碼:用于請求時(shí)的訪問驗(yàn)證。
規(guī)格:請根據(jù)您的數(shù)據(jù)量及請求的復(fù)雜程度選擇規(guī)格。
推薦選擇獨(dú)享通用型
如果您的業(yè)務(wù)計(jì)算需求較為復(fù)雜或?qū)Ψ祷匦阅艿囊筝^高,建議增加分片數(shù)
規(guī)格參考:
一般百萬級數(shù)據(jù)量級,可參考如下配置即可。
如果數(shù)據(jù)量過大,可增加【分片數(shù)】。
如果線上查詢流量加大,可以增加【副本數(shù)】。
購買完畢之后需要等待【15分鐘】實(shí)例初始化完畢。
購買活動(dòng):企業(yè)認(rèn)證用戶新客首購可以參加免費(fèi)一個(gè)月活動(dòng)。
Step4-2: 創(chuàng)建業(yè)務(wù)的圖模型
根據(jù)前面【Step1】中已總結(jié)完該場景的業(yè)務(wù)圖模型,我們這里就可以直接創(chuàng)建;在右側(cè)列表選擇“圖列表”,并點(diǎn)擊新增,輸入圖的名字及描述。
Step4-3: 創(chuàng)建節(jié)點(diǎn)表
創(chuàng)建節(jié)點(diǎn)表【User】
左上角選擇“新增點(diǎn)”并輸入點(diǎn)的名稱。
選擇數(shù)據(jù)來源為【MaxCompute數(shù)據(jù)源+API更新】
輸入MaxCompute項(xiàng)目名和表名
用戶源表:使用【項(xiàng)目名:igraph_mock,表名:anti_cheating_demo_user_vertex】
點(diǎn)擊【導(dǎo)入字段】會(huì)自動(dòng)為您導(dǎo)入MaxCompute中的對應(yīng)表字段名及類型映射。
選擇您的pkey并根據(jù)字段內(nèi)的數(shù)據(jù)調(diào)整字段類型,請注意GraphCompute的表類型與MaxCompute有些不同。請盡可能選擇合適的類型int取值范圍(例如:INT8 INT32 INT64),這將大大加速您的請求響應(yīng)速度。
索引類型:一般直接選擇【KV】
如果您有倒排需求請選擇【inverted INDEX】,并使用"添加索引"增加索引字段,可以提供全局統(tǒng)計(jì)和查詢能力,比如需要按照一些屬性做全局查詢:例如「查詢所有風(fēng)險(xiǎn)用戶」等場景。
如果您需要添加額外字段,可以使用“添加字段”。
如果您需要啟用done分區(qū)自動(dòng)回流,請打開掃描DONE分區(qū)開關(guān),具體用法詳見done分區(qū)指南。
創(chuàng)建節(jié)點(diǎn)表【medium】
媒介源表:使用【項(xiàng)目名:igraph_mock,表名:anti_cheating_demo_medium_vertex】
Step4-4:創(chuàng)建關(guān)系表
創(chuàng)建用戶到媒介的正向邊
選中user點(diǎn),鼠標(biāo)右鍵-彈出【新增邊】,選擇邊的入點(diǎn)并輸入邊的名稱。
選擇數(shù)據(jù)來源“MaxCompute數(shù)據(jù)源+API更新”.
輸入項(xiàng)目名+表名并導(dǎo)入字段。
關(guān)系源表:使用【項(xiàng)目名:igraph_mock,表名:anti_cheating_demo_user_medium_edge】。
選擇起點(diǎn)字段及終點(diǎn)字段并根據(jù)字段內(nèi)的數(shù)據(jù)調(diào)整字段類型。
pkey起點(diǎn)字段:user_id
skey終點(diǎn)字段:medium_id
如果您需要添加額外字段,可以使用“添加字段”。
如果您需要啟用done分區(qū)自動(dòng)回流,請打開掃描DONE分區(qū)開關(guān),具體用法詳見done分區(qū)指南。
單擊提交。
創(chuàng)建媒介到用戶的反向邊
選擇數(shù)據(jù)來源“MaxCompute數(shù)據(jù)源+API更新”。
輸入項(xiàng)目名+表名并導(dǎo)入字段。
關(guān)系源表:使用【項(xiàng)目名:igraph_mock,表名:anti_cheating_demo_user_medium_edge】。
選擇起點(diǎn)字段及終點(diǎn)字段并根據(jù)字段內(nèi)的數(shù)據(jù)調(diào)整字段類型。
pkey起點(diǎn)字段:medium_id
skey終點(diǎn)字段:user_id
Step4-5:圖模型發(fā)布
節(jié)點(diǎn)User表 、設(shè)備medium 和關(guān)系Relation表創(chuàng)建號(hào),即可依次點(diǎn)擊【保存】、【發(fā)布】。
Step4-6: 數(shù)據(jù)索引構(gòu)建
圖模型發(fā)布完成后就可以進(jìn)行圖計(jì)算的索引構(gòu)建工作,點(diǎn)擊【一鍵回流】功能即可觸發(fā)海量數(shù)據(jù)的索引構(gòu)建。
分區(qū)選擇:根據(jù)業(yè)務(wù)數(shù)據(jù)需要,自行選擇一個(gè)可用分區(qū)。
增量時(shí)間戳:數(shù)據(jù)切換上線時(shí),回追增量數(shù)據(jù)的起始時(shí)間。
數(shù)據(jù)索引構(gòu)建的耗時(shí)主要決定于數(shù)據(jù)量級的大小,一般百萬級數(shù)據(jù)量,需要等待15-20分鐘即可完成。通過【圖運(yùn)維】中圖模型的節(jié)點(diǎn)和關(guān)系都綠色即可進(jìn)行判斷。
Step4-7: 判定賬戶風(fēng)險(xiǎn)
通過團(tuán)伙大小等相關(guān)業(yè)務(wù)邏輯進(jìn)行判定。
GraphCompute查詢
通過前面的步驟,圖計(jì)算應(yīng)用及數(shù)據(jù)已經(jīng)準(zhǔn)備完成,下面就可以進(jìn)行圖數(shù)據(jù)的查詢和分析;可以通過【圖探索】-進(jìn)行探索式交互或者控制臺(tái)Gremlin語句查詢。
查詢用例
直接查詢
//查詢某個(gè)用戶的信息判斷是否為風(fēng)險(xiǎn)用戶
g("anti_cheating").V("-889411487137524591").hasLabel("user")
間接查詢
//查詢某個(gè)媒介關(guān)聯(lián)到風(fēng)險(xiǎn)用戶的個(gè)數(shù)
g("anti_cheating").V("-3161643561846490971").hasLabel("medium")
.outE().inV()
.filter("isbad=\"true\"").count()
//查詢與某用戶使用相同媒介的風(fēng)險(xiǎn)用戶個(gè)數(shù)
g("anti_cheating").V("-189711352665847917").hasLabel("user").
.outE().outE().inV()
.filter("isbad=\"true\"").count()
使用權(quán)重進(jìn)行枝剪
//對于部分超級媒介可能同時(shí)有數(shù)十萬用戶使用,例如某高校的ip,
//此時(shí)建議使用sample(n).by("score"),隨機(jī)選擇n條關(guān)聯(lián)用戶進(jìn)行檢查,按照score字段分越高,越有可能被選取到
g("anti_cheating").V("-189711352665847917").hasLabel("user").
.outE().sample(10).by("score").outE().inV()
.filter("isbad=\"true\"").count()
使用權(quán)重計(jì)算風(fēng)險(xiǎn)得分
g("anti_cheating").withSack(supplier(normal,"0.0"),Splitter.identity,Operator.sum).
V("2532895489060363835").hasLabel("user").outE().sack(Operator.assign).by("to_double(score)").
inV().sack(Operator.mult).by("to_double(weight)").outE().inV()
.filter("isbad=\"true\"").barrier().sack()
【GraphCompute】技術(shù)價(jià)值
當(dāng)前市面上有很多不同類型的圖產(chǎn)品可以選擇,而且每種產(chǎn)品都有獨(dú)特的優(yōu)勢;根據(jù)各個(gè)行業(yè)的企業(yè)和場景不一樣,業(yè)務(wù)需要了解產(chǎn)品的差異能力,這樣對于選擇性更有目的性;GraphCompute超強(qiáng)的實(shí)時(shí)寫性能,專攻海量圖數(shù)據(jù)存儲(chǔ)和快速查詢;通過引擎索引和算子優(yōu)化邏輯,極好的保障圖查詢的穩(wěn)定性;數(shù)據(jù)限制邏輯、自研算子、數(shù)據(jù)導(dǎo)入有極強(qiáng)的容錯(cuò)機(jī)制,重復(fù)輸入做最新數(shù)據(jù)的覆蓋;一站式智能運(yùn)維能力,既提供復(fù)雜分布式圖引擎能力,也簡化了用戶的運(yùn)維成本。
圖計(jì)算服務(wù)的方案優(yōu)勢:
1、低成本
圖計(jì)算Proxy-Search多行架構(gòu)讓集群負(fù)載更高,提高資源利用率,節(jié)省機(jī)器資源50%;同時(shí)集群負(fù)載QPS更高1倍。
2、高性能
節(jié)點(diǎn)拆分、多種kkv類型,在數(shù)據(jù)構(gòu)建時(shí)已經(jīng)將數(shù)據(jù)進(jìn)行分類、同時(shí)提供可定制的截?cái)噙壿嫳WC查詢性能;iGraph在熱點(diǎn)key的處理經(jīng)驗(yàn)豐富,多級cache 能夠比較好的防御這類問題,同時(shí)可以支持動(dòng)態(tài)擴(kuò)容等;相比開源方案,查詢耗時(shí)性能RT降低100%~500%
3、秒級百萬更新能力
在風(fēng)控領(lǐng)域中,OneID- 同人防控能力是通常金融、互聯(lián)網(wǎng)企業(yè)都需要和建設(shè)的風(fēng)控規(guī)則,需要實(shí)時(shí)判定用戶是否違規(guī)。該類場景需要:整體數(shù)據(jù)更新量龐大,同時(shí)對圖數(shù)據(jù)的查詢性能要求較高,聚焦OLTP能力;GraphCompute通過最終一致性方案能夠保證單節(jié)點(diǎn)百萬QPS更新量,生效時(shí)間在1-2s,保證風(fēng)控?cái)?shù)據(jù)的實(shí)效性到秒級,從而提升識(shí)別準(zhǔn)確率;
4、數(shù)倉一體化對接能力
離線處理平臺(tái)對接,風(fēng)控安全業(yè)務(wù)都會(huì)由算法、數(shù)據(jù)團(tuán)隊(duì)建設(shè)完整的大數(shù)據(jù)分析,基于阿里云MaxCompute數(shù)倉,我們能夠無縫對接數(shù)據(jù)源,同時(shí)支持?jǐn)?shù)倉快速迭代,將數(shù)倉全量數(shù)據(jù)的迭代周期最快從T天級到小時(shí)級別。