當前位置:
首頁 > 新聞 > Getmax 團隊:KDD CUP 2018 兩冠一亞團隊解題思路

Getmax 團隊:KDD CUP 2018 兩冠一亞團隊解題思路

今年 KDD CUP 設立三項大獎,分別為 General Track、Last Ten-Day Prediction Track 以及 Second 24-Hour Prediction Track,從不同維度獎勵表現突出的團隊。由羅志鵬,胡可,黃堅強組成的 Getmax 團隊,在這三項大獎中獲得一項亞軍、兩項冠軍的成績,是唯一包攬三項大獎的團隊。去年該團隊成員帶領的 Convolution 團隊也包攬了 KDD CUP 2017 的雙料冠軍。

圖為剛剛召開的國際頂級會議 SIGKDD 授予 Getmax 團隊的三項大獎獎牌

雷鋒網也在去年對該團隊進行了技術分享報道。

KDD Cup 是由 ACM 的數據挖掘及知識發現專委會(SIGKDD)主辦的數據挖掘研究領域的國際頂級賽事,從 1997 年以來每年舉辦一次。每屆都吸引眾多工業界以及學術界的選手,有數據挖掘領域「奧運會」之稱。

KDD Cup 2018 題目為空氣質量預測, 由主辦方提供中國北京和英國倫敦的天氣數據,選手需要以此來預測未來 48 小時內 PM2.5/PM10/O3 濃度。本次賽題本身對應對惡劣環境、改善人類生存有著重要意義,而問題本身則有數據規律性弱,易突變,時間序列以及空間拓撲關係建模等挑戰。

分享人介紹

羅志鵬:微軟 Bing 搜索廣告演算法工程師,北京大學軟體工程專業碩士,專註於深度學習技術在 NLP,廣告相關性匹配,CTR 預估等方面的研究及應用。

黃堅強:北京大學軟體工程專業碩士在讀,擅長特徵工程、自然語言處理、深度學習。

胡可:阿里媽媽搜索直通車團隊演算法專家,碩士畢業於香港中文大學機器學習方向,工作技術方向為深度學習與廣告演算法。

團隊具備豐富的機器學習在工業界與比賽的應用經驗。團隊成員曾獲得 CIKM 2018 冠軍,KDD CUP 2017 雙料冠軍,Kaggle Outbrain Click Prediction 冠軍,微博熱度預測冠軍,上海 BOT 大數據應用大賽冠軍等。

分享主題:KDD CUP 2018 兩冠一亞團隊解題思路

分享提綱:

?空氣質量問題理解及建模設計

?特徵工程

?深度學習模型優化

?模型融合

雷鋒網 AI 研習社將其分享內容整理如下:

今天我們團隊要跟大家分享的是 KDD Cup 2018 的解決方案。先介紹一下我們 Getmax 團隊,團隊隊長羅志鵬,是微軟 Bing 搜索廣告演算法工程師,北京大學軟體工程專業碩士。我是黃堅強,目前北京大學軟體工程專業碩士在讀。胡可是媽媽搜索直通車團隊演算法專家,碩士畢業於香港中文大學機器學習方向。

我們團隊擁有豐富的機器學習在工業界及競賽的應用經驗,此前曾在 CIKM Cup 2018、KDD Cup 2017、Kaggle Outbrain Click Prediction 等比賽均獲得冠軍。

今年 KDD 2018 總共設置了三項大獎,我們獲得了兩項冠軍、一項亞軍的成績,是唯一一個包攬三項大獎的團隊。

我們團隊將從以下 4 各方面來分享本屆 KDD 大賽的經驗。

競賽的第一步就是對問題做相應的調研——對於問題以及數據的具體理解是建模的基礎,所以我們先對本次KDD大賽的問題進行理解和分析。

首先介紹一下 KDD Cup 2018 的背景。在本次大賽中,主辦方提供了空氣質量、天氣的歷史數據以及未來兩天的天氣預報數據。我們需要預測北京和倫敦 48 個站點、未來 48 個小時的 PM2.5/PM10/O3 濃度。本次大賽所使用的評價函數是 SMAPE:。

該評價函數是在 Norm-1 的 MAE 評價函數基礎上,除以預測值與真實值的平均值。使用該評估函數能有效防止在空氣質量問題特有的異常值對整體分數的影響,比如說當空氣質量突變到一個很大的值時,分母項可以相對削弱該影響。

