?

基于機器學習的出租車軌跡大數據分析研究

2023-08-26 05:04金建劉春霞劉勇
電腦知識與技術 2023年21期
關鍵詞:聚類算法機器學習數據分析

金建 劉春霞 劉勇

關鍵詞:出租車軌跡;機器學習;聚類算法;數據分析

中圖分類號:TP18 文獻標識碼:A

文章編號:1009-3044(2023)21-0063-04

1 研究背景和意義

在大數據時代,數據的影響不再局限于企業領域。除了可以創造商業價值,數據還能夠為社會創造極大價值。隨著通信技術的發展,交通數據的貧乏狀況得到改善,變得更加豐富。然而,由于這些數據的種類繁多、數量龐大,如何從中提取有用的信息以促進決策,尤其重要。同時對于交通數據的處理和分析,在技術上也面臨著巨大的挑戰,數據采集效率、數據處理方式、數據模型等各種問題,都在不斷地改進和完善。

在面臨如此龐大的數據量下,傳統的數據庫技術已經難以滿足計算分析的需求,于是大數據技術順應而出。通過大數據相關技術對交通軌跡數據的處理,結合算法,來實現對居民出行的預測、出租車熱點區域的判斷等。一方面可以幫助城市交通管理部門更好地合理配備或調度公共交通資源,制定出更好的統籌與協調解決方案。從而有效地提高城市交通運行效率以及提升資源利用率。另一方面可以給出租車司機行駛帶來引導作用,讓出租車司機能更短的時間內載到乘客,避免空載造成的道路資源浪費。

2 機器學習聚類算法研究

聚類算法有多種不同的類型,包括劃分法、層次法、基于密度的聚類方法和基于網格的聚類方法等。每一種都有其各自的特征,應根據不同的應用場景和數據特點來選擇不同的聚類方法。

2.1 K-means 算法

K-means算法是一種常見的聚類方法,也被稱為K平均值算法或K均值算法。該算法通過隨機選擇K 個中心來劃分數據集,每個中心對應一個簇。由于簇中心的存在,每個簇中至少有一條數據,算法會計算所有數據點與各個簇中心的距離,并將每個數據點歸入最近的簇中。針對每一個類簇,重新通過最近距離來計算出它的新的簇中心。如果中心沒有發生變化,就結束這個過程。否則,退回到重新繼續劃分到距離最近所在的簇中,如此循環。在對K-means算法聚類大規模數據集時,為了避免造成死循環,一般情況下需設定最大迭代次數。該算法具有局部最優特性,并非全局最優解。此外無法計算距離的非數值數據集不能使用K-means算法來聚類。本文中對于最短距離的計算使用歐氏距離。

2.2 其他K-means 算法

K-means算法作為經典算法之一,也存在著一些缺點。例如:對于大規模的數據,K-means算法常常需要多次迭代計算才能得到局部最優解[1],以及往往帶來大量的數據通信。針對這些存在的問題,ZHAO 等人通過基于云計算平臺Hadoop,提出了PKMeans算法[2],有效地提高了傳統聚類算法處理大規模數據時的性能。Liao等人提出了改進版的基于MapReduce 的并行K-means聚類算法[3],通過減少迭代次數和加快每次迭代時的處理速度提高了算法的性能。再后來,夏提出了并行三階段K均值算法[4],結合了統計方法的規則和采用了多種初始化策略,優化了K-means 的距離度量和聚類初始化,較之前的K-means算法有了更高效率和可靠性。李等人基于Spark的并行化,驗證了K-means II算法在準確性和時間效率上有更高的優越性[5]。

3 算法模型設計

出租車軌跡數據由于其具有數據量規模大、數據類型多的特征,以至于在單機環境上難以進行處理和計算。為了提高數據處理效率,本文將大量出租車軌跡數據上傳至分布式集群環境中,通過Hadoop的Ma? pReduce計算編程原理,來實現K-means的聚類,建立基于MapReduce的K-means算法模型。

設計思路如下:

1) 隨機選取k個樣本軌跡數據為初始簇中心,同時隨著迭代更新簇中心。

