彭 焱 張 偉 萬 方
1(武昌首義學院信息科學與工程學院 湖北 武漢 430064)
2(深圳市思迅軟件股份有限公司 廣東 深圳 518057)
3(湖北工業大學計算機學院 湖北 武漢 430068)
共享單車系統在許多主要城市越來越受歡迎,例如紐約、北京和巴黎。文獻[1]指出,已經有747個共享單車系統投入使用,并且有235個系統正處于規劃或準備階段中。在這些系統中,用戶可以從具有有限碼頭的共享單車站點中租賃和返還單車,以解決短途交通問題。
共享單車系統面臨站點之間車輛需重新平衡的挑戰。從單車系統歷史行程數據可以看出,不同站點在不同時間段內的單車借還量是不平衡的,一些車站可能沒有足夠的碼頭以備將來需要返還的單車停靠,而另一些車站則可能缺少可租賃的單車。實時監測每個車站當前的單車數量并不能解決這一問題,因為在上述情況發生后,再重新為站點分配單車就為時已晚。
為了解決這一問題,本文利用共享單車系統的歷史行程數據和天氣數據來預測未來一段時間內每個站點群的需求,即站點群內所有站點的單車租賃量和返還量。該預測可以幫助系統管理人員更有效地維護共享單車系統,提高單車資源利用率。該問題是非常具有挑戰性的,因為單車出行會受到多種復雜因素的影響,例如季節、天氣狀況、時間類特征等。
基于上述討論,本文提出了一個分層預測模型。首先提出一個基于超級站點的聚類算法,利用站點間的地理距離和單車出行記錄對各個站點進行聚類,其中超級站點是指局部需求比例大于一定閾值的站點;然后利用歷史行程數據和天氣數據,通過基于時間與天氣相似度的模型預測整個共享單車系統中的單車借還量;接著訓練極致梯度提升樹(XGBoost)模型預測每個站點群的單車借還量,進而得到每個站點群的需求在系統中所占的比例;最后結合前面的預測結果,得到每個站點群各時間間隔的單車需求量。
近年來,研究者們對于共享單車系統中出現的各類優化問題越來越感興趣。已經完成的關于共享單車系統的相關研究有站點聚類和需求預測兩方面。
(1) 站點聚類。通過聚類算法可以發現單車使用模式中的規律,減少需求預測的方差并提高預測準確性。Vogel等[2]探討了基于站點群時空驗證的單車活動模式,揭示了單車需求分布的不平衡性。Li等[3]首先提出了一種基于站點地理位置和過渡模式方法,對站點進行聚類。Etienne等[4]引入了一種基于模型的方法,對具有類似單車使用模式的站點進行分組,例如餐館和火車站附近的站點,并預測其在不同時間設置下的單車使用模式。Liu等[5]提出了一種基于熱峰的聚類算法,根據POI(Points of interests)特征和地理距離發現具有不同功能的區域。Chen等[6]為單車站點建立了一個站點相關網絡,然后提出了基于地理限制的標簽傳播(GCLP)算法來聚類站點。張晶等[7]提出了一種基于優化聚類中心點、增進調度需求量的改進Kmeans算法來聚類站點。
(2) 單車需求預測。關于共享單車系統的早期研究集中在使用數據挖掘技術和經典的經驗統計方法研究單車活動模式[8-9]或每日單車需求預測問題上。Froehlich等[10]采用貝葉斯網絡,根據當前時間和當前單車或碼頭數來預測站點的狀態。Kaltenbrunner等[11]使用ARIMA模型將站點狀態建模并利用時間序列進行需求預測。基于來自都柏林的單車數據,Yoon等[12]提出了一個改進的ARIMA模型,利用空間相互作用和時間因素,預測每個站點的可用自行車和碼頭。文獻[13-15]通過從周圍環境和公共交通網絡等多個靜態因素中提取全局特征,然后建立站點需求預測模型。杜明洋等[16]提出了一種基于自適應粒子群小波網絡來進行需求預測的方法。胡郁蔥等[17]基于XGBoost算法提出了一種能夠提高共享自行車短時需求預測的方法。
但是早期的預測方法不能直接用于本文的工作,因為本文目標是找出系統中的所有站點群并對各站點群的需求進行預測,而不是每個站點的需求或者整個系統的總體需求。此外,其他方法中也沒有區分出超級站點和其他站點,而是將所有站點一視同仁,忽略了其在聚類中的作用。
定義1站點核系數。對于系統中的每個站點i,該站點的核系數定義為:
(1)
式中:di表示站點i的單車總租賃量和總返還量之和;S表示站點集合;Dist(i,j)表示兩個站點間的地理距離;δ為距離閾值。
根據式(1),站點核系數為目標站點的歷史總租還需求之和在該站點δ鄰域內所有站點中所占的比例。如圖1所示,每個圓點代表一個共享單車站點,圓的半徑越大代表站點的歷史總租還需求之和越大。可以看到,各地區的單車需求分布非常不平衡。如果只選擇需求量較高的站點作為超級站點,那么那些低需求區域將被完全忽略,這樣并不利于站點聚類和保證整個系統的運行效率。而且一個站點的服務質量也會在一定程度上影響到其他站點的服務質量。例如,如果一個站點是空的(或滿的),那么打算在這個站點租賃(或返還)自行車的用戶就可能會選擇附近其他站點作為替代。同樣,一些交通事件或社交活動通常會影響局部區域的需求而不是整體需求。