接下來講一下數據。空氣質量的指標包括 PM2.5、PM 10、03。天氣數據的欄位包括溫度、氣壓、濕度、風速和風向等。其中天氣預報數據的欄位與天氣數據的欄位相同,但不同之處在於天氣預報僅僅提供了訓練集最後一個月的數據。

這些天氣的數據都以網格的形式給出,即地圖的經緯度通過網格進行劃分,北京總共能提供 600 多個網格點,倫敦能提供 800 多個網格點,在空間維度挖掘潛力很大。據了解,現有的工業界以及學術界主要通過統計學、時間序列等來進行建模,基於機器學習尤其是深度學習建模的探索處於相對初級的階段。

本次大賽的難點在以下方面:

第一,數據存在雜訊和不穩定性,空氣質量規律性弱,濃度經常變化很快。

第二,時間序列的建模難度相當高:需要對未來 48 個小時的每一個小時進行預測。對於時間較長的狀態建模以及序列間依賴關係的建模帶來很大挑戰。

第三,空間拓撲模型:需要對兩個城市共幾百個站點做預測。不同站點之間的濃度有較大區別,變化趨勢不太一致而又具有一定的相關性。

經過數據分析,我們發現北京 PM2.5 的空氣質量濃度變化相當劇烈,這是北京奧體中心從 2 月到 5 月的濃度變化值,其最低值能到 10 ,最高值能到350,而且往往在數小時內就能產生巨大的變化,建模難度較大。

那麼時間序列如何建模呢?我們用這張 PPT 來進行說明,整張 PPT 代表著我們現在能獲取的時間序列數據,從 17 年 1 月 1 號到 18 年 4 月左右,然後以圈進行劃定。這裡我們假設 N 等於 3,那麼左邊的時間數據就相當於從 17 年 1 月 1 號到 17 年 1 月 3 號,右邊就是 4 號到 5 號總共48個小時。因為常用的預測模型只有一個,所以我們需要將 48 個小時滑動拆分為 48 個樣本,那麼每個小時的空氣質量就是其中一個樣本的標籤,由一個 flag 特徵來標識是第幾個序列。這樣,就可以把時間序列預測問題轉化為傳統的單目標回歸問題。

我們要在前 N 天的數據中提取特徵來構建訓練集,所以滑動一圈就能產生 48 個樣本,總共就能產生 86 萬個樣本。然後,我們可以取最後 15 天左右來做驗證集,由於時間序列數據不符合獨立同分布,並不適合做多交叉驗證。並且因為本賽題中不同城市受空氣質量影響的因素各不相同,分布差異較大,所以我們對北京的 PM2.5、PM 10、03 以及倫敦的 PM2.5、PM 10 這五個指標構建五個模型。

接著我們介紹一下特徵工程。特徵往往能決定模型的上限,要進行特徵工程,我們首先要構建一個 Baseline 模型,在此基礎上,才能進行特徵的有效性驗證。

GBDT 模型由於其穩定性及其對噪音的不明顯性等優點,適用於特徵工程的驗證。我們採用每個站點過去 72 小時的空氣質量特徵、離站點最近網格點的過去 72 小時的天氣特徵來構建 Baseline 模型。

這個是 Baseline 模型的預測效果圖,從圖中可以看出,僅僅使用這些特徵並不能很好地反映真實值的趨勢。

在 Baseline 模型的基礎上,我們對空氣質量、天氣數據進行相關性分析,我們發現 73.7% 的空氣質量的變化與風速、風向的變化相關聯。於是我們考慮在 GBDT 模型的基礎上引入天氣預報特徵,但是天氣預報特徵僅從 2018 年 4 月 10 號開始提供,缺乏了一年多的數據——如何填補缺失的天氣預報數據是一個關鍵點。

通常,使用填補缺失值的方法是使用平均值和默認值,但是這些方法都不能產生很好的效果。因此,我們採用了真實天氣來填補天氣預報的缺失值,然而這又產生了一個新的問題——因為天氣預報真實天氣的分布比較不一致,容易導致訓練的過度擬合,因而我們考慮嘗試採用遷移學習去解決這個問題

