背景
行為序列模型相對于傳統(tǒng)機(jī)器學(xué)習(xí)的主要優(yōu)勢在于不依賴行為畫像特征,無需強(qiáng)專家經(jīng)驗(yàn)挖掘高效特征來提升模型性能,縮短了特征工程的周期,能快速響應(yīng)黑產(chǎn)攻擊。
黑產(chǎn)通過刷接口、群控、真人眾包等作弊手段在關(guān)注、點(diǎn)贊、評論等核心場景進(jìn)行攻擊。不同作弊方式在行為序列上有不同的特點(diǎn)。刷接口、群控作弊屬于機(jī)器作弊,行為序列呈現(xiàn)團(tuán)伙相似性、序列周期性 / 密集性。真人眾包主要通過線下軟件分發(fā)任務(wù)真人賬號執(zhí)行,行為鏈路具有比較固定模式以上作弊方式在行為序列上具有顯著性,所以在風(fēng)控業(yè)務(wù)上序列模型有很好的落地能力。
序列相似性檢測
目的
在反作弊場景,經(jīng)常會(huì)發(fā)現(xiàn)黑產(chǎn)的行為序列經(jīng)常會(huì)出現(xiàn)重復(fù)的片段比如 11332221133222 ( 數(shù)字表示 api 接口埋點(diǎn)映射的數(shù)字編號),其中 1133222 為重復(fù)片段 或者會(huì)發(fā)現(xiàn)不同黑賬號行為序列的相似度很高比如賬戶 A 行為序列 135555566 賬戶 B 的行為序列為 13555666。這是因?yàn)楹诋a(chǎn)利用腳本批量控制賬號進(jìn)行動(dòng)作周期的重復(fù)或者非周期動(dòng)作賬戶之間的重復(fù),導(dǎo)致了黑產(chǎn)的行為序列度呈現(xiàn)一定的相似性、周期性。所以利用序列相似檢測算法對黑產(chǎn)進(jìn)行識別,相似性檢測序列大都為單序列。
如何定義單序列?
單行為序列是指用戶僅只有單個(gè)動(dòng)作構(gòu)成了序列,可抽象表達(dá)為 X=(x_1, x_2..x_i..x_n)
其中 x_i 表示具體的行為動(dòng)作
技術(shù)方案
以上背景可歸納為以下兩種作弊類
作弊序列特征:
- 機(jī)刷性:同一作弊用戶行為序列片段相似
- 團(tuán)伙性:不同作弊用戶之間行為序列相似
序列相似檢測流程分為數(shù)據(jù)預(yù)處理、序列相似檢測、落地處置三部分。機(jī)刷性和團(tuán)伙性的作弊序識別的區(qū)別在于序列預(yù)處理階段是否進(jìn)行切割,在后續(xù)相似檢及落地處置保持一致。序列相似檢測算法有以下兩種流程:
- 聚類:對向量化后的序列使用聚類算法,篩選序列高聚集團(tuán)伙。
- 社區(qū)發(fā)現(xiàn):對向量化序列進(jìn)行建圖(序列相似度計(jì)算小于閾值建邊),建圖后用社區(qū)發(fā)現(xiàn)序列高聚集團(tuán)伙 。
序列深度模型
目的
隨著平臺反作弊方案的深化,黑產(chǎn)作弊難以在單一場景完成,需要在多個(gè)動(dòng)作鏈路上規(guī)避場景的攔截手段,單序列動(dòng)作建模只考慮了動(dòng)作本身,動(dòng)作上下文信息沒有被充分利用。例如 A 用戶兩次點(diǎn)贊的時(shí)間隔相差 1min,而 B 用戶兩次點(diǎn)贊之間僅相差 0.01s,在單序列動(dòng)作建模中是沒有區(qū)分,但是如果將點(diǎn)贊時(shí)間間隔作為特征融入單序列就能有效識別 A/B 用戶行為的區(qū)別。用戶發(fā)生一個(gè)動(dòng)作的時(shí),該動(dòng)作伴的附屬特征比如設(shè)備信息,軟件信息,ip 信息等也都是非常有意義?;谏鲜龇治觯M麡?gòu)建一種結(jié)合用戶上下文信息的多維混合行為序列,來完成對黑產(chǎn)作弊更具針對性的建模。
如何從單序列衍生為上下文信息多維混合序列?
如何利用動(dòng)作上下文信息?
為了充分利用動(dòng)作的上下文信息對不同用戶的識別,可以將動(dòng)作發(fā)生的時(shí)間戳作為其特征的一部分,而后通過前后時(shí)間戳的差值來描述動(dòng)作的上下文;在動(dòng)作發(fā)生時(shí),采集發(fā)生動(dòng)作時(shí)刻的設(shè)備,軟件,ip 等信息,對其特征處理后作為上下文。
上下文特征序列處理
1)離散值特征處理
若想描述離散特征序列相鄰變化,則處理為離散值相鄰變化序列,前后一致處理為 0 不一致為。這種處理適合枚舉種類較多且強(qiáng)調(diào)變化對作弊有識別作用的序列特征,比如設(shè)備(device_id)序列。
2)續(xù)值特征處理
附加屬性都是離散的類別值,但諸如用戶設(shè)備電量,用戶投稿數(shù)等特征卻是連續(xù)的,對這類連續(xù)特征,采取冪次分桶來進(jìn)行離散化,強(qiáng)化桶間的特征顯著性。
3)時(shí)間戳特征處理
時(shí)間戳雖然屬于連續(xù)值可直接進(jìn)行分桶操作,但是時(shí)間間隔差值對作弊用戶顯著性更大,所以采取前后節(jié)點(diǎn)的時(shí)間戳差值后再分桶的方式進(jìn)行特征處理
技術(shù)方案
技術(shù)架構(gòu)
基于以上技術(shù)方案構(gòu)建了一套可離線一鍵訓(xùn)練、離線例行預(yù)測(天級別 / 小時(shí)級別)、在線實(shí)時(shí)預(yù)測一體化的系統(tǒng)。該系統(tǒng)界面化操作,高可配置化參數(shù),能實(shí)現(xiàn) 20min 內(nèi)訓(xùn)練并上線上下文序列模型。
- 數(shù)據(jù):支持自定義特征序列輸入,配置化特征處理模塊
- 參數(shù):支持自定義模型及模型參數(shù)輸入
- 功能:支持例行離線預(yù)測寫線上名單
系統(tǒng)主要可分為特征構(gòu)建、在線預(yù)測、離線訓(xùn)練三大部分:
- 特征構(gòu)建:通過特征平臺構(gòu)建 Flink 實(shí)時(shí)序列及 spark 離線序列作為線上序列數(shù)據(jù)的輸入
- 離線訓(xùn)練:TunaLite 平臺 SQL 化輸入訓(xùn)練黑白樣本且自定義選擇特征處理函數(shù)、模型選型及模型參數(shù)進(jìn)行一鍵離線訓(xùn)練,訓(xùn)練完成模型文件上傳至 TOS。
- 在線預(yù)測:shark 決策中心調(diào)用預(yù)測服務(wù)并傳入模型、特征相關(guān)參數(shù)后返回模型預(yù)測結(jié)果。
除了以上實(shí)時(shí)預(yù)測鏈路,提供了例行離線預(yù)測鏈路。方式為 SQL 化輸入例行預(yù)測樣本,自動(dòng)生成 Dorado 例行預(yù)測任務(wù),將預(yù)測結(jié)果通過 kafka 寫入線上名單進(jìn)行攔截。當(dāng)業(yè)務(wù)場景調(diào)用 QPS 過大時(shí)可使用該方式進(jìn)行模型落地。
歷史長序列模型
目的
短時(shí)序列建模已有不少較成熟模型方案及落地實(shí)時(shí)服務(wù),以上涉及的上下文序列模型屬于短時(shí)序列方案。從用戶行為畫像角度,短時(shí)行為序列缺陷為只能限定步長進(jìn)行序列建模,只能刻畫近期局部序列信息無法刻畫全局,從而使部分信息缺失。所以為了更完備序列信息就考慮到了長序列建模。從業(yè)務(wù)治理角度,短時(shí)序列方案傾向于解決行為短鏈路特征顯著或者作弊周短的黑產(chǎn),對于長鏈路行為比如真人眾包或者長作弊周期黑產(chǎn)無法捕捉。
技術(shù)方案
采用的模型主要參考阿里媽媽 CTR 預(yù)估模型 MIMN,根據(jù)風(fēng)控場景特性對模型精簡后再遷移。模型輸入為帶有上下文信息行為序列,模型核心模塊有 MIU(Memory Induction Unit)和 NTM(Neural Turing Machine)兩部分,分別產(chǎn)出了記憶信息相關(guān)的 M (下圖綠色矩陣)和 S (下圖藍(lán)色矩陣) 記憶矩陣來存儲歷史行為序列信息。
模型結(jié)構(gòu)
技術(shù)架構(gòu)
如何進(jìn)行序列增量更新?
記憶矩陣可理解為對用戶行為序列 Encoder 過程的中間產(chǎn)物并,且濃縮了目前為止用戶行為序列的所有信息。序列增量更新的過程為根據(jù) t 步產(chǎn)出的記憶矩陣 和 t+1 步的行為序列 更新得到 t+1 步記憶矩陣和 t+1 步用戶 Embdding,以此循環(huán)就可以得到表征歷史行為序列的用戶 Embdding。產(chǎn)出的用戶 Embedding 下游可用于分類和檢索。
下游分類任務(wù)
類 Session 行為分布特征 + 行為序列 Embedding 作為 tunalite 平臺 XGboost 算法的特征輸入,并且增量召回樣本特性為持續(xù)性作弊且沒有被短時(shí)行為序列模型召回。
下游黑庫檢索任務(wù)
行為相似的用戶的行為序列 Embedding 距離比較相近。檢索任務(wù)就是以黑種子為中心計(jì)算黑用戶行為 序列 Embedding 與其他用戶行為序列 Embedding 的索引距離,選擇近似 Top N 或者閾值范圍內(nèi)的用 戶作為黑樣本擴(kuò)召。