圖1 站點需求量分布
根據式(1),在計算站點核系數時需要用到目標站點的局部需求比例。對于那些低需求區域的站點,雖然它們的絕對需求較低,但是在其所在區域內所占的需求比例卻可能較高,因此能夠被挖掘出來。也就是說,最終選擇得到的是“局部”超級站點。
定義2超級站點。超級站點是指站點核系數大于核系數閾值λ的站點。
核系數閾值λ可以影響離群站點、站點群和超級站點的數量。隨著閾值的減小,離群站點的數量將減少,而站點群和超級站點的數量都將增加。離群站點的數量應該越少越好,以便保證整個系統的總體服務質量。然而,隨著站點群數量的增加,每個站點群的單車需求會較少,需求波動更大,所以預測精度將會降低。因此,需要折中選取一個合適的核系數閾值,實驗得到當λ=0.15時,剛好在沒有離群站點的情況下站點群的數量達到最少。
在聚類之前,首先需要定義站點之間的相似度。站點的相似度度量主要由地理距離和單車使用模式決定。為了給用戶提供更多便利,一個站點群中的站點應該在地理位置上彼此接近。這樣,如果在離出發地或目的地最近的站點沒有可用的單車或碼頭的話,用戶也可以步行或騎車到同一站點群中的另一個站點來停取車輛。