我們對真實天氣的訓練集採取預訓練,對天氣預報的訓練集採取再訓練的方式來構建模型。然而經實驗發現,天氣預報只有最後一個月的數據,並不能很好地覆蓋所有的天氣分布,所以這個模型的效果在未來的預測不穩定。

最終我們對天氣引入了高斯雜訊,使用高斯分布去估計真實天氣與天氣預報的均值及方差,並且對每個小時都進行參數估計,以得到更準確的高斯雜訊。另外,我們還使用分箱平滑進一步去緩解天氣預報與真實值的分布不一致性問題。

在緩解了不一致問題後,我們認為進一步提升空間在於從單點的挖掘擴展為多點的挖掘。因為天氣預報提供的網格數據點多,數據信息量巨大,挖掘空間很大,所以我們進一步進行天氣預報數據的特徵挖掘。我們對每個站點附近八個方位最近的網格點的天氣進行特徵、空氣質量特,這樣可以使得統計更充分並且穩定。同時考慮到空氣具有較大的流動性,城市乃至城市以外的較大範圍的地點都在未來時間段互相存在一定影響,所以我們對整個城市經緯度跨度較大的 12 個網格進行天氣預報特徵的提取,並使用這些天氣預報特徵來構建我們最終的模型。

經過對比,我們發現這張圖顯示的就是北京奧體中心站 5 月 28 號和 29 號的預測圖,該天凌晨有沙塵暴,導致 PM2.5 的濃度增大,後來天氣持續變好,在 4 個小時內,PM2.5 值從 160 左右降到 30 再降到 10 左右,空氣質量的突變非常劇烈。我們的 Baseline 模型預測是這條橙線,最終模型預測是這條綠線,相對於橙線更加接近真實值(藍線)。因而,最終模型更能準確反映空氣真實值的趨勢。

我們使用了6 批特徵,包括一些基礎的特徵如未來第幾個小時、哪個站點或者一些時間特徵、空氣質量的特徵、歷史天氣的統計,而最重要的是天氣質量、空間拓撲的特徵。同時,我們也對一些歷史變化的特徵進行提取,比如統計 PM2.5 最大值和最小值的時間間隔。

最終,我們構建的模型需要進一步選擇特徵,以縮寫模型的運行時間。我們通過 GBDT 的分裂的特徵增益所選擇的特徵的重要性來進行特徵選擇,最後從 2027 個特徵中選擇了 885 個特徵來構建最終模型。由於特徵之間出現衝突,所以我們採用類似於隨機生成的 Bagging 做法,對特徵進行了分組,對每一組特徵都構建一個模型,然後對每個模型的預測值採取加權融合的方式來構建最終模型。也同時在特徵工程有瓶頸時進入了下一個階段——多模型的構建。

接下來由我們的隊長羅志鵬來介紹深度模型的優化。(羅志鵬:)下面介紹我們主要的兩個神經網路模型。

神經網路模型也有非常強的非線性交互能力,由於我們前面開始做的時候用到 GBDT 模型,DNN 模型實際上與 GBDT 模型具有非常大的差異性。後期使用 DNN模型做融合的時候,能得到最大的提升。

GBDT 模型在時間和空間層面上的表達能力並不充分。在時間層面上,每個樣本的特徵基本上都比較相似,所以我們給這些特徵加了一個標識位,對未來 48 個小時,用 0 到 47 來進行標識。同時,由於主要歷史信息特徵比如歷史空氣質量、天氣預報佔了比較大的特徵比例,我們得到的一些與時間相關的天氣預報特徵的結果差異性比較小,並跟真實值的差異比較大。此外,我們也發現 0 到 47 這個時間特徵的重要性也特別高。

在空間上,倫敦有 13 個站點,北京有 35 個站點,我們也對其進行數字編碼,但是表達能力有限。

接下來介紹一下我們的 DNN 模型。

左邊的這個 Dense 特徵是我們 GBDT 所用的特徵。提特徵的時候,需要注意的是,我們首先要進行標準化,常規標準化方式就是在整個訓練集上統計均值和標準差。我們發現這個數據集缺失點的分布不一樣——填充缺失部分,分布點差距很大,因此我們在做標準化的時候進行了一些特殊操作:首先統計均值和標準差,忽視空值;做完標準化操作,再把空值進行填充;之後,再對異常值進行一些處理,對小於 0.3  和大於 0.3 的值進行拆解,把範圍縮到 3 和 -3 之間。對於缺失值,也用專門的標示位進行表達,然後我們把它 concat 起來,得到整體的特徵標準。

