計程車線路預測(Taxi Trajectory Prediction)是Kaggle 2015 ECML PKDD機器學習會議的兩場競賽中的第一場。一個團隊使用他們在MILA實驗室開發的深度學習工具在競賽中贏得了第一名。在這篇文章中,他們分享了許多關於這次競賽的情況和他們獲勝的方式。
想了解2015 ECML PKDD 計程車競賽的情況,可以點擊這裡閱讀關於「Blue Taxi」的文章,Blue Taxi是 Taxi Trip Time Prediction競賽的第三名。
來自381個團隊的459位數據專家針對預測計程車乘客可能在哪下車進行競賽
目標任務特別簡單:我們將要通過計程車的起點(GPS定位點)和一些其他的元數據信息(日期,時間,計程車號碼,客戶信息)來預測計程車的目的地。
所有的訓練數據都是發生在2013-2014年波爾圖計程車的行駛路線,涉及442輛計程車大概170萬的路線信息。你可以在Kaggle的首頁上找到這次競賽的信息,點擊這裡。
在繼續講解之前,先來看看2個視頻,是使用我們設計的模型對兩輛計程車行駛路線的預測情況。
用我們最優的模型預測目的地,測試車輛按照我們預測的地點行駛。第一個視頻中,我們可以很清楚的看到我們設計的模型已經學習到了機場的位置。
有好幾種,例如:
我們三個是 蒙特婁學習算法研究所(MILA,前身是LISA)的學生,它是由Yoshua Bengio教授領導的專門從事深度神經網絡研究的實驗室。我們兩個是實習生(Alex和Étienne),計算機科學專業,Alexandre是一年級博士生,在機器學習(ML)方面有更多的專業知識。這次競賽中所使用到的機器學習技術、技巧和工具都是我們在MILA實驗室開發的,用實驗室開發的編程框架(Theano, Blocks)實現了獨特的深度神經網絡。
沒有,我們之前沒有任何關于波爾圖和它那計程車的領域知識。
對我們三個來說,這是我們第一次(莊重地)參加Kaggle的競賽。作為MILA實驗室的學生,我們更喜歡嘗試一些「非主流」的深度學習(DL)技術,而不是已經成熟的深度學習技術(比如計算機視覺,NLP,語音技術)。
我們想設計一個全能的機器學習方法,儘可能減少手工操作,理想情況下我們希望達到無需預處理或者特徵提取,無需後置處理並且不用模型組合。
我們嘗試了幾種方法,全部都是基於神經網絡的。結果是複雜的模型表現得並沒有簡單模型那麼出色,這是非常奇怪的。
圖1:我們取勝模型的架構圖。我們嘗試用遞歸神經網絡替換MLP,但是表現並不是很好。更深層的網絡也同樣沒有提升效果。
我們取勝的模型架構是基於 多層感知器(MLP)的,感知器是一種最簡單的神經網絡架構。更確切地說,感知器是由一個輸入層(輸入大小是固定的),一個或多個隱藏層(計算輸入數據)和一個輸出層(輸出預測結果)組成。
當然,我們需要調整一下MLP讓它適用於這個任務:
隨後我們訓練模型將預測和實際地點的誤差最小化。我們使用了隨機梯度下降而且我們還將繼續使用。
圖2:所有訓練軌跡的GPS數據點的熱點圖。可以注意到,這裡並沒有印上地圖,只有GPS數據點,這揭露了波爾圖的公路網。
從可視化角度看,這個挑戰很有意思。在競賽的開始,我們計算出了波爾圖計程車最常去的區域的熱點圖(圖2)。正如你所看到的,我們可以很清晰的認出主幹公路、機場、火車站、市中心和郊區。這些發現讓我們覺得我們應該為模型提供相當於數據分布的前期數據。這讓我們考慮將目的地聚類。
只是出於好奇心,我們在嵌入數據的時候使用 t-SNE,我們可以將每條元數據轉化成2維空間中的值(原始的嵌入空間有10個維度),這為我們理解每條元數據值如何影響預測提供了良好的視覺觀察(如果一個人想要在數量上評估單條元數據的重要性,那麼他可以只用這一個特定的元數據作為訓練模型的輸入)。特別地,圖3和圖4分別顯示了嵌入每天第幾刻鐘和每年第幾周作為附屬輸入的預測結果。
圖3:在計程車行駛了的時間裡,嵌入了每小時中的每刻鐘的數據得到了以t-SNE 2D形式顯示的預測結果(一天中有96刻鐘,所以有96個點,每個點代表了特定的刻鐘時間)。上圖表明,每個刻鐘數據本身都很重要。
圖4:在計程車行駛了的時間裡,嵌入了每年中的每周數據得到了以t-SNE 2D形式顯示的預測結果(一年中有52周,所以有52個點,每個點代表了特定的周)。
訓練數據包括:完成軌跡,而測試數據集只包含局部軌跡。這意味著GPS數據序列在輸入到網絡之前需要剪枝。理想的解決辦法是去掉所有在不同時間的軌跡信息。這樣會有1億條訓練實例,對它們進行shuffle操作,我們就可以更好地發揮隨機梯度下降的性能,但是這樣做的代價可能太大了。所以我們隨機地循環遍歷170萬條訓練實例,然後動態地隨機去掉100條數據。
我們使用在MILA實驗室開發的庫文件,也就是 Theano(一個類似numpy的庫文件,用來加速GPU處理)和 Blocks(可以說是建立在Theano之上的一個近現代深度學習框架)。我們非常感謝它們的開發者們。
我們的源碼和運行說明可以在我們的github上下載,點擊這裡。
正如前面所說,我們的實現方法只做了很少的特徵提取工作。我們在通過數據可視化理解數據上花了少量時間,我們大多數時間都在思考如何設計神經網絡架構並且如何使用Blocks去實現它們。
我們的模型是使用隨機梯度下降訓練的,意味著它需要逐個考慮數據集中的每條數據——或者更確切地說,每批200條訓練數據——許多次。比如,在一次迭代中,遍歷所有的數據所花的時間取決於模型的複雜度。用我們最好的模型,在GTX 680上做一次迭代需要幾個小時,訓練它則要半天。
圖5:內存式網絡。RELU層可以由遞歸神經網絡代替。在我們的實驗中,候選軌跡是隨機抽取的,但是手工編碼的相似度函數也可以使用。
我們嘗試了更為複雜的神經網絡架構,比如遞歸神經網絡和一些與內存網絡相關的架構。令人吃驚的是,將所有軌跡作為輸入的遞歸架構並沒有改進預測結果。內存網絡架構(圖5)是基於學習相似度函數的,相似度函數從訓練數據中提取候選軌跡然後度量它們的權重。
Alexandre de Brébisson是蒙特婁MILA實驗室的博士生,師從Pascal Vincent教授和Yoshua Bengio教授。
Étienne Simon 是ENS Cachan計算機科學專業的學生,目前是蒙特婁MILA實驗室的實習生,師從Yoshua Bengio教授。
Alex Auvolat 是ENS Paris計算機科學專業的學生,目前是蒙特婁MILA實驗室的實習生,師從Pascal Vincent教授和Yoshua Bengio教授。
英文原文: Taxi Trajectory Winners' Interview: 1st place, Team(譯者/劉翔宇 審校/劉帝偉、朱正貴 責編/周建丁)
關於譯者: 劉翔宇,中通軟開發工程師,關注機器學習、神經網絡、模式識別。
本文為CSDN編譯整理,未經允許不得轉載,如需轉載請聯繫market#csdn.net(#換成@)