天天看點

KDD2009的獲勝者報告

自動化時代的機械工,記KDD2009的獲勝者報告

正如我常說的,美麗而智能的産品或技術後面,通常隐藏着無數的髒活累活機械活。強如google那樣智能直至個性化的技術産品,在那風光無限的PageRank後面,也有大量的人工标注、資料過濾、參數調節,以及與天鬥與人鬥的anti-spammer工作。

上周重讀KDD2009競賽的獲獎者報告,發現其中也不乏這樣的情感。

先大緻介紹一下KDD2009競賽的情況。KDD大會是每年資料挖掘與機器學習界的盛會,每次都牛人牛文雲集。而每年伴随着大會的到來都會有一次算法競賽,研究對象通常是某業界公司贊助的一批真實資料,研究問題也就是這些公司在實踐中所關心的核心問題。

這裡要說的KDD2009競賽的資料是來自于法國Orange電信公司的客戶特征描述資料。其中50000個帶标簽的訓練資料,50000個無标簽 的測試資料。均有15000個特征變量。參賽者要根據這批資料訓練三個分類模型,分别對客戶的忠誠度、消費欲和增值服務傾向性作出二進制判别。模型評判标準 是ROC曲線的覆寫面積(AUC,參看上一篇文章)。 競賽的流程這裡略去不講,有興趣的可以參看後面的參考文獻,反正最後澳洲的墨爾本大學拿了兩個獎項中的一個。其實作方法說不上多美,隻是循規蹈矩地特 征選擇+有針對性的特征變換+現成的機器學習方法。這也說明在解決現實問題中不一定要刻意追求方法上的創新,對資料的分析了解後的預處理+成熟可用的機器 學習模型即可解決大部分的工程問題。

1、特征選擇

電信公司提供的特征變量有15000個,但大部分都與最終的分類任務沒什麼關系,無論出于計算效率還是降低資料噪聲的目的,事前做一番特征篩選都是有必要的。

在剔除掉近20%的明顯無用的特征後(缺失值過多或取值一樣的特征),作者對剩下的特征集中的類别型變量與連續型變量都采用了同樣的方法來計算特征 的有效性。首先要把連續變量分桶,按每1%的間隔分成一百個離散的桶,這樣就可以把連續變量與類别型變量一視同仁地處理了。接下來用單一的一個特征變量去 預測目标變量(計算某特征取值或特征桶内正樣本的比例,作為這個取值或這個桶對正樣本的預測機率),并且可以計算出這個簡單分類器的AUC值。根據每個特 征的AUC值作一個排序,得到如圖1所示的變量AUC值分布圖。然後作者根據分布曲線的變化取了前2000個特征,作為後續處理的候選。

KDD2009的獲勝者報告

圖1 忠誠度模型的特征AUC排序 

2、類别型特征的變換

類别特征有時會存在着取值過多的情況,比如5萬個樣本中某個特征就有超過1萬個不同的取值,必然注定了某些特征取值隻覆寫了極少數的樣本,如果要模型勉強地去拟合這些特殊的情況,必定會導緻過拟合的出現。是以有必要對這些取值過多的變量作合并。

作者最初想到的方法是對于那些覆寫樣本過多的特征取值,根據它們決定的正樣本的數量多還是負樣本的數量多而合并為兩類,以求達到跟目标輸出的最大相關。但這種合并方法在應用到測試集中時非常糟糕,很顯然這導緻了過拟合的出現。

于是作者接下來用了一種很蠻不講理的方法,規則為,如果特征的不同取值數超過25個:

  • 保留那些覆寫樣本量超過1000的取值
  • 把那些覆寫樣本量在500-999之間的那些取值合并為一個新值
  • 把那些覆寫樣本量在250-499之間的那些取值合并為一個新值
  • 把那些覆寫樣本量在1-249之間的那些取值合并為一個新值

好像作者的意思是說,我隻要把取值的數量減少就好了,天知道這樣的合并有沒有什麼特别的含義,反正這麼做了之後效果确實好了。

3、分類模型的選擇

資料預處理完畢之後,作者沒有再造一個分類器的輪子,而是選擇了時下流行的boosting+決策樹的分類器融合方法,甚至連實作都沒有做,直接用了R的 gbm包。好吧,這就是我為什麼會找到這篇文章的原因。gbm包根據Friedman對boosting思想在統計優化角度的解釋(參考文獻[2]),做 了成熟的實作,在我的PackageRank裡面的分值為1.69(排位259)。因為這不是參賽作者的工作,是以報告中沒有詳細介紹,隻是說了一下最後訓練的參數。

這個分類器的好處在于可以處理缺失值、連續值、類别資料;它不會受極端資料及非規則連續變量分布的影響;它可以把特征間的互相影響也model進去;還可以處理非線性依賴關系。

根據這個分類器,作者算出了競賽所需的三個模型,如圖2所示。可以看到的是,最後三個模型所使用的特征數量隻是在200個左右。Class Weight是為了應對正負樣本的不平衡,為了增加正樣本在boostrap中被抽中的機率而人為地提高權重。剩下的依次是學習率、樹的數量(疊代次 數)、每顆樹的深度。

KDD2009的獲勝者報告

圖2 模型參數 

最後,作者不無自豪地告訴我們,他們所有的計算都是在一台2G的windows筆記本上完成的,計算工具是R+SAS。似乎也在揶揄拿了另一個獎項的IBM Research:我們可不需要大叢集的計算哦。

你剛才看到的是一個很接近于現實問題的求解過程,漂亮麼,我覺得一點都不漂亮,甚至是很枯燥,它沒有通常paper中所描述的那麼理想與完美,你需 要對自己的資料有很深入的了解,如果更比這裡深一層,你了解這個樣本及特征所代表的現實意義的話,你也許還會用上這個領域的先驗知識來指導你的處理。所 以,通常的實際問題解決路徑是:機械化的又藝術化的工作加上優雅的模型=問題的解決。

參考文獻

[1] Predicting customer behaviour: The University of Melbourne’s KDD Cup report

[2] Additive logistic regression: a statistical view of boosting

繼續閱讀