如果僅用左邊介紹的 Dense 特徵,我們得到的結果會非常相近,就是 0 到 47 小時的結果會在某個值之間波動,但是彼此間的差異不會很大。我們在後面進行模型的優化時,加入了時間和空間信息聯合建模的優化。

我們來看一下模型的右邊部分。首先對小時(Hour)即 0 到 47,進行 Embedding,得到時間的表達;Station 部分,同樣對北京 35個,倫敦 13個進行 Embedding,再做非線性變換,這個有×的圓圈部分代表元素層,它將時間和空間的信息融合起來變成時空信息,再經過全連接,再經過 σ,這部分就得到時空門限(Gate),即時間和空間的信息整合。這個門限用來控制左邊主體模型結構的信息通過,這樣預測出來的結果差異性會比較大。這個時間和空間的聯合建模優化不僅提高了精度,而且與樹模型有較大的差異性。

我們這裡用到的激活函數是 B-swish。這個激活函數是由 Google 提出來的,大家可以看一下該函數的圖,它其實是一個不飽和、光滑、非單調性、有下界無上界的函數。相關的 tanh 函數和 sigmoid 函數,它們圖形的兩端比較平,極值容易趨向於 0,會影響效果。另外,Relu 函數有很多變種,這些變種在實驗中能得到比較好的效果,但相比較而言,B-swish 函數無論怎麼調都能達到比較優的結果,這個也在很多實驗中得到了證實,大家可以嘗試一下。

下面講一下 RNN 模型,它是一個序列的預測,為一個序列模型。GBDT 和 DNN 都不是序列模型,它們預測一個站點的未來 48 小時,需要預測 48 次,序列也是 4 8個樣本量,比較大的,差異主要體現在與時間相關的天氣預報上。

而 RNN 模型會一次性預測 48 個小時的結果,這樣訓練的數據會小很多,但是它後面預測的某個小時的結果跟前面的結果有一定的關聯,所以 RNN 很適合用來解決時間序列的問題。

接下來,我講一下這個模型結構。

首先,前面的 Encoder 其實跟普通的 Encoder 模型很像,其主體用的都是 GRU,速度會比較快。Encoder 的輸入主要為歷史天氣預報、空氣質量信息。

Decoder 模型與常規 Decoder模型的差異比較大,輸入的是天氣預報、時間和 Station Embedding,同時會把上一個預測結果加入到每個時間部的輸入。比如說 Y1 在輸出的時候會把輸出結果連接到下一個時間部,第一個 T1 的時間部為一個增勢值的輸入,而當前空氣質量的指標,後面的時間部是沒有增值的,這就是拿預測結果作為下一個時間部的輸入。

我們發現這個時間序列模型有時候並不是很不穩定。我們在序列之間加入了正則化。大家可以看一下這個公式:

h(t)是當前狀況,h(t-1)是上個時態的狀態,我們對這兩個值的差值做了二方次,得到一個規則化的操作,公式的最左邊有個 β,它是用來平衡規則化的,預測也會變得更穩定些。

我們採用 Cocob 優化器 ,它沒有學習率,所以我們不需要調節顯示率。另外,我們也做過一些測試,在這個任務上,這個優化器確實優於其他優化器。當然在一些 Paper 上也做過關於這個優化器的實驗,將其跟常見的而優化器做了一些對比,也表明它確實很不錯。

最後,由胡可講一下模型融合與總結部分。

當幾個單模型都調整到一個相對比較好的狀態的時候,我們要開始想怎麼把這幾個單模型進行融合。通用的融合方式有 Begging、Boosting、Staking,綜合考慮模型的表達能力和模型具有一定的可擴展性(相當於可以加入更多的基模型)後,我們採用了一個兩級的 Staking  結構。

第一級的模型,就是剛剛所介紹的 GBDT 以及 DNN、RNN 兩種神經網路模型,而我們這個staking模型,分為兩級。

