1. 程式人生 > >Kggle比賽之Artifical Neural Networks Applied to Taxi Destination Prediction

Kggle比賽之Artifical Neural Networks Applied to Taxi Destination Prediction

Artifical Neural Networks Applied to Taxi Destination Prediction


摘要:本文主要是基於計程車軌跡對終點的預測。其中,資料為長度不同的來自GPS的節點和各種各樣相關的元資訊(meta-information)。比如,計程車出發時間、司機的ID、乘客資訊。本方法是一種基於神經網路的自動預測方法。我們嘗試的模型架構包括多層感知機(multi-layer perceptrons)、雙向迴圈神經網路(bidirectional recurrent neural networks)和最近比較火的記憶網路(memory network)。由於我們的目標是通過不定長的序列預測定長輸出,因此該方法能夠很容易的適應其他的應用。


引言

計程車終點預測是由2015 ECML/PKDD和Kaggle聯合組織的一個比賽。目的是基於原始部分的軌跡(prefixes)和一些相關的元資料去預測出租車終點的經緯度。這樣的預測有助於對計程車的排程。
該比賽的資料集是2013-07-01至2014-06-30期間,442輛計程車在葡萄牙波爾圖行駛的一整年的軌跡資料。訓練資料集包含170萬資料,每一個都代表計程車的一個完成軌跡,其中每個樣本包括下列屬性。
* 完整的計程車軌跡
每15秒採集一次的GPS位置(經緯度)序列。其中最新的位置代表終點(label)。不同的軌跡長度會有不同。
* 與計程車相關的元資料
client ID or taxi stand ID

,若乘客電話叫出租車,則有乘客ID,若乘客路邊叫出租車,則有一個taxi stand ID。
taxi ID
軌跡開始時間,以時間戳的形式表示。
在競賽設定中,測試資料集由320條部分軌跡組成,這是根據不同時間戳拍攝的五張快照建立的。測試集實際上被分成兩個大小相同的子集:分別為公共測試集和私有測試集。公共測試集是比賽中正常使用的測試集,而私有測試集只針對最後排行榜使用。
與已被其他比賽者公開的方法相比,我們的方法更加的自動化。在本文的第二部分介紹了我們的獲獎模型。它是一個基於MLP的模型;本文的第三部分更多的介紹了我們嘗試過的複雜的選擇體系結構;第4節和第5節我們在數量和質量上都對競爭測試集和一個更大的自定義測試集比較和分析了我們的各種模型。

2、獲獎模型

2.1、資料分佈

此任務的目的是根據計程車的歷史軌跡預測出租車目的地。由於資料集是由完整的軌跡組成,因此我們必須通過合適的方式切分軌跡。由170萬資料組成的資料集中給出了83480696種可能的歷史軌跡。訓練的歷史軌跡的分佈應該儘可能的接近最終所提供的、需要被評估的測試資料集。即所有訓練集中的歷史軌跡都有相同概率在測試集中出現。因此,生成一個包含原始訓練集的所有可能完整軌跡的訓練集。這個訓練集不管是完整軌跡還是歷史軌跡都有與測試集相同的分佈。

2.2、MLP

MLP,是一個前聵全連線神經網路。該網路是以固定長度作為輸入,然後,通過一層或幾層隱含層對輸入資料進行計算。最終,輸出層返回對輸入的預測情況。在這個過程中,輸入層輸入計程車的歷史軌跡和相關元資料轉化後的定長向量,輸出層返回預測的計程車到達目的地的經緯度。我們使用的是標準隱含層,該隱含層首先進行矩陣乘法,然後再加bias和非線性函式。這裡非線性函式使用的是RELU函式。與傳統的sigmoid函式相比,RELU函式沒有梯度彌散問題。因為當x大於0時,函式導數總為1。我們的獲獎模型使用的是500RELU神經元的單隱含層網路。

2.3、Input Layer

我們遇到的首要問題之一是,歷史軌跡是不同長度的GPS點,而MLP需要的是定長輸入。為了適應MLP的需求,我們選取軌跡的前k個點和後K個點從而形成2k個點或者4k個點的輸入向量。我們的獲獎模型,選取k=5。GPS點服從均值為0方差為1的標準高斯分佈。當原始資料中包含的點小於2k時,開始的k值和最後的k值會發生重疊。當原始資料中包含的點數小於k值時,我們通過重複開始值和結束值來保證向量長度。
對於離散元資料(包括使用者ID、計程車ID、日期、時間資訊),我們使用embeding的方法。更準確的說,我們把樣本資料中的每一個樣本資料表示成一行。對於時間和日期,我們按一天中每15分鐘為一個間隔、一星期中每天為一個間隔、一年中每月為一個間隔進行劃分。並把時期時間資訊放在4k的位置。
表1

2.4、目的地聚類和輸出層

我們的輸出應該是經度和緯度兩個標量值。因此輸出層需要有兩個神經元。然而,由於這個模型訓練方式沒有考慮到任何資料分佈的預先資訊,因此想訓練出好的模型是很困難的。為了解決這個問題,我們直接將目的地先驗情況整合到模型中去,然後根據目的地位置,對目的地進行聚類。
然後,輸出層就等價於一個簡單的線性輸出層,而權重矩陣固定為我們預先設定的聚類中心,不再變化。由於輸出值必須對應一個聚類中心,因此隱含層得到的Pi值之和必須為一。在這裡使用softmax。此處聚類使用的是均值漂移演算法,如圖1所示。

2.5、損失計算和訓練

此處使用的是類似於Haversine distance的一種損失函式。具體情況可恨據實際情況考慮。

3、方法選擇

以下方法沒有上面的模型表現好,但是可以為變長輸入定長輸出提供好的思路。

3.1、迴圈神經網路

3.2、雙向迴圈神經網路

我們發現歷史軌跡中最相關的部分為開始段和結束段,因此我們嘗試對這兩個部分使用 BRNN。

3.3、記憶網路

4、實驗結果

由於比賽資料集較小,我們無法依靠它進行模型比較。因此,針對這篇論文,我們選用其他兩個大的資料集進行模型比較。下面,本文從自定義的樣本集、Kaggle公開樣本集、Kaggle最終的私有樣本集三個方面對以上提到的各種網路進行了測試。

5、結果分析

我們的獲獎模型是使用的是目的地聚類後的MLP模型。然而,在我們的自定義資料集中,它並不是最好的模型,BRNN才是最好的模型。由於本文自定義的資料集比比賽的資料集要大得多,因此結果應該更準確,更有說服力。
內部程式碼中文簡介見我的下一篇部落格