周海權,陳 超,王 捷
(四川輕化工大學計算機科學與工程學院,宜賓 644000)
隨著綠色出行倡議的提出,共享單車作為許多人短、中距離出行的首選[1],為人們提供一種健康、環境友好的出行解決方案,然而共享單車規模的擴大、用戶的增多也引發了許多問題[2-3]。
首先存在的問題就是“亂”,共享單車具有隨停隨用的特點,可能導致單車亂停亂放,影響城市交通的秩序;其次存在的問題是“浪費”,過多的投放可能造成極大的浪費,背離了節約資源的初衷;最后就是存在地區單車分布“不均勻”的問題,尤其是在用車高峰期,導致用戶借車困難、體驗差等問題[4-6]。
針對以上存在的問題,許多科研人員對共享單車需求做出了預測,給單車調度的人員帶來科學的指導,解決共享單車分布不均勻、用戶借車難、體驗差等問題。焦志倫等[7]提出了以各種常見的機器學習模型對共享單車需求進行預測,得出了機器學習中的隨機森林模型與決策樹的迭代對共享單車的預測結果有提升,使其結果更加精確的結論。楊軍等[8]提出相比隨機森林更加精確的BP 神經網絡算法,該算法對共享單車需求的預測準確率有所提高,提出基于BP 神經網絡算法的共享單車需求預測,并基于Logistic 函數、Idenliey 函數、Tanh 函數、Relu 函數對共享單車需求預測進行對比,結果表明精度最高的模型為Tanh函數下的BP神經網絡模型。苗曉峰等[9]提出一種基于長短時記憶網絡與時間空間結合的方法,對不同類型站點的共享單車進行需求預測,并與BP、HA 神經網絡和GBDT等模型的預測結果進行比較。實驗數據表明,加入時間、空間等特征后在借車、還車數據量波動比較大的站點預測的效果更好。徐長興等[10]提出了基于Stacking策略與其他傳統機器學習模型的組合預測模型,并和單一的機器學習模型進行了對比,結果表明組合預測模型的平均絕對百分比誤差下降了9.1%。喬少杰等[11]提出了一種基于站點聚類的共享單車的需求預測,通過構建單車轉移網絡計算站點的活躍度,充分考慮站點聚合到一個聚簇之間,給出最佳的簇中心,使用長短時記憶網絡進行訓練并與許多傳統的機器學習模型進行對比,實驗結果表明,共享單車需求模型預測性能得到顯著提升。
極限梯度提升(XGBoost)是一種高效的集成學習方法,現在廣泛應用于大氣污染預測、光伏預測、房價預測等領域[12-13]。為了進一步提升模型的預測能力,本文提出基于網格搜素優化XGBoost的預測模型GS-XGBoost,利用網格搜索優化算法進行超參數調優,使XGBoost 的性能達到最佳,以此為基礎構建實驗,實驗表明GS-XGBoost 預測模型對共享單車需求的預測有著更好的預測結果。
XGBoost 屬于Boost 算法家族中的一員,是在GBDT基礎上進行優化改進的,基本思想通過多個簡單的弱分類器,構建出準確率很高的強分類器,每一步都產生一個弱預測模型,然后加權累加到總模型中,每一步的弱預測模型依據損失函數的梯度方向,這樣若干步以后就逼近損失函數局部最小值的目標。
1.2.1 網格搜索算法(GirdSearrcchhCCVV)
網格搜索算法(GirdSearchCV)可以拆分為兩部分,即網格搜索和交叉驗證,網格搜素參數與交叉驗證類似于算法中的窮舉算法;枚舉去搜索的是超參數,即在指定的參數范圍內,按步長依次調整參數,利用調整的參數訓練學習器,在所有的參數中找到精確率最高的參數。參數值的各種排列組合自動選擇出模型的最優參數組合,自動調參的機制就是利用交叉驗證法來支持的,最常用的為K 折交叉驗證,最常見的K 取值為10,每次劃分時,在不同的數據集進行訓練、測試、評估,得到的評估結果取平均值即可。
1.2.2 GS-XGBBoooosstt的構建過程
步驟1:對共享單車數據集進行預處理,對數據進行拼接、異常值處理、歸一化等。
步驟2:將數據集劃分為訓練集和測試集,首先進行XGBoost 模型建模,采用XGBoost 對訓練集進行訓練,然后將訓練好的模型用測試集進行驗證對比,記錄預測的評估指標值。
步驟3:用網格搜索優化的XGBoost 建模,即GS-XGBoost,基本步驟和XGBoost 建模是一致的,但是要列舉出XGBoost重要的參數排列組合的網格,然后基于一種評價指標對模型進行打分,交叉驗證出評分最高的參數。
本文以一個小時為單位對芝加哥2019 年的騎行數據進行分析,統計結果如圖1所示,記錄了全年用戶總的騎行次數,出現了兩個明顯的峰值,分別是7~9 點和17~18 點,這正好對應了大多數人的上下班時間,可以推斷出共享單車的主要用戶是上班族,由圖1分析出單車的使用存在早晚高峰,也分析出使用人群上班通勤居多。對于通勤就需要考慮群體的工作日和非工作日的需求差異,從圖2可以看出,工作日和非工作日的騎行存在較大的差異,也符合現實的生活。通過上述的分析,在后續的共享單車需求預測時,可以將工作日和非工作日作為新特征進行構建,進一步提高預測精度。

