歷時近 3 個月,2018 年中國高校計算機大賽——大資料挑戰賽(下稱「大資料挑戰賽」)落下帷幕。最終,廈門大學的 lambda 團隊奪取冠軍獲得 30 萬元獎金。
根據決賽 10 支隊伍的答辯內容,我們梳理整理了冠軍、亞軍兩支團隊的答辯成果及評委點評。
以下,enjoy!
全球千餘團隊參與,專注活躍使用者預測
本次大賽由快手和清華大學聯合承辦,基於快手提供的脫敏和取樣後的資料資訊,預測快手平臺上未來一段時間的活躍使用者。快手同時提供給選手安裝了多種機器學習平臺的雲伺服器,供選手研究機器學習演算法。
參賽隊伍需要設計相應的演算法進行資料分析和處理,比賽結果按照指定的評價指標使用線上評測資料進行評測和排名,得分最優者獲勝。決賽中 10 支隊伍答辯後,最終成績綜合複賽 B 榜成績和現場評委打分兩部分生成。
本次大賽面向全球高校在校生開放,並鼓勵高校教師參與指導,共有來自全球 10 個國家及地區,439 所高校,1392 支隊伍,2751 位選手,15803 次提交參與評審。經過層層篩選激烈競爭,現場 10 支隊伍進入決賽環節。
10 支隊伍來自清華大學、北京郵電大學、哈爾濱工業大學、廈門大學、武漢大學、同濟大學、西北大學、福州大學、東南大學、重慶郵電大學、山東大學、西安電子科大、杭州電子科大。
參賽隊伍解題思路及演算法亮點乾貨分享
冠軍隊伍——lambda 思路自述
團隊介紹:
Lambda 團隊由廈門大學的一名同學組成,顏晶。值得一提的是,顏晶本專業為金融專業,現讀研二,自學機器學習半年時間。
解題思路:
本題是基於 30 天內使用者使用快手 app 的相關行為(特別強調:資料為採集和脫敏後),預測未來 7 天內使用者是否活躍的概率,評價指標為 AUC。
首先本題沒有標籤,因此需要自己進行標註標籤。首先想到的是根據題目要求,用 7 天進行自己標註,但是 7 天噪音大,因此可以嘗試使用更少的時間進行標註,比如 6 天、5 天等。最後結果表明用 6 天進行標註能得到更好的結果。有了訓練集和標籤就可以選擇模型:一種是將時間序列進行皮膚化,使用傳統機器學習(LGB or XGBoost);第二種是使用 RNN(many-to-many)。
演算法亮點:
此次比賽主要使用了 RNN 模型。RNN 分為三類:many-to-one、one-to-many、many-to-many。我們選擇了 many-to-many,這相當於對資料一天一天進行滑窗,可以對資料集進行擴充。
首先我對使用者按註冊進行分類,在通過取樣策略,將資料集輸入到 GRU 裡面去:
此外我們對資料集進行 padding,這樣可以在訓練集中隨機選擇使用者輸入到的 GRU 中,其中也對註冊早的使用者賦予更高的概率,這樣保證模型能夠得到更多的資訊。
在優化時,使用了快速集合整合 fast geometric ensembling(FGE),這樣可以無成本的獲得到多個差異性模型,能得到更好的結果。
評委點評:
與其他參賽隊伍使用複雜的特徵工程+多模型融合方案不同,lambda 隊僅用十幾個原始特徵+RNN 單模型就拿到了最好的成績。RNN 模型的難點在於調參和學習方法的調整,選手調研了多種優化方法,如餘弦退火、warmrestarts、快照整合和快速幾何整合,最終使得模型穩定收斂。選手的方案再一次證明了神經網路可以從原始資料中自動發現規律,可以節省大量的特徵工程工作。同時模型複雜度較低,可以部署到線上生產環境。
比賽感想:
將近 3 個月的比賽從中,我收穫很多。首先是可以多嘗試些方案,雖然各大比賽中冠軍基本是 LGB or XGBoost,NN 一直作為融合補充所用,這可能只是那麼資料集更適合 LGB 模型。其實在比賽開始時,我們並不是一開始就選擇了 RNN 模型,也走了很多彎路。在初賽中,由於資料量較小,RNN 模型的成績在 B 榜排在 200 名以後。複賽資料集擴大後,RNN 有了很好的效果,才一直不斷的優化 RNN,算是踩對了坑。
此外,在比賽中找到一致的線上與線下是非常重要的,這樣不僅能保證得到的模型是穩定的,且能更有效利用提交次數。
最後,在國內大資料比賽中,奪冠的有以下幾種情形:對資料理解透徹、很多模型融合、模型創新等。雖然模型創新很難,但是當你將模型構建起來時,也預示著,別人是很難追上你了。
亞軍隊伍——小小螞蟻隊思路自述
團隊介紹:
小小螞蟻隊由兩位同學組成,分別來自西北大學的曾凱,計算機應用技術專業,研一在讀,和福州大學的冉憲東,大三在讀,電子資訊工程專業。
解題思路 :
1、滑動視窗
題目是給定 1-30 天時間內的四個日誌資料(特別強調,資料為採集和脫敏後),通過這些資料來預測未來一段時間(即 31-37 天)活躍(即出現在以上四個日誌中任意一個)的使用者。經過分析,判定該問題是一個典型的二分類問題,也就是說給定一個使用者 id,讓我們來預測這個使用者是活躍或者不活躍。那麼首先考慮如何構造出線上線下的訓練集以及它的標籤,還有線上線下測試集以及它的標籤。
圖(一)
如圖一所示,我們採用滑動視窗的演算法思想,給定 a 到 b,也就是 1-30 天區間,我們定義 n 和 m,其中 n 是構造訓練集或驗證集的區間,緊接著的後 7 天是構造標籤的區間。其中,n 小於等於 23,m 大於等於 0。這樣滿足這種條件的我們可以滑動出很多個視窗,理論上講這樣我們訓練集的樣本可以構造出很多個,但是經過仔細分析與思考,我們總結了視窗必須滿足以下兩個條件:
保持線上與線下視窗間隔一致。
滿足資料分佈的週期性。
我們看第一點,假如我們以構造訓練集越多越好的原則去構造,那麼變長視窗當然是 1-2,1-3,1-4,一直到 1-23,但是這樣會出現一個問題,也就是線上和線下的視窗間隔不一致,這樣會導致線上和線下構造的特徵資料分佈不一致,很容易出現過擬合現象。因此我們從後往前推,使得線上線下得視窗間隔一致,還是以構造訓練集最多原則構造視窗,那麼這樣構造就是 1-30,1-23,1-16,1-9,1-2(為什麼間隔是 7 呢,因為這 7 天是用來構造 label 的,也就是線上和線下最小的間隔)。
圖(二)
第二個原則,我們是根據圖二得出的規律,也就是視窗還需要滿足資料分佈的週期性,可以看出,每個視窗每天的行為次數都是週期性的增長,除了 1-2 這個視窗之外。因此 1-2 這個視窗就被去掉了,並且 1-2 這個資料視窗太小,資訊量太小,顯然也就捨去了。
表(一)
同樣的道理,所以最終我們構造出了兩個可行的視窗,如表一所示,第一個是變長視窗,線下訓練集是 1-9,1-16,線下驗證集是 1-23。線上訓練集是 1-9,1-16,1-23,線上測試集就是 1-30。另一個是定長視窗,線下訓練集是 1-16,8-23(4/5),驗證集是 8-23(1/5),線上訓練集是 1-16,8-23,線上測試集是 15-30。
後來我們最終確定的視窗為變長視窗,主要有三個原因:
第一,這樣我們可以預測全範圍的使用者,也就是登錄檔裡所有的使用者,而定長視窗不能。
第二,這樣有利於線下驗證集的構造,因為資料分佈基本一致,保持線上線下一致,而相比定長視窗的切分視窗資料好。
第三,變長視窗構造的訓練集相比較定長視窗多
2、使用者分類
構造好了資料集的劃分,我們再進一步對資料進行探索,因為是對使用者進行是否活躍預測,那麼我們研究的物件主體是使用者,於是,我們就通過日誌資料對使用者型別進行分析。
圖(三)
如圖三所示,我們發現每天的行為次數從第一天開始每隔五天就會有兩天突增,我們猜測這兩天應該是週末,說明有個使用者群在週末這兩天比較活躍,而在周內相對活躍次數較少。這部分使用者也許是上班族等,他們得生活規律有周期性。21,22,23 這三天也比較多我們猜測是節假日三天。
圖(四)
從圖四我們可以看出,每天的註冊人數也是符合圖一的規律,但是到了第 24 天,註冊量出奇的高。於是我們單獨拿出這一天註冊日誌的資料,分析發現,這些註冊使用者的裝置型別和註冊型別一模一樣,於是我們就畫出瞭如圖五這樣的圖。
圖(五)
橫軸是註冊型別和裝置型別組合,縱軸是註冊使用者數量,發現確實有幾種組合型別的註冊數量很高,我們把這類使用者定義為異常使用者,這類使用者有以下兩個個特點:
註冊型別和裝置型別一樣,並且是一天之內註冊數量相對正常註冊量出奇的高(設定閾值γ,只要這種異常使用者註冊量大於γ就符合)。
這些使用者在隨後的天數之內都沒有活躍,只在當天活躍
我們推測這類使用者是因為快手的某種活動引流進來的使用者,並且這類使用者是那種類似於黃牛的機器使用者,最終我們根據這種規則找出了每天的異常使用者。掌握了這些使用者群的特點之後,這樣更有利於我們進一步的特徵構造與模型構建。
圖(六)
於是根據上面資料的進一步探索,我們把使用者分為兩大類,如圖六所示,第一類是正常使用者,我們可以用模型去預測活躍的概率。第二類是異常使用者,我們可以通過規則去篩選預測,也就是符合異常規則的使用者我們把預測概率置為 0。
總結起來,這樣對使用者劃分主要有兩大好處,第一就是使得預測異常使用者更加準確。第二就是剔除之後,減少訓練集噪聲,增加正常使用者模型預測準確率。
3、特徵構造
現在我們資料集劃分確定了,使用者也基本分析清楚了,就開始根據變長視窗的特點以及使用者群的特性構造特徵。特徵構造方面我們主要從『時間』 和『空間』維度的層面構造。
時間維度基本側重的是單個日誌來提取的有關的時序特徵,概括性的分類如圖七所示。
圖(七)
空間維度就是題目中給的四類日誌,它們從不同方面也就是不同的維度反映著使用者的不同特徵,比如使用者的活動日誌,從這方面提取的大部分特徵是有關使用者活動方面的特徵,因此我們利用空間維度與維度之間的差異主要來構造出交叉特徵。如圖八所示
圖(八)
4、模型構建 圖(九)
模型方面,主要對兩個單模型進行單獨訓練,然後對其預測結果進行加權融合。由於 Lightgbm 模型和神經網路模型差異性大,一個是 boosting 的整合思想,一個是採用神經元啟用的思想的,因此我們對其兩個模型預測的結果進行加權融合,提升的效果會好。
演算法亮點:
TF-IDF 特徵的構造:
TF-IDF(term frequency–inverse document frequency)是一種用於資訊檢索與資訊探勘的常用加權技術。TF-IDF 是一種統計方法,用以評估一字詞對於一個檔案集或一個語料庫中的其中一份檔案的重要程度。
這樣我們把一個 authorid 比作一個字詞,根據 authorid 在日誌中出現的次數從大到小排列,取前 n 個作為語料庫。這樣與 userid 互動的有多個 authorid,就能計算出對應的 tf-idf 值,我們取前 m 個,不夠的補 0,多的省去,這樣就構成了 m 維特徵。
這個特徵就相當於對每一個使用者在視窗內進行了編碼,表徵著這個使用者與 authorid 的親密程度,用於區分特定的使用者群體。例如,一個人氣高的作者一般是經常活躍的,使用者與該作者互動次數越多,此使用者對應該作者的 tf-idf 的值也越大,那麼該使用者活躍的概率也越大。
比賽感想:
此次比賽提供的資料為快手 app 真實資料的脫敏採集後的資料,更結合實際業務,使得我們更應該結合使用者使用快手 app 的實際場景,從而對使用者的特性有更深的瞭解以及使用者群有更深更細的劃分,使得特徵的構造更加合理與有效。同時,在比賽過程中,競爭比較激烈,但是一定要堅持下去,不到最後一刻決不放棄,一定不能只停留在想象方面,有想法一定要及時去實現,也許那個點子就是提分的關鍵。
評委點評:
小小螞蟻隊在充分理解業務場景、對資料進行細緻的分析後,用豐富的特徵來表達業務場景。在構建訓練集的過程中,對比了多種滑動視窗方案。針對業務場景中出現的異常噪音,能夠細緻分析並妥當處理。選手使用的模型為 gbdt 模型,在實際業務場景中,易於增加特徵做擴充套件,可以持續迭代優化。
大賽點評:
評委對此次大賽點評:
參賽選手在歷時 100 多天的比賽中,遵守比賽相關規定,公平競賽。本屆賽題提供給選手的是經過取樣和脫敏後的真實行為資料,在賽題設計上並不限制選手使用分類模型求解。選手在問題轉化的過程中,方法各有不同,在訓練集構造、標籤構建、特徵抽取等環節均有創新。冠軍隊 lambda 使用 RNN 模型,從原始資料中學習規律,該方法具有通用性和實用性。
第三屆 BDC 評委介紹:
此次大賽共有七位評審,其中四位是高校老師,三位是快手的技術專家。分別是,教育部高等學校教學指導委員會委員,大賽專家委員會副主任臧斌宇教授。北京大學教授、大資料挑戰賽專家委員會委員王騰蛟教授。哈工大教授、大資料挑戰賽專家委員會委員王巨集志老師。代表清華主辦方的清華軟體學院黨委副書記王朝坤老師。快手的技術專家李森棟、王哲、林濤。
快手科技技術專家李森棟,曾先後工作於社群科學部、海外事業部,參與推薦系統的迭代開發以及推薦模型的研究和實現工作。在本次大賽中,擔任競賽專家委員會委員,負責大賽的賽題、資料和評測等工作。
王哲快手科技技術專家,在快手社群科學部負責推送和新產品的推薦系統和演算法策略。
林濤快手科技技術專家,在快手社群科學部負責推薦系統架構,主要包括搭建機器學習平臺、開發線上高效能的一些模型觸發、預估模組等工作。