天天看點

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

美國紐約的計程車,因為統一、顯眼的黃色車身,被老美們戲稱為“小黃車”。紐約小黃車是紐約客日常出行的主要交通工具之一,但對于大部分乘客而言,一定很想在上車之前就知道到達目的地的打車車費是多少。于是,資料俠Emanuel Kamali就通過資料分析與模組化,對紐約計程車車費做出預測,并且還發現了一些有趣的現象,快來一起看看吧。

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

▍項目簡介

随着科技發展不斷推動各行業的資訊化程序,紐約标志性的計程車小黃車們卻拖了後腿。在Uber、Lyft等共享出行平台的競争下,小黃車也開始和Google合作,讓自己的服務變得更加以資料為中心。小黃車希望Google可以通過它們提供的資料,設計出一些新的功能進而進行計程車價格的預測。這些資料資訊包括:

  • 上車時間/日期
  • 上車地點(經緯度)
  • 下車地點(經緯度)
  • 乘客人數
  • 費用

▍項目目标

紐約市計程車小黃車、Google和美國大資料競賽平台Kaggle合作,設定了一個資料應用競賽,讓想要“把玩”這些資料的玩家們可以嘗試通過這些資料集來設計一個機器學習算法,用以預測車費。我們的目标就是,通過分析這些資料集,設計出一些新的功能,讓新的資料可以在我們的算法和代碼中運轉,并最終得出預測車價。

▍探索資料

為了設計一個有效的機器學習模型,我們需要先做一些事情來保證模型是精确的。首先就需要對小黃車有更多的了解,是以我先做了一些研究,弄明白它的計費模式。

  • 起步價:5美金
  • 每公裡價格:每1/5英裡40美分
  • 等待時的收費:每120秒40美分
  • 去/從JFK機場打車的固定費用:45美元
  • 去/從Newark機場打車的額外收費:15美元(周中下午4到8點)

于是我進一步探索資料,研究不同的時間點打車是否影響價格。在對資料進行處理前,我先研究了一下打車價格資料的分布情況。

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

可以看到,這組資料是十分分散的,也就是說我們的資料集裡有很多異常值。我把這些異常值去除,可以更直覺地看到價格的分布情況。

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

上圖顯示,這組資料裡的價格區間在2.5美元到40美元之間。

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

在對上下車地點的資料進行清理後,我們仔細研究一下不同時間對價格的影響。

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

從上圖可以看出,周五周六和周四的乘車次數最多。這可以了解,因為在美國人們周末通常會更多的使用計程車。如下圖,當我們研究某一個給定日期内不同時間點的平均價格時,會發現并沒有太大的差別。

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

下圖是一天24小時的平均價格分布。橫軸代表了24小時。

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

接下來,我的研究了一下打車人數資料,發現有些蹊跷的地方。一輛小黃車可以最多搭載7名乘客,但是在資料中我們隻找到非常少的7人滿載搭車的情況。另外,還有一些資料顯示搭載人數為0,這也不合常理。于是這些資料可以被篩選清理掉。

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

去除掉0名乘客和大于6名乘客的資料後,我們得到一個更加真實的圖像。

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

從下圖可以看到,乘車人數和對應的價格的差別并不是很大。

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

▍有趣的發現

研究完了小黃車一天不同時間的不同價格,我開始研究為什麼這幾年打車價格不斷上升。我把名額改為年-月的計量機關。這樣我可以看到不同年份的價格變化。

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

從上圖可以看到,2012-13年期間價格有一個高點。下圖是每個月的價格情況。

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

從中也可以看到2012-13年的價格飙漲。作為一個資料科學家,這是我想要進一步挖掘的發現。我在網上搜尋後發現,2012年9月3日一篇紐約時封包章對當時紐約車費的上漲做過報道。

本次的車費預測研究簡單總結如下:

  • 紐約的計程車管理機構在當時準許了新的計價方法,并開始允許計程車營運機構使用新方法,并導緻費率上漲了17%。
  • 基礎車費的起步價沒有變化。
  • 每1/5英裡的價格從40美分漲到50美分
  • JFK機場到曼哈頓的價格漲了7美元,到52美元
  • Newark機場從15美元漲到了5美元

▍機器學習

在我清理了資料、将上下車地點資料換算成裡程公裡數後,我開始将資料輸入到我的機器學習模型中。我使用了三種模型:多重線性回歸,随機森林實作以及GBR(gradient boosting regression)。

我使用均方根誤差(RMSE, root mean square error)來判斷哪個模型表現最佳。在展示結果前,我們先看一看随機森林和GBR的模型的不同。

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

對于随機森林,最關鍵的影響因子是Haversine-dist,也就是上下車地點間的距離。其他的因素影響很小。

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

而對于GBR而言,Haversine-dist也是很重要,但是其他的包括上車地點、下車地點也很重要。

對于這兩個模型,乘客數看起來都不怎麼重要。

大資料預測打車費用的方法論:資料分析和機器學習,一個沒落下!

從最終結果看,随機森林模型表現最好。它的均方根誤差為2.418左右,這意味着當我們的模型算出一個預測值時,最終真實的價格可能隻相差2.418美元。

▍項目研究的更多可能

今後還可以做更多的嘗試,來提高準确度。比如,如果我們可以把去機場的車和其他地點的車分隔開,就可以進一步研究在紐約市打車的人們都去了哪裡。

注:本文編譯自紐約資料科學院部落格《 Predicting NYC Yellow Cab Taxi Fare》,點選“閱讀原文”檢視。内容僅為作者觀點,不代表DT資料俠立場。文中圖檔部分來自作者。

作者 | Emanuel Kamali

題圖 | 站酷海洛