圖1 每天騎行需求量分布圖

圖2 工作日、非工作日騎行需求量分布圖
除了時間因素的影響,氣象因素對出現的影響也很大,主要影響因素為氣溫、壓強、風速,氣溫和風速可以隱含用溫度來分析,圖3反映的是壓強對騎行次數的影響,754~765 mmHg下騎行次數分布最多。圖4所示為溫度對騎行次數的影響,當溫度在0℃以下時,騎行次數顯著降低,最佳的騎行溫度為17~27℃,此時的騎行次數最多,也符合人體最舒適的溫度18~25℃。

圖3 壓強對騎行次數的影響

圖4 溫度對騎行次數的影響
為進一步明確時間因素和氣象因素對共享單車使用的影響,對表1的八個影響因素及共享單車需求量采用Pearson 相關系數來衡量相關性程度,計算公式如下所示。

表1 影響因素描述
利用Pearson 計算影響因素與需求量之間的相關性,計算結果如表2所示。

表2 影響因素與共享單車需求的相關系數
由表2可見,影響因素與共享單車需求之間均呈現正相關關系,其中時間因素中小時對共享單車的需求影響最大,氣象因素中溫度對共享單車的需求影響最大。
3.1.1 數據集來源
研究所用的數據集分為共享單車使用數據集和氣象數據集,其中共享單車的數據集來自于美國芝加哥地區共享單車官方網站(https://divvybikes.com/)2019 年騎行數據,研究的范圍為全天;氣象數據集為來自于氣象數據網(https://rp5.ru/)的每小時氣象數據,主要有溫度、壓強、風速等。
3.1.2 數據預處理
首先以時間為媒介將氣象數據集和共享單車使用數據集拼接起來,然后填補缺失值,刪除冗余值,進行歸一化,并劃分訓練集和測試集,公式如下:
常見的用來評價模型好壞的指標有三個:分別是MSE、MAE和R2,MSE計算的是預測值與真實值距離的平方和;MAE代表的是平均絕對誤差,是目標值和預測值之差的絕對值之和;R2的分子部分表示真實值與預測值平方差之和,計算公式公式如下:
本文采用五折交叉驗證的網格搜索對XGBoost的超參數進行優化,即GS-XGBoost,對XGBoost的幾個重要的參數進行調整、迭代,選擇出最佳準確率的參數,重要的參數有n_estimators、max_depth、min_child_weight、subsample、colsample_bytree、gamma、reg_alpha、reg_lambda。
如圖5 所示,各參數不同的值得到不同的模型分數,對應R2分數最大的值即為其最佳超參數。

圖5 不同參數的取值范圍對應的R2變化曲線
實驗表明,經過參數調整n_estimators 的取值為750,max_depth 的取值為5,min_child_weight 的取值為4,gamma 的取值為0.1,subsample 的取值為0.8,colsample_bytree 的取值為0.6,reg_alpha 的取值為0.3,reg_lambda 的取值為1,分別對應的R2的最大值。
為了進一步驗證GS-XGBoost 模型的性能,將其與默認參數的XGBoost 模型、SVR 模型、KNN 模型,以及隨機森林模型進行對比,其預測模型的MSE、MAE和R2見表3。

表3 模型各項評價指標結果對比
從實驗結果可以看出,GS-XGBoost 對比其他四種模型擁有更低的MSE和MAE,以及更高的R2,并且相比于傳統的XGBoost預測模型,其MSE下降了0.0414,MAE下降了0.0262,R2上升了0.0174,表明GS-XGBoost 的預測結果與真實結果更為接近,具有更好的模型泛化性,擁有更準確的預測結果。
本文針對共享單車需求預測問題,使用GS-XGBoost 模型對傳統的XGBoost 的改進,找出最佳的超參數,該模型結合時間因素和氣象因素對共享單車需求進行預測,通過實驗與其他傳統的機器學習模型進行對比,結果表明基于GS-XGBoost 模型的預測結果擁有更低的MAE和MSE,以及更高的R2,能更為準確地對共享單車的需求進行預測。