第一級中,會對前面的訓練數據進行一年左右的訓練,並將最後兩天作為一個預測時間,這樣能讓線下和線上的預測天數保持一致。而這樣也有一個問題,即因為測試集只有兩天,數據量會比較小。因此,我們採用滑窗的方式來擴大測試集的個數:以兩天為一個單位向前滑,第一個集合相當於以最後兩天作為它的測試集,第二個是以倒數第三、四天作為其測試集,同理滑動多個集合,就可以利用上它們分別預測的值,比如說 GBDT 有一個預測值,這個值就作為特徵 1,DNN 有一個預測值,這個值就作為特徵 2,然後再把幾個集合做拼接,作為第二級融合的訓練特徵值。這個特徵就是第一級模型的預測值,然後 label 就是它本身的數據 label。

第二級模型選型中,我們一開始嘗試使用 GBDT 模型,發現空氣質量數據具有較強的不穩定性,而 GBDT這種非線性模型容易引起過擬合。所以之後我們就採用了一個線性模型——Linear Regression,我們把第一級的預測模型作為特徵,去進行第二級模型的訓練。

為了提高線性模型的表達能力,我們還採用了兩種優化方式:

第一個優化是基於約束的線性模型,背後的假設是第一層模型的預測均值切合真實值,因而第二層模型不影響它們的預測均值。

第二個優化是基於人工先驗引入一個非線性模型,把預測結果按照時間以及空間的多維度劃分。我們發現不同模型在不同時間內表現形式是不一樣的,比如,有的模型在比較短的時間更擅長預測,有的模型在 40 小時後更擅長,因此在不同的時間段分別建模以提高模型的表達能力。相當於在 48 個小時里,分別訓練了 48 個基於約束的線性模型。我們考慮到了過擬合與欠擬合的平衡,在線性模型中基於人工先驗引入了非線性。

在這個融合框架的第一級模型構建,它的構建有多種方式。我們從特徵、模型兩個角度進行構建:模型,指採用 DNN、RNN 這兩種方式去建模時的時間和空間的拓撲關係。在特徵層面,有些特徵如天氣預報具有不穩定性,所以我們在模型中去掉天氣預報特徵,而對於拓撲結構,我們也在 DNN 進行了一定的刪改,並且在不同模型中分別放入長時間特徵、短時間特徵,這樣就可以產生比較強的模型差異性。

模型的精度是S2S(RNN)>GBDT>DNN,融合大概有千分之七的提升,這是相對比較顯著的。主要得益於神經網路模型與樹模型有比較強的差異性,這是模型產生收益的基礎。

這個過程中,我們也有一些想做而沒時間做的工作:

一是對於地理位置的拓撲建模。其實我們在 DNN 進行地理數據操作之後,也想用 CNN 進行拓撲空間建模。

二是我們自身提供了一個五年的數據,但由於時間關係,我們沒有時間去採用。其實我們可以從這個統計分析中看到,這種空氣質量具有比較強的周期性,比如在夏天的時候,霧霾頻率低,在三、四月份比較高。在這五年中,我們其實可以捕捉到基於月、季節的周期性,把這種周期性特徵和五年的數據一起進行建模,應該也會有增度的收益。

三是深入做一個天氣預報的誤差估計模型。我們天氣預報之前用的高斯雜訊,假設不同小時,它的誤差是不一樣的,但影響誤差的因素並不單是不同的時間段,包括最近時間的一次誤差、最近發生突變情況的時間間隔和天氣狀況。如果我們深入,還可以做一個天氣預報的誤差估計模型。

這是關於我們整個迭代過程的總結:

第一步,對問題的理解,並且先從特徵、數據的角度,去挖掘重要的信號量。我們發現比較重要的信號是天氣預報數據,因而將其作為一個關鍵的信號去進行細緻的特徵工程。

第二步,不同於通過特徵工程來表達業務問題。我們盡量從模型角度進行優化,比如針對不同的時間與空間的信息表達,在 DNN 等模型上設計了時間和空間的單元,從而在更多的角度去建模時間序列和空間拓撲問題,與之前特徵工程的工作形成很好的補充。

第三步相當於把特徵和模型這兩個角度的關鍵求解模型進行融合,這是基於一個約束的線性模型的融合框架。

所以我們認為對於問題的理解是基礎,而對於關鍵信息細緻的特徵工程,以及針對問題特點對於時間與空間的深度學習建模是後期優化的關鍵。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

馬斯克再放狠話:一個月內爬出「生產地獄」,明年Model 3周產量再翻番
移動 App 的產品設計實例:啟動頁面和賬號註冊

TAG:雷鋒網 |