1. 程式人生 > >大資料挑戰賽歷程與總結隨筆

大資料挑戰賽歷程與總結隨筆

昨日,隨著決賽答辯的結束,大資料挑戰賽落下最終的帷幕,雖然並沒有進入決賽,但相對於我這個接觸機器學習不到半年的人來說,第一次參賽能拿到優勝獎以及一份騰訊的定製禮品,我還是比較滿意的。有幸在決賽答辯現場瞻仰各位大神的各種騷操作,感想頗多,藉此機會稍微整理一下整個比賽的收穫。

這個比賽型別是安全賽,要求通過建模進行滑鼠軌跡識別,識別出滑鼠軌跡是屬於人的還是機器的,類似於反黑客。這個比賽的難點在於訓練資料少,訓練資料黑白樣本比例是13:2,而初賽測試資料大約是訓練資料的33倍,複賽的測試資料更是訓練資料的660倍左右,這對於模型的泛化能力以及對黑白樣本比例不均衡的敏感度提出了很高的要求。

初賽回顧


因為是第一次參加這種大資料挑戰賽,自己接觸機器學習的時間也比較短,所以剛開始面對這個題目的時候還是比較懵逼的,視覺化一條條軌跡,只能從直觀上覺得貌似人和機器軌跡還是有一定的區分度的,可是這也僅僅是看上去而已,如何將這種區分量化變得十分重要,也就是特徵工程。記得當初也沒有什麼具體的從哪個方向入手提取特徵的思路,只是碰碰運氣的提取了一些特徵,然後用sklearn中所提供的支援向量機、隨機森林等演算法挨個嘗試,然後提交評分結果可想而知的低。

後來,瞅著看了好多軌跡影象,想著可不可以用CNN試試,那些特徵不就無所遁形了麼?相對於前面自己找的一些特徵用傳統模型跑出來的結果,效果確實好不少。這裡需要提一下,如何將一條由許多個點所組成的軌跡資料轉化為影象,我的方案是將滑鼠軌跡點的絕對座標轉化為相對座標

,也就是類似於最大最小化處理,然後都固定在一個50×50的方格中,這樣每條軌跡就轉換成一張張圖片了。然而,CNN的引數的調節,結構的變換等等手段,都對於成績的提升並沒有起到很好的效果。這個時候,初賽已經進入了中期,我知道,還是得從資料預處理、特徵工程入手。

後來,有位大佬公開了一個baseline的程式碼,說實話,我是非常感謝那位同學的,他的這個baseline對我來說可以說是非常及時,讓我對整個比賽的思路有了更清楚的認識,我從中清楚的認知了,特徵工程需要從多方面進行深入挖掘,比如資料本身特徵、軌跡行為特徵等角度去建立模型。後來經過實踐,多方面提取特徵,得到了很棒的結果。決賽答辯現場,記得有位大佬說過,“特徵決定模型的上限,而模型只是逼近這個上限而已

”,現在想想確實很有道理。

複賽回顧
複賽可以說是難熬並且是一團糟。前面好幾天都在熟悉線上平臺的使用,後面熟悉了平臺後,複寫初賽下線的程式碼得分也很低,明白初賽的特徵模型對於複賽的資料很有可能不適用!也就意味著短時間內需要重新構建新的特徵模型,可以說當時的內心是奔潰的!後來,絞盡腦汁,嘗試了瘋狂懟特徵、增加資料集、分別用兩套特徵去建模組合模型等方案,可是效果都不好!就這樣複賽也就結束了……

總結
決賽答辯現場,聆聽各位大佬的各種騷操作,增長了不少“姿勢”,結合自己的整個比賽歷程,最後總結以下幾點經驗:

  • 需要從資料本身、業務本身等多方面進行挖掘;
  • 規則模型有時候會很管用;
  • 特徵選擇與組合決定模型的上限,而模型只是逼近這個上限而已;
  • 模型訓練與預測過程中,有時候也需要很多小技巧去避免過擬合以及增加模型的泛化能力,比如多套特徵的模型組合,隨機迭代新增訓練資料集等。

總的來說,這次比賽還是收穫頗多的,最後還是要感謝那位無私提供baseline的大佬,以及此次比賽的工作人員和老師,還有自己的隊友!嗯,這只是開始!