2) 在Map階段,計算每個樣本軌跡點與各個簇中心的距離,并且找出距離最近的簇中心。

3) 在Combine階段,將Map的輸出在本地做進一步的合并,記錄每個簇中樣本的個數。

4) 在Reduce階段,重新計算獲取新的簇中心,判斷結果是否收斂,否則進入下一輪迭代。

具體實現步驟:

1) 首先創建一個configuration以字符串的形式來存放初始軌跡聚類中心。

2) Mapper:重寫setup方法,用來取到configuration 中的初始簇中心或上一輪聚類后的簇中心。map方法里,輸入key為偏移量,value是一行樣本軌跡數據,將每一個的輸入樣本軌跡數據點與簇中心計算出距離,并找到距離最近的簇中心。最后輸出key為距離最近的簇中心,value為樣本軌跡數據點。獲取距離最近的簇中心的部分偽代碼如下所示:

輔助變量min記錄最小距離,初始化為最大值;

index記錄最小距離的簇質點,初始化為0;

//計算每個輸入點與簇質心的距離,并且找出距離當前點的最近簇質心

for i=()to k-1 do{

d=樣本軌跡點與第i個簇中心點的距離,采用歐氏距離

if min=ind>d {

min=d;;

index=i;

}

3)Combiner:輸入為Map階段計算得來的最近距離的簇中心和樣本軌跡數據點。以劃分到一個簇中心的所有樣本軌跡數據作為一個簇,將相同簇下的所有樣本軌跡的坐標值累加求和,為了計算每個簇的平均值,同時記錄下每個簇里的樣本軌跡點個數,并輸出。

4) Reducer:以Combine 階段的中間結果作為輸入,將獲取到的每一個簇中所有樣本軌跡的坐標值累加和結果除以對應簇中樣本軌跡點個數,可得到新的中心坐標,即為新的簇中心。同時,將上一輪的簇中心坐標與新的簇中心坐標做對比,若不同則在自定義的counter上加1,進入下一輪迭代。若相同,則將新的簇中心作為結果輸出。

5) 在Main方法中,定義了configuration獲取輸入文件的路徑,以及自定義了全局變量counter作為計數器。configuration在第一輪讀取我們自定義的初始軌跡簇中心,而后每一次迭代都將讀取上一輪計算后的新的簇中心。若計數器counter用來判斷統計目前迭代次數。

4 實驗結果與分析

4.1 城市道路擁堵情況

由于出租車在運營過程中受時空條件的制約,呈現不同的時間段有不同的規律。在原來經過清洗的出租車軌跡數據的基礎上,針對早上6點至24點,每個小時段所有出租車行程軌跡進行統計。如圖1 所示。

從圖1中的結果可以看出,出租車軌跡數目在8 月3日這天呈現出3個高峰期,分別在10:00-11:00、0104:-0101-:0105:之00間以達及到2一1:0天0-之22間:0的0這最幾高個峰值時,間也段就內意。味1著0:在這個時間段內處于一天之中的交通高峰期。

通常情況下,交通高峰期會出現道路堵塞、交通癱瘓等眾多交通問題。為了更直觀地獲取城市道路擁堵情況,選取交通高峰期10:00-11:00這一時段來進一步研究。

結合K-means算法模型,設定初始聚類軌跡數目K=15,隨機選取地圖中15個坐標點作為初始聚類中心進行聚類,并通過多次迭代并記錄每一次迭代的聚類中心和所屬的軌跡數目。最后將聚類結果導入地圖中。在進行了7次迭代后,獲取結果如下圖2所示(軌跡數目作為熱度依據)。

通過圖2中得到的聚類結果來看,成都市出租車在8月3日10:00-11:00這一交通高峰期內,出租車軌跡熱度較高的區域大部分位于三環內,主要集中在市區的中心區域、重要的大型商場和寫字樓以及公共的重要交通樞紐。

4.2 出租車載客情況

通過對預處理后的出租車軌跡數據提取載客狀態為1的部分就可以得到所有載客軌跡。同樣的,以每個小時為間隔來進行載客軌跡數目統計,并根據所有軌跡數目算得對應時段的出租車載客率,得到結果如圖3、4所示。

