提到 KDD Cup,相信數據挖掘領域的同學並不陌生。作為目前數據挖掘領域最有影響力、最高水平的國際頂級賽事,KDD Cup 至今已舉辦 21 屆,每年都會吸引世界數據挖掘界的頂尖專家、學者、工程師、學生等前來參賽,被外界譽為大數據領域的「奧運會」。
今年的 KDD Cup 從空氣問題入手,組委會在比賽中提供中國北京和英國倫敦的相關數據,比賽選手需要預測未來 48 小時內 PM2.5, PM10 和 O3 的濃度(倫敦只需要預測 PM2.5 和 PM10)。在 48 小時後,選手提交的結果將通過真實的天氣數據評分。
雖然 KDD Cup 2018 在今年 6 月就已經結束,冠軍團隊也早已揭曉,但對冠軍團隊的正式頒獎是在剛剛結束的 KDD 2018 上。
本次比賽共吸引了來自全球 4183 支隊伍,包括 49 個國家的 3000 多所學校或機構,北京郵電大學韓金棟、張前前、劉娟,中南大學羅賓理、蔣浩然組成的「first floor to eat latiao」團隊在該項賽事中取得第一名。作為此次比賽的冠軍,「first floor to eat latiao」團隊受邀參與此次大會,在會上展示了他們的解決方案,也第一時間對雷鋒網 AI 科技評論進行分享。
看到隊名,相信大家便對這一團隊充滿好奇。在組隊的時候,隊員張前前提出這個以吃為主題的名字,並得到大家全票通過。「我們都很喜歡吃辣條,辣條是中華民族的傳統美食,我們想要得第一,將中華美食傳揚出去。」
團員組成如下:
隊長韓金棟,北京郵電大學碩士在讀,喜歡用數學建模方法去解決實際生活中的問題;隊員張前前,北京郵電大學碩士在讀,擅長特徵工程和深度學習;隊員劉娟,北京郵電大學碩士在讀,對數據分析和數據可視化感興趣;隊員羅賓理,中南大學本科二年級在讀,擅長特徵工程和模型融合(騷操作);隊員蔣浩然,中南大學碩士在讀,擅長數據分析與時間序列。
以下便是這一團隊帶來的解決方案:
主要的挑戰有三點:
空氣品質變化十分迅速,並且有很多突變點;汙染物會向周邊擴散,具有複雜的空間依賴關係;空氣品質受很多複雜因素的影響,因此需要很強的專業領域知識。
使用到的基本特徵:
過去 72 小時的空氣品質 預測前最後一小時的天氣 未來 48 小時的天氣預報 月份、周末、小時、假期、站點 id
除了基本特徵,我們還從時域、空域、頻域和專業領域知識四個方面分別構建特徵群,一共提取了 100 多個特徵,這些特徵是模型提分的關鍵。
時域特徵
利用預測時間附近天氣預報數據的統計(不同的統計方式,可以統計預測時間節點之前的統計信息,也可以以預測時間節點為中心進行統計)防止天氣突變。
針對短期預測問題,過去的天氣變化可以影響到未來幾個小時的空氣品質。因此我們設計了不同大小的窗口,用來提取過去天氣的統計特徵,這些特徵提高了模型的短期預測能力。
我們還發現未來 48 小時的天氣預報是影響空氣品質長期預測和突變預測的一個關鍵因素,因此我們針對未來的天氣預報設計了很多細粒度的特徵,具體可以看下圖。如果綠色點是我們要預測的時間節點,為了描述預測時間點之前和附近的天氣變化,我們使用滑動窗口提取了預測時間點之前的天氣預報統計信息以及附近的天氣預報統計信息。通過這些特徵,提高了長期預測的準確率。
此外,為了區分要預測的是第一天還是第二天,我們使用了一個標誌位特徵,將預測時間標為 0~47。
頻域特徵
為了得到時間序列中隱藏的周期信息和波動信息,對空氣品質,溫度,溼度,氣壓等時間序列進行傅立葉變換,提取頻域特徵。
空域特徵
未來的空氣品質不僅與過去的空氣品質有關,而且還受到周邊空氣品質和天氣的影響。為了對空間相關性進行建模,我們針對過去的空氣品質、天氣以及未來的天氣預報分別提取了表徵空間相關性的特徵。我們嘗試使用了所有的空氣品質站點和天氣監測站點的數據,這樣會增大模型的複雜度,導致嚴重的過擬合。於是我們假設只有部分站點會對我們要預測的站點產生影響,並使用一些技巧去降低空間特徵的輸入維度。
對於過去的空氣品質和天氣,我們又將其分為兩類:
一類是沒有方向的特徵,包括壓強、溫度、溼度。為了提取這類特徵,我們使用兩個半徑不同的圓將待預測站點周邊劃分為兩個區域,分別為內圓區域和外部的圓環區域,具體劃分方式可以見下圖。我們提取了每一個區域的壓強、溫度和溼度的均值。
另一類是有方向的特徵,汙染物濃度和風的擴散都是有方向的。為了建模這一類特徵對空氣品質的影響,我們將目標站點的方位劃分為八個方向,分別考慮八個不同方向區域對目標站點的影響。對於每一個區域,提取其風速和汙染物濃度的均值。此外,我們又將風向離散為八個方向,每一個區域的風向由眾數決定。如果某一區域汙染物濃度缺失,我們使用插值的方法進行補全。
以上兩類特徵我們均只提取了預測前最後一小時的數據,這些特徵對於短期預測起到了良好的效果。
對於未來的天氣預報,由於天氣網格點和空氣品質監測站點的位置不是對應的,因此我們採用了一種 k 近鄰的方法去提取空氣品質監測站點周邊的天氣網格點。具體做法是尋找距離空氣品質檢測站點最近的四個天氣網格點,使用這些網格點的特徵表徵未來天氣預報對空氣品質的影響,這種方法可以提高長期預測的準確率。
專業領域特徵
查閱氣象學和空氣汙染相關論文,通過風向 uv 坐標系,日照時長,不同時刻溼度的差值,汙染物之間的相關性等方面提取特徵。
模型
因為不同的汙染物具有不同的分布,因此需要分別對每一種汙染物建模。我們採用微軟開源的 LightGBM,具體的建模方式可以參看下面這一張圖:
此外,我們還分析了北京和倫敦的每一種汙染物的分布,發現北京的 PM2.5 和 PM10 是長尾的分布,存在很多嚴重汙染的情況,這會給模型帶來偏差。而北京的 O3 以及倫敦的 PM2.5、PM10 的數值相對來說跨度沒有那麼大,異常點較少。因此我們在訓練模型的時候對北京 PM2.5 和 PM10 的標籤做了 log 變換,在預測未來的時候使用指數變換。這個技巧可以給模型帶來幾個千分位的提升。
以下是關於比賽的更多細節:
團隊共有來自北郵和中南大學的五名成員,大家在比賽中的分工如何?
在比賽初期,我們首先對賽題的技術難點進行了分析,總結出空氣品質預測問題存在的幾點挑戰。然後針對每一個挑戰,我們都有一個隊員去獨立探索,去嘗試一些應對該挑戰的解決方案。最後充分融合各自的方案,集成為一個模型。
此外,我們還有兩名隊員做了深度學習模型的探索,嘗試使用端到端的模型去解決空氣品質的預測問題。在比賽後期,我們的模型遇到瓶頸,我們又進行討論,互相補充了思路,在特徵工程上去掉了很多冗餘的特徵,又提取了不少新的特徵,這讓我們的模型在最後幾天又有了大幅度提升。
比賽的三個難點分別是空氣品質突變迅速、汙染物複雜的空間依賴關係、需要很強的專業領域知識,對於這三大挑戰,分別是如何應對的?
本次 KDD CUP 的比賽有三個挑戰,我們主要是從特徵工程角度出發,去解決這些挑戰。
第一個挑戰是空氣品質變化十分迅速,並且有很多突變點,我們對空氣品質時間序列做了大量的分析工作,了解其影響因素。針對這一挑戰,我們從信號處理的角度出發,使用傅立葉變換將時間序列變換到頻域,更好地提取時間序列的周期和波動信息。此外,我們還設計了更細粒度的天氣統計特徵去表徵天氣變化。第二個挑戰是汙染物具有複雜的空間依賴關係,舉個例子,如果有強風從汙染嚴重的區域吹向周邊區域,那麼周邊空氣品質也會變差。但是如果將所有監測站的數據作為特徵,那麼將會導致嚴重過擬合。因此我們假設只有一部分相鄰的監測站會影響到我們要預測的監測站,並且針對與方向有關和與方向無關的天氣特徵,我們使用了一種降維技巧去降低輸入的維度,防止過擬合。比賽遇到的第三個挑戰是預測空氣品質需要很強的專業領域知識,空氣品質受很多複雜因素的影響,需要結合專業知識去建模。在比賽期間,團隊成員閱讀了大量與空氣汙染和氣象學相關的文獻,從而構造了很多與領域知識相關的特徵,這些特徵給模型帶來顯著的提升。
你們在比賽中採用 GBRT 模型,此前有嘗試過其他模型嗎?
我們還嘗試了 seq-seq 模型建模時間序列,以及使用圖卷積網絡建模網絡拓撲圖的關係,因為數據集的問題,線上效果並不穩定,所以後來線上提交的只是 GBRT 單模型。
你們 PPT 的總結中特別強調了特徵,在這次比賽中,特徵佔據比重有多大?這次比賽有哪些在特徵方面的經驗可以分享?
特徵工程是我們這次比賽獲得冠軍的關鍵,這次比賽在訓練集構造和數據預處理方面,大家都大同小異。我們在特徵工程方面做了一些創新性的工作,提取了一些我們獨有的特徵,因此在比賽初期就建立了優勢。
關於特徵工程方面的經驗,首先特徵要有可解釋性,提取的每一簇特徵都是有理有據的。其次特徵要分群,不要因為效果的提升或下降隨機刪減某個特徵,將特徵分群處理可能會更加有效果。最後特徵要結合領域,一些好的特徵是通過和業務領域結合產生的,通過查閱論文或者資料可以提取到和別人不一樣的特徵。
你們這次去 KDD 的體驗如何?參加這次大會有哪些收穫?
KDD 是數據挖掘方面的最頂級會議,而 KDD Cup 可以說是數據挖掘競賽裡的皇冠,能摘下桂冠,對我們的意義是非同凡響的。我們團隊中也有歷史上年齡最小拿到這一冠軍的參賽者;而在會議上,認識的小夥伴基本上都是能在 KDD 上發論文的大牛,他們的科研實力都非常強;當然更有頭條、阿里、京東、騰訊等大廠在現場,能夠與部門主管/VP 直接交流,也是一件非常不錯的事情,開闊了我們的眼界與思路。
目前,解決方案 PPT 也已經在 GitHub 上公開。
地址: https://github.com/luoda888/2018-KDD-Cup-Top1-Solutions
(完)
雷鋒網雷鋒網