天池-第三屆Apache Flink極客挑戰(zhàn)賽第2名方案和代碼

原文發(fā)表于:天池-第三屆Apache Flink極客挑戰(zhàn)賽第2名方案和代碼
歡迎關注微信公眾號:YueTan

image

背景

參賽動機:

  • 不喜歡996拿著955極低的工資,突然發(fā)現(xiàn)自己的時間變成了每天刷劇,心有愧疚负拟。
  • 想了解大數據砚哆,F(xiàn)link作為當紅的實時計算引擎,比賽還有官方大佬幫忙解答問題细诸,是很難得的學習機會。

結果:

  • 拿到第2超出預期。工程加算法賽敬肚,其實每個人都是在工程能力的枷鎖下進行探索毕荐,我屬于枷鎖極重的那個束析,只能在極小范圍里輾轉騰挪優(yōu)化,運氣流選手憎亚。
  • 注:文章發(fā)表時還沒有答辯员寇,最終成績也沒確定。之前寫過答辯的攻略第美,我對答辯雖擅長卻越發(fā)無感蝶锋,這種態(tài)度就容易降名次,甚至答辯前就公開了這篇文章什往。標題說自己是第2的方案扳缕,萬一答辯完后只有第5不要覺得我沽名釣譽了。真正好的方案是接受時間檢驗的,為了創(chuàng)新而創(chuàng)新是不對的躯舔,為了讓自己顯得創(chuàng)新而硬說自己創(chuàng)新是更不對的驴剔。平心而論,我覺得此次的方案平平無奇粥庄,若要找出什么出彩的地方丧失,我比較喜歡數據增強那一環(huán)節(jié)。

任務背景:

  • 部分商家通過刻意點擊熱門和自家東西來讓推薦系統(tǒng)誤以為二者是高度相關惜互,從而蹭到了熱點布讹。感興趣可以搜索co-visit attck of recommentation system,很多論文還介紹了其他攻擊方法训堆,挺有意思描验。
image

框架

整體涉及到的框架較多,參賽完讓我獨立開發(fā)還是做不到蔫慧,但至少有個模糊的概念挠乳。本次使用的組件主要有:flink AI flow,occlum姑躲,cluster serving睡扬,kafka等,下面是我畫的一個結構圖:

image

數據

很多特征和模型的改進黍析,需要匹配以相應的工程改進卖怜。但是數據處理,是可以直接提現(xiàn)的阐枣,所以我做了一些樣本選擇马靠、數據增強的工作。在那之前蔼两,我可以說一下我對業(yè)務的理解甩鳄。我的設想是某些用戶其實才是檢測的重點,因為像我一樣天資愚鈍额划,根本想不到這種抱大腿的攻擊方法妙啃。為了讓系統(tǒng)推薦自家商品,能想到連續(xù)點擊熱門商品和自家商品的人俊戳,了不得揖赴。所以一開始,我就把重點放在了用戶特征上抑胎。

image

初賽線上有100萬訓練數據燥滑、10萬測試數據,可以下載的有50萬訓練數據和5萬測試數據阿逃。作為一個分類任務铭拧,首先查看其類別分布:

  • 50萬訓練集:負樣本450000赃蛛,正樣本50000
  • 5萬測試集:負樣本45000,正樣本5000

證明測試集是經過精確采樣的搀菩,所以正負樣本比例完全一致焊虏。然后就是查看ID類,物品ID分布如下圖秕磷∷斜眨可知,大多數測試集都是新的item澎嚣。

image

用戶ID分布如下圖疏尿,大多數測試集中也都是新的測試集。同時易桃,業(yè)務中其實對用戶ID可以建立黑名單和白名單制褥琐,因此針對user ID可以有更多的操作。建立特征時晤郑,也可以考慮id的歷史成績敌呈,畢竟一些ID可能都是種子選手了。

image

ID的時間關系造寝。去掉visit time為負數的訓練樣本后磕洪,可知大多數時間都在1-10萬左右,最大時間409599诫龙,總樣本50萬析显,可知很多樣本是同一時間的。

image

而測試集時間签赃,大多都在90萬以上谷异,證明中間還是間隔了不少時間的。最小時間:114054 最大時間:950485锦聊。因此可以部分得出結論:測試集幾乎都是新的樣本與物品歹嘹,在一段新的時間,對模型泛化能力要求較高孔庭。

image