從圖4中可以明顯地發現,在成都市8月3日按小時段的載客軌跡數目曲線與包含所有軌跡數目的曲線有相似的特征,按小時段的載客軌跡數目的3個峰值時段11:00-12:00、14:00-15:00、21:00-22:00與所有軌跡數目的3個峰值時段10:00-11:00、14:00-15:00和21:00-22:00大致相吻合。居民對于出租車的需求從8:00左右開始逐步呈現上升趨勢,中午12:00-13:00是午餐用餐時段,到達第一個谷點,至13:00之后再次穩步上升,在14:00-15:00之間達到一天中的載客數目最高峰值。過了15:00之后,載客數目漸漸趨于平緩,并且在19:00時達到了一個相對較低的水平,一直到20:00左右開始回升。

載客率曲線更是幾乎與載客軌跡數目完全相同。出租車的載客情況隨著城市交通量的上升而增長,同時也伴隨著載客率的上升??梢娫谔幱诮煌ǜ叻鍟r段里,出租車往往都會往出行需求量大的區域匯集,這也符合出租車司機的運營策略。

4.3 居民出行熱點區域劃分

通過對預處理后的出租車軌跡數據里提取上下客點數據,來作為居民出行熱點區域進行劃分的依據。不同于所有軌跡,上下客點作為居民出行活動的起訖點,一定程度上反映了該居民的出行需求。本文通過獲取城市交通高峰時段10:00-11:00的出租車上客點軌跡,重點分析居民上客點產生的需求,來對居民出行熱點區域進行劃分。獲取結果如圖5所示(僅部分軌跡展示)。

針對圖5中出租車上客散點圖來看,成都市市中心附近頻繁發生上客事件主要分布于東城根街、春熙路商圈、成都第三人民醫院、市二醫院以及新華大道與紅星路交匯處附近。以此來看,在8月3日,成都市市中心附近居民出行需求大多以休閑娛樂、醫療為主。

根據上述的成都市居民出行特征,結合K-means 聚類挖掘居民出行熱點區域,并統計各熱點區域上客數目,如表1所示。

觀察表1可以發現,其中含有不少聚類規模較小,不具備實際分析意義。故將其剔除,同時將出行熱點區域中心點與地圖中實際區域相匹配,得到實際熱點區域如表2所示。

通過表2的結果可以發現,以上劃分出的7個熱點區域的出租車出行熱點軌跡規模占據的規模達到了82.4%。同時,這些出行熱點軌跡的實際區域也吻合于圖5二環內市中心的居民上客需求較高的區域。這幾個區域體現了成都市8月3日早高峰時段10:00- 11:00居民出行的熱點。

5 總結

近年來,隨著大數據技術的興起,為各種海量數據的分析研究帶來了無限可能。本文以大規模的出租車軌跡數據作為分析研究對象,介紹了出租車軌跡數據的特征,并通過導入地圖進行軌跡數據展示。對實驗環境Hadoop平臺進行了相關闡述,并在實驗之前對原始軌跡數據進行預處理操作。簡單地介紹了機器學習和相關常見的聚類方法。采用MapReduce 編程,建立了一個K-means聚類模型,設定了K值、初始聚類中心等相關參數,選取歐氏距離進行聚類過程中軌跡點距離的計算。結合K-means聚類模型,分析了成都市8月3日各個小時段的道路擁堵情況,并獲取到了交通高峰時段的出租車軌跡熱度較高的區域。通過提取出租車軌跡載客狀態,展示了各小時段的載客狀態載客情況和載客率,根據結果對比驗證了載客率與城市交通情況存在正相關規律。對于城市居民出行熱點區域的分析提取了所有軌跡數據中的上客點,通過分析交通高峰時段10:00-11:00期間所有的上客點,劃分出6個出行熱點區域。

猜你喜歡
聚類算法機器學習數據分析
基于K?均值與AGNES聚類算法的校園網行為分析系統研究
前綴字母為特征在維吾爾語文本情感分類中的研究
淺析大數據時代對企業營銷模式的影響
基于支持向量機的金融數據分析研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合