考慮到地理距離對于站點相似度的影響,站點間的相似度定義為:
(2)
式中:sign(x)為符號函數。當x≥0時,sign(x)=1;當x<0時,sign(x)=-1。
由式(2)可見,當站點間的地理距離大于距離閾值時,站點間的相似度為負值;而只有當距離小于閾值時,站點間才具有正的相似度。因為當兩個站點相隔距離過遠時,如果其中一個站點不能滿足用戶需求,那么用戶也不太可能徒步走到另一個站點尋找單車或者騎行太遠尋找停車的車樁,因為這樣的時間成本太高。這一點將在下面的聚類過程中用于分離相隔過遠的兩個站點。
站點聚類需要將站點劃分為站點群,以便每個站點群由具有相似單車使用模式的相鄰站點組成。
將站點聚類的好處如下:(1) 站點群的周期性和規律性比單個站點的周期性和規律性更加明顯,因此更容易預測;(2) 站點聚類后會形成一種多層次的需求結構,較高層次代表整個系統的總體需求,較低層次代表每個站點群的需求,通過對較高層次需求的準確預測可以對較低層次的需求預測誤差進行校正,因為系統整體需求是相對穩定且容易預測的。這也是在下面的預測過程中采用分層預測方法的原因。
實際上,不需要去預測每個站點的單車租賃量或返還量。了解每個站點群的單車租賃量或返還量就足夠對單車進行重新分配,因為用戶通常會在靠近其出發地點或目的地的一個隨機的站點借/還單車。如果站點沒有可用的單車或者可用的碼頭,那么用戶也可以方便地在附近的另一個站點借/還單車。此外,那些可能影響單車使用量的事件通常會對一個區域內的站點造成影響,而不僅僅是影響某個單獨的站點。
聚類算法如算法1所示。
算法1基于超級站點的聚類算法
步驟1生成超級站點集合SS。
步驟2利用k-中心點算法對所有超級站點進行聚類,生成多個站點群。
步驟3對于每個普通站點,從SS中選擇一個與其站點相似度最大的超級站點,若最大站點相似度大于0,則將該普通站點加入對應的超級站點所在的群中;否則,將該普通站點作為離群點。
步驟4將每個離群點加入到距其最近的超級站點所在的群中。
步驟2中k-中心點算法在將每個站點分配給距其最近的代表站點所在的站點群時,依據的也是站點間的相似度S(i,j),即相似度越大,距離越近。根據式(2),步驟3中最大站點相似度大于0的超級站點一定是與普通站點距離小于閾值δ的站點,也就是將相隔過遠的兩個站點分離到不同的站點群中。
最終得到的每個簇內可能包含多個超級站點和多個普通站點,這些超級站點與普通站點間距離近且單車使用模式相似,通過平衡超級站點的單車庫存可以間接地調節整個單車系統的服務質量。本文將該聚類方法命名為SS(Super station based clustering)。
旅游活動本身是一項整合了諸多資源的活動,因此企業在進行旅游經濟管理時,不能局限于單一的開發認知,而需要通過整合時代資源、融入信息技術等方法,讓整個旅游經濟管理活動更加智能、科學。實際上,這一管理機制是一種復合型機制,其對于管理者和消費者都提出了諸多要求。在引導消費者樹立生態旅游的消費理念的同時,也要提高其生態環保意識,堅決維護環境。管理者和參與經營者需要樹立系統化的旅游經濟開發管理意識,在整合資源的前提下,堅持將最佳效益與生態保護放在第一位,通過構建生態保護的系統模式,從而實現旅游經濟管理的最佳效果。
在本文的分層預測模型中,首先預測較高層次的單車需求,即整個共享單車系統的總體需求。總體需求由基于時間與天氣相似度的模型預測,利用與目標時間間隔相似度較高的時間間隔內的需求量推導出目標時間間隔內的需求量。
本文要預測的是各時間間隔內的需求,其中每個時間間隔對應一個小時,所以時間特征顯得尤為重要。有兩個比較重要的時間特征,分別為小時和是否為工作日。工作日的交通情況包括早晚高峰時段、平常時段和深夜時段,其中早晚高峰時段的需求量遠遠大于其他時段;而周末或者節假日的需求量則接近正態分布,中午的需求量較大,早晚的需求量較少。 因此,小時和是否為工作日在需求預測中是非常重要的兩個特征。其他的時間類特征,如年份、月份、季節對需求量也會有一定的影響,可以用來提高預測的精度。天氣特征主要包含天氣狀況、溫度、濕度、風速、能見度。這些天氣特征對站點單車需求量也有著不小的影響。例如,當溫度適宜時,人們更容易選擇騎單車出行,而溫度過高或過低都將降低這種傾向,從而對單車需求量造成影響;當遇上刮風下雨等惡劣天氣時,單車的需求量也會比天氣好的情況要降低很多。其余幾個天氣特征也都有類似的特征。
基于上面得到的特征,將不同時間間隔的相似度定義為:
(3)
式中:α1(ti,tj)=1表示時間間隔ti和tj屬于同一類型的時段(早晚高峰時段、平常時段或深夜時段),否則α1(ti,tj)=0;α2(ti,tj)=1表示兩個時間間隔均為工作日或者周末;λ1(ti,tj)=1表示兩個時間間隔內的天氣狀況相同(均為晴天或者惡劣天氣);λ2至λ5分別代表溫度、濕度、風速和能見度的相似度。因為特征λ2-λ5的值都是連續數值,所以使用高斯核函數定義它們的相似度:
(4)

為了預測目標時間間隔內的總體需求,需要先選取前P個與其最為相似的時間間隔,然后利用式(5)得到預測結果。
(5)

要將系統的總體需求分配給每個站點群,首先要得到每個站點群在整個系統中所占的需求比例。根據預測得到的總體需求和站點群的需求比例,可以輕松計算出每個站點群的單車需求。本節使用XGBoost模型來預測每個站點群的需求,該模型的目標函數為[19]:
(6)
式中:gi和hi分別是當前模型下目標函數的一階導數和二階導數;λ和γ是正則化參數;T為葉節點個數,這些都可以看作常量;wj是葉節點分數,是模型要優化的值,當樹結構確定時,目標函數可以看作是關于wj的二次函數,優化起來簡單高效。而且由于XGBoost是直接優化損失函數,所以預測精度也很高。

(7)
(8)

在紐約市花旗共享單車系統歷史數據上進行實驗對比。數據集[20]包含了兩年(2014.01.01—2015.12.31)的單車行程數據和對應的天氣數據,具體如表1所示。

