天天看點

第三屆Apache Flink 極客挑戰賽暨AAIG CUP攻略釋出!

本文作者:阿裡雲 周雲峰(雲岩)、淘系技術部 黃家明(明小)

大賽直通車:

https://tianchi.aliyun.com/competition/entrance/531925/introduction 第三屆Apache Flink 極客挑戰賽暨AAIG CUP 自8月17日上線以來已有 4000+ 參賽隊伍報名。針對賽題“電商推薦‘抱大腿’攻擊識别”涉及的知識點及相關工具使用已在每周直播課程中分享,本文将通過一下幾點對賽題進行詳細解讀,幫助選手更好的了解賽題核心内容。

賽題詳細解析

賽題背景

随着網際網路的發展,網購成為越來越多人的選擇,據阿裡巴巴财報顯示,2020财年阿裡巴巴網站成交總額突破一萬億美元,全球年度活躍消費者達9.60億。

為了滿足不同使用者的個性化需求,電商平台會根據使用者的興趣愛好推薦合适的商品,進而實作商品排序的千人千面需求。推薦系統常見的召回路徑有U2I(User-Item)、I2I(Item-Item)等。其中,user-to-item是指通過使用者的 profile資訊為使用者進行商品的推薦,而item-to-item推薦政策則根據使用者的商品點選清單為使用者推薦關聯的商品。

推薦系統的目的是基于不同使用者的偏好進行千人千面的推薦。傳統的離線推薦系統基于使用者曆史的行為資料進行加工處理,形成特征樣本,然後離線訓練模型,并且線上部署進行服務。然而使用者的偏好是多元的、使用者的行為分布會随着時間而變化,離線的模型無法刻畫這種動态的使用者偏好,是以需要進行實時的特征更新與模型參數更新,進而能夠更好的捕獲使用者的行為偏好。在推薦場景中,為了更好的提升推薦的時效性與準确性,平台會基于全網的使用者行為資訊進行實時的 U2I 及 I2I 的更新,并且基于使用者最近的行為資訊進行相關性的推薦。

為了擷取更多的平台流量曝光,将自己的商品展現在更多的消費者面前,部分商家通過HACK平台的推薦機制進而增加商品的曝光機會。其中一種典型的手法為“抱大腿”攻擊,該方法通過雇傭一批惡意使用者協同點選目标商品和爆款商品,進而建立目标商品與爆款商品之間的關聯關系,提升目标商品與爆款商品之間的I2I關聯分。商家通過這種方式誘導使用者以爆款的心理預期購買名不符實的商品,不僅損害了消費者的利益,降低其購物體驗,還影響了平台和其他商家的信譽,嚴重擾亂了平台的公平性。是以,我們需要用一個風控系統來過濾掉這些可能的惡意流量,避免它們對推薦系統的模型造成幹擾。

由于所有使用者行為在輸入推薦系統之前,都會首先經過風控系統的過濾,是以如果想要做到推薦系統的實時性,風控系統就必須同樣做到實時性。實時攔截此類行為,有助于在保證推薦的時效性的同時,保護實時推薦系統不受惡意攻擊影響。

實時風控系統對資料安全的要求較高,如果系統的攔截算法意外洩漏,HACK平台将得以針對性地加強惡意流量的僞裝能力,增大平台監控惡意流量的難度,是以,此類系統有必要部署在加密的可信環境中。

綜上所述,為了保障實時推薦系統的準确性,比賽要求選手實作一個保證了資料安全的實時風控系統。

資料說明

給定惡意點選、正常點選及對應的“商品”、“使用者”相關的屬性資訊(使用者本地調試可以從網上下載下傳),選手實作實時的惡意點選識别分類算法,包括模型訓練和模型預測。在大賽評測系統中,系統使用100萬條資料用于模型訓練、10萬條資料用于模型預測。另外,比賽提供給選手50萬條資料的資料集用于算法的本地調試。

比賽提供如下格式的資料用于訓練與預測。所有資料均采用csv格式儲存在檔案中,即以下資料格式的各列之間以逗号分隔。每條資料代表一次使用者點選商品的行為,它的特征主要來源于其所關聯的使用者與商品。

uuid visit_time user_id item_id features label
  • uuid:每條資料的id。該id在資料集内具有唯一性。
  • visit_time:該條行為資料的發生時間。實時預測過程中提供的資料的該值基本是單調遞增的。
  • user_id:該條資料對應的使用者的id。
  • item_id:該條資料對應的商品的id。
  • features:該資料的特征,包含N個用空格分隔的浮點數。其中,第1 ~ M個數字代表商品的特征,第M+1 ~ N個數字代表使用者的特征。
  • label:值為0或1,代表該資料是否為正常行為資料。

訓練資料包括上述所有列的資料,預測資料包括除了label之外的所有列。

模型檔案的輸入輸出格式

對于隻希望在算法層面加以優化的選手,僅需保證儲存的模型檔案的輸入輸出為如下格式即可。我們提供的示例鏡像的代碼能夠預處理輸入資料的格式,解析Tensorflow模型的推理結果,并最終生成符合評測程式要求的CSV格式的檔案。

預測模型輸入tensor格式。其中N為feature的個數。

Tensor("input:0", shape=(?, N), dtype=float32)

預測模型輸出tensor格式。輸出值為0或1,表示輸入行為資料是否為惡意行為。

Tensor("output:0", shape=(?, 1), dtype=float32)

Demo解析