同時初賽提供了75個匿名特征尺上,復賽152。其中前m個是商品特征史飞,后面的是用戶特征尖昏。所以如何確定這個m呢仰税?根據其獨特個數來判斷即可构资,如下代碼所示。同時可以看出即使是同為商品特征陨簇,也可以分為大概兩組吐绵。一組的nunique大概是20左右迹淌,另一組大概是70左右。大概可以想象提供的數據大概是embedding數據和count己单。nunique大概就是類別個數唉窃。在embedding中,同一個類別還是對應著同一個embedding數據纹笼,其中embedding維度就是70對應的維度個數纹份,肉眼可見大概embed_size是15,而類別個數則是70廷痘。同理蔓涧,另一組對應的embed_size也是15,類別個數則是20笋额。

image

而對測試集而言元暴,同樣可知embed_size當然是沒有變的15,而類別則不同兄猩。測試集中一個類別數量為50茉盏,一個為8。至于這50和8與訓練集是子集或非集枢冤,需要向數據挖掘中的frenquency encoding一樣涩维,把訓練集和測試集合在一起再計算一次。

image

同時拳亿,后半部分為用戶特征漓库,同理可以畫出用戶特征的nunique。

image

比較奇怪的地方出現(xiàn)了趟咆,在測試集中用戶的類別比訓練集中還要多添瓷。

image

因此首先區(qū)分用戶特征和商品特征。畢竟感覺賽題方提供的是半匿名數據值纱,告訴了籠統(tǒng)鳞贷,但是如何進一步區(qū)分則需要對數據進一步深挖才可以。這道題目既然給了user特征和item特征虐唠,可以參考的方法就有點擊率預估搀愧、文本匹配等大方向。點擊率預估中最重要的特征可以有類別count特征疆偿、目標編碼特征和embedding特征咱筛。

我覺得自己做的比較有意思的部分就是數據增強了。主要借鑒了推薦系統(tǒng)和對比學習中杆故,對正樣本和負樣本的重視迅箩,嘗試了一些操作。

image

模型

模型比較簡單处铛,我最終用的就是常規(guī)的雙塔模型饲趋。雖然也嘗試了各種優(yōu)化拐揭,但還是最開始的簡單模型效果最好。詳情可以參考我的十月比賽流水奕塑,里面詳細記錄了我每天的想法和操作堂污,應當是這些特征本身已經比較強。

image

我的第一部分優(yōu)化是細節(jié)優(yōu)化龄砰。增加交互特征F1確實提分了盟猖,但是導致延時多了不少,因此得不償失换棚。SE沒起作用扒披,反而是加個BatchNorm和Dropout好用的不得了。

image

第二部分優(yōu)化是增加多任務圃泡,自編碼任務優(yōu)化碟案。自編碼部分使用100萬數據,分類部分使用10萬數據颇蜡。本以為這個AE-DNN可以有所作為的价说,但其實沒啥效果。

image

訓練細節(jié)和上分路徑如下风秤。分層學習率鳖目,label smoothing都是起作用的。

image

結論部分缤弦,當然是自夸一波领迈,自己人就不多說了。

image

開源代碼

開源代碼地址:https://github.com/LongxingTan/Data-competitions/tree/master/tianchi-flink-aaig

謝謝關注碍沐,我是YueTan狸捅。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市累提,隨后出現(xiàn)的幾起案子尘喝,更是在濱河造成了極大的恐慌,老刑警劉巖斋陪,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朽褪,死亡現(xiàn)場離奇詭異,居然都是意外死亡无虚,警方通過查閱死者的電腦和手機缔赠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來友题,“玉大人嗤堰,你說我怎么就攤上這事∨厮” “怎么了梁棠?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長斗埂。 經常有香客問我符糊,道長,這世上最難降的妖魔是什么呛凶? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任男娄,我火速辦了婚禮,結果婚禮上漾稀,老公的妹妹穿的比我還像新娘模闲。我一直安慰自己,他們只是感情好崭捍,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布尸折。 她就那樣靜靜地躺著,像睡著了一般殷蛇。 火紅的嫁衣襯著肌膚如雪实夹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天粒梦,我揣著相機與錄音亮航,去河邊找鬼。 笑死匀们,一個胖子當著我的面吹牛缴淋,可吹牛的內容都是我干的。 我是一名探鬼主播泄朴,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼重抖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了祖灰?” 一聲冷哼從身側響起仇哆,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎夫植,沒想到半個月后讹剔,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡详民,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年延欠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沈跨。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡由捎,死狀恐怖,靈堂內的尸體忽然破棺而出饿凛,到底是詐尸還是另有隱情狞玛,我是刑警寧澤软驰,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站心肪,受9級特大地震影響锭亏,放射性物質發(fā)生泄漏。R本人自食惡果不足惜硬鞍,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一慧瘤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧固该,春花似錦锅减、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至桦沉,卻和暖如春劫狠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背永部。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工独泞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人苔埋。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓懦砂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親组橄。 傳聞我的和親對象是個殘疾皇子荞膘,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內容