表1 數據集概覽
行程數據來自紐約市花旗共享單車系統,每條行程記錄包含單車ID、時間戳、起始站點ID、到達站點ID和其他信息。根據這些記錄,分別統計出每個站點每小時的單車租賃數量和歸還數量。天氣數據來自全球天氣預報網站提供的API,數據以JSON格式存儲,按約一小時的間隔產生一條記錄,包含了溫度、濕度、風速、可見度、氣壓、天氣狀況等信息。有些時段系統的總體需求非常不規律,對于這部分異常時間段的數據,進行單獨的統計和預測。
對數據集進行劃分,使用2014年的數據作為訓練集來訓練模型,使用2015年的數據作為驗證集來測試預測結果的好壞。
通過實驗對算法進行性能測試。實驗平臺配置為Intel Core i5-8250U CPU,8 GB內存,64位操作系統的計算機,算法程序采用Python語言編寫。
實驗過程如圖2所示。針對紐約市花旗共享單車系統歷史數據進行預處理、離散化,刪除需求量極少的站點,產生三組數據集(n=100、200、300),給定聚類數k=35,然后分別由SS、K-means聚類算法進行聚類,得出各算法下的站點群輸出。最后針對站點群輸出,使用基于時間與天氣相似度模型來預測整個系統的需求,使用XGBoost模型進行各站點群需求預測,并可通過總體需求預測來校正局部需求預測。

圖2 實驗過程
表2所示為兩種聚類算法的時間性能。可以看出,實驗中聚類算法在時間性能方面,隨著樣本點數的增加,所花費的時間基本都呈線性增長,SS算法在聚類時性能比K-means算法有一定的改進。

表2 聚類算法時間性能比較 單位:s
采用的度量預測好壞的指標是每個時段單車需求的平均絕對誤差(MAE)和均方根對數誤差(RMSLE),指標的計算公式為:
(9)
(10)

將本文方法命名為SS-HP。為了證明該方法的有效性,在以下基準方法上進行了對比實驗。
HA(均值法):根據與預測時段相對應的其他時段的歷史租賃/返還平均值來預測。例如,周一下午1:00—2:00,其對應的時段為所有工作日下午1:00—2:00這段時間。
ARMA(自回歸滑動平均法):對借還單車量的預測可以看作一個時間序列問題,因此可以由ARMA進行預測,ARMA是理解和預測時間序列中未來值的常用模型。與HA的實驗類似,在ARMA的實驗中,也區分了一天中的每小時和一周中的每一天。
KNN(K近鄰法)[21]:KNN通過定義各時間的相似度,選取與預測時段最為相似的K個時段,將這K個時段的歷史需求的均值作為預測結果。
在聚類方法上,采用經典的K-means方法進行對比實驗,因此共有以下七種基準方法用來與SS-HP進行對比:K-means-HA、SS-HA、K-means-ARMA、SS-ARMA、K-means-KNN、SS-KNN和K-means-HP。
圖3是通過K-means和SS方法分別得到的聚類后的站點群結果圖。其中,不同區塊表示不同的站點群,區塊中的每一圓點代表一個共享單車站點,兩種方法都生成35個站點群,為方便進行對比,中心有十字標記的點是挖掘出的超級站點。

圖3 兩種聚類方法產生的結果
圖4和圖5分別是所有時間段和異常時間段中,站點群需求預測結果在兩種度量指標下的對比圖。可以看出,在兩種時間段中,本文提出的SS-HP方法在兩種度量指標下均取得了優于其他基準方法的結果。另外,觀察K-means-HA和SS-HA、K-means-ARMA和SS-ARMA、K-means-KNN和SS-KNN、K-means-HP和SS-HP這四組對比方法,可以看出通過SS聚類的四種方法,其需求預測結果均優于對應的K-means聚類的方法,這表明了本文提出的基于超級站點聚類方法(SS)的優越性。

(a) MAE度量需求預測結果

(a) MAE度量需求預測結果
本文提出了一種基于超級站點的聚類方法和一種分層預測方法來對共享單車系統中的站點進行聚類并預測每個站點群的單車需求。具體地,首先從單車系統中選擇超級站點,然后圍繞超級站點進行聚類。整個單車系統的總體需求使用基于時間與天氣相似度的模型來預測,最后使用XGBoost模型來預測每個站點群的需求比例,進而得到每個站點群各預測時間間隔內的單車需求。基于紐約市花旗共享單車系統的歷史數據進行實驗對比,證明了本文方法在預測站點群單車需求上的高效性和有效性。
未來將從以下幾個方面改進這項工作:首先,計劃收集并處理其他更為豐富的城市計算領域的數據來獲取更多更好的特征,例如社交網絡數據和城市出租車行程數據,這些特征可能都會對提高單車需求預測的準確度有積極作用;其次,對單車需求的預測結果可以運用到城市計算中去,例如幫助城市建設者合理地規劃單車車道,或者通過預測城市不同區域的單車需求,來指導單車站點選址的問題。