數據挖掘--非常火爆的一個話題,跟大數據結合的模式也是賺足了噱頭,工業界各土豪公司也是砸下重金網羅各種數據挖掘/機器學習人才。如今掌握一門挖掘技巧的實用性跟急迫性。在學習的過程中,除了相關理論的學習之外,最重要的就是如何把理論用於實踐,當然做項目是最直接有效的實踐方式,除此之外,參加一些數據挖掘比賽也是非常不錯的經歷,比賽過程中,我們不僅能加深模型/算法的學習,也能從別的參賽隊員中學習他們的技巧。下面,想跟大家分享下,我最近參加的幾個數據挖掘比賽(由於參加比賽非常需要精力跟時間,而本人已經參加工作,只能利用業余的時間探索數據,主要以學習他人方法為主,另外以下比賽均在www.kaggle.com上面)。
一:Higgs Boson Machine Learning Challenge
這個比賽(共1785支隊伍)是關於高能物理粒子的預測,二分類問題,具體來說數據集中,每個樣本都有一個權重,權重越大,表明該樣本越重要。這個比賽火了一個工具包:XGboost,該工具的作者陳天奇同學也是KDDcup2012Track1的冠軍成員,寫的代碼非常短小精悍,值得深度(目前我也在熟讀這份代碼),用這個工具調好參數,能取得Top50的好成績。第一名的方案,是Bag了70個神經網絡模型, 數據預處理先做了特征選擇,剔除掉5較差特征,同時添加了10個meta-feature。具體鏈接請參見https://www.kaggle.com/c/higgs-boson/forums/t/10344/winning-methodology-sharing?page=2。我的方案:模型用了Stacking的方法,基本分類器用了XGboost,RGF(loss=Logloss),RGF(loss=Exploss指數loss,就是adaboost的loss函數),二級分類器用了Logistic Regression,模型最好的結果能排到25位。
二:Display Advertising Challenge
這是一個關於廣告CTR預估的比賽,由全球知名廣告公司Criteo贊助舉辦,先簡單介紹下數據背景:4千萬的訓練樣本,13個數值特征+26個分類特征,500萬的測試樣本,模型的評價指標為傳統的logloss。從整體的思路來看:特征的處理+線性模型,對26個分類特征進行one-hot 編碼,能擴展至千萬級別的特征。第一名方案非常有意思,GBDT+FM的組合,其中的特征處理非常有技巧(GBDT訓練高階特征+hash技巧),值得學習。關於FM模型,由於我本周會跟團隊有一個分享,完后再博客里貼出來跟大家一起分享。我的方案:特征預處理,缺失值直接用0取代(不影響后續的模型),分類特征直接用one-hot編碼(這里做了一個特殊的處理,對於頻數小於10詞的取值,統一作為一個取值),最后用FM跑處理后的數據(參數調優要非常小心),最終的結果在718只隊伍里面第42位。
三:Tradeshift Text Classification
這是文本分類問題,並且是多類別的分類,也就是一本文檔有可能屬於多個類別,數據集中是33個分類,共145個特征(50個bool型特征+10個分類特征+85個數值特征),比賽評價的指標仍然是logloss,當然這里是33個logloss之和。這個比賽比較有意思的是采用了二級分類的思路:隨機森林訓練bool/數值特征 + 線性SVM訓練稀疏特征作為第一級分類,它們的輸出作為隨機森林的輸入,這是第二級分類,第一名的方案:隨機森林訓練bool/數值特征 + SGD訓練稀疏特征+在線的邏輯回歸訓練所有feature+XGboost訓練所有feature 作為第一級方案,它們的輸入扔到XGboost模型里面,最終輸出結果。我的方案:隨機森林訓練bool/數值特征 + 線性SVM訓練稀疏特征作為第一級分類,它們的輸出作為XGboost的輸入,最終的結果是375支隊伍里面第19位。
以上是我的一些心得體會,寫的也比較簡短,也歡迎大家討論交流
Ps:另外非常希望那些已經掌握理論還沒開始實踐的朋友,多找項目/比賽練手,另外常備幾個高效的數據挖掘工具箱,並選其中2-3個熟讀其源碼,做到理論、實踐兩不誤~
下面簡單介紹下GBDT/GBRT模型,以下圖片是前段時間做的一個分享~