本次賽題注重算法和工程的結合,解答賽題大概要經過以下幾個階段:模型訓練、模型預測、最優門檻值選取、線上預測并判定類别。

  • 模型訓練:訓練集中的資料都是結構化的,不需要進行特征抽取階段,可以直接使用模型進行訓練。在 demo 裡,建構了一個前向回報網絡進行模型的訓練,直接拟合樣本的标簽;
  • 模型預測:為了将訓練與預測階段做到更好的分離,在模型預測階段,使用的是 cluster serving 的形式,是以預測隻需要直接加載訓練好的模型,便可以進行預測;
  • 門檻值選取:線上使用的是直接判定類别,而不是輸出一個機率,這個是非常符合實際業務場景的。但是直接輸出類别的情況下,門檻值的選取對于模型的線上效果影響特别大,是以需要進行門檻值最優選擇,找到在驗證資料中最優的門檻值作為線上判定的門檻值,目前demo使用的門檻值為 0.5;
  • 線上預測并判定類别:在最終輸出的時候通過對于目前預測機率與最優門檻值的大小,進而确定目前樣本的預測類别(是否作弊)

Demo優化

  • 實時特征:目前提供的隻有使用者/商品的偏靜态的特征,但是資料中還包括了 使用者-商品 的點選關系,使用者可以考慮基于點選關系建構實時的特征,比如統計當天截止目前使用者/商品的點選量,使用者的平均商品點選數、商品的平均使用者點選數等;不過需要注意的是,當預測階段使用了實時特征,則在訓練階段也需要配套相同的實時特征,否則訓練與預測使用的特征不一緻會導緻模型報錯或者效果變差的情況;此外,訓練集中已經知道哪些商品/使用者是有過作弊行為的,這些資訊也可以作為模型的特征進行建構;
  • 模型訓練:業界有很多成熟的DNN模型,目前demo使用了3層的結構,選手可以考慮使用更複雜的模型進行訓練,進而達到更好的拟合效果;此外,我們不應該局限于某個"超級模型",而是可以考慮基于內建學習的方式混合多個模型/政策進行預測。
  • 最優門檻值選擇:目前 demo 中使用的門檻值為 0.5,但是最優門檻值選取需要基于模型的在驗證集中的預測情況進行選擇,其實我們可以寫一個腳本,通過驗證集找到最優的門檻值;
  • 線上預測:線上 demo 模型對于全部的流資料均會進行預測,然而一但出現某個樣本的預測出現高延遲,可能會導緻後續的樣本預測也會出現連帶的延遲,進而導緻整體線上延遲嚴重。除了優化算法與工程、盡量降低延遲之外,選手也可以嘗試對延遲進行監控,以緩解長尾現象的影響。

評分名額

選手送出結果的分數由兩方面評分的乘積來決定,兩方面分别代表選手送出結果的算法與工程方面的表現。用一個公式表示即如下所示:

score=F1 ∗valid_latency

在算法方面,比賽根據推理結果的F1參數來評分,即推理結果的準确率與召回率的調和平均數。

在工程方面,由于比賽模拟實時風控場景,是以比賽對實時推理過程中的延遲做出限制。選手的程式需要為kafka中出現的實時資料流提供推理服務,并在資料流的流量不超過給定門檻值的情況下,單條資料的延遲不超過500ms。

選手部署的推理服務需要從kafka中讀取待推理資料,并将推理結果寫入kafka。資料的延遲的定義即為待推理資料及其推理結果在kafka中的時間戳的內插補點。上述公式中的valid_latency,即為延遲符合要求的資料占所有資料的比例。延遲超過500ms的資料不僅會影響到valid_latency的值,進而影響到分數,而且也不會參與F1參數的計算過程。

技術介紹

Apache Flink 是一個在無界和有界資料流上進行狀态計算的架構和分布式處理引擎。Flink 已經可以在所有常見的叢集環境中運作,并以 in-memory 的速度和任意的規模進行計算。

在Flink的基礎上,Flink AI Flow作為兼顧流計算的大資料 + AI 頂層工作流抽象和配套服務,提供了機器學習的端到端解決方案。

Analytics Zoo及BigDL是英特爾®開源的統一大資料分析和AI平台,支援分布式TensorFlow及PyTorch的訓練和推理,通過OpenVINO工具套件和DL Boost指令集等,提升深度學習工作負載的性能。Cluster Serving是Analytics Zoo/BigDL的分布式推了解決方案,可以部署在Apache Flink叢集上進行分布式運算。

Occlum是螞蟻集團基于Intel SGX的開源LibOS,使得 Linux 應用程式在隻修改少量代碼或者完全不修改代碼的情況下運作于 Enclave 安全環境中,保證資料處于加密和強隔離狀态,確定資料安全與使用者隐私。

參考資料

基礎鏡像使用說明與相關技術介紹:

https://code.aliyun.com/flink-tianchi/antispam-2021/tree/master

Flink 1.11中文文檔:

https://ci.apache.org/projects/flink/flink-docs-release-1.11/zh/

Flink AI Flow Wiki:

https://github.com/alibaba/flink-ai-extended/wiki

Analytics Zoo Cluster Serving Programming Guide:

https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/ClusterServingGuide/ProgrammingGuide.md

Occlum Github Repo:

https://github.com/occlum/occlum

學習資料

學習論壇:

https://tianchi.aliyun.com/competition/entrance/531925/forum

學習視訊:

https://flink-learning.org.cn/activity/detail/99fac57d602922669b0ad11eecd5df01

大賽答疑交流釘釘群:35732860

點選了解更多賽題資訊

活動推薦

阿裡雲基于 Apache Flink 建構的企業級産品-實時計算Flink版現開啟活動:

99 元試用

實時計算Flink版

(包年包月、10CU)即有機會獲得 Flink 獨家定制T恤;另包 3 個月及以上還有 85 折優惠!

了解活動詳情:

https://www.aliyun.com/product/bigdata/sc
第三屆Apache Flink 極客挑戰賽暨AAIG CUP攻略釋出!

繼續閱讀