李天騁
摘要:共享單車是當(dāng)前一種流行的出行方式,不同地區(qū)和不同時段對共享單車的需求不同。更好的共享單車需求分析能夠優(yōu)化共享單車配置,降低閑置率,提高利用率。本文依據(jù)Kaggle華盛頓共享單車使用的歷史數(shù)據(jù),對未來幾天的共享單車需求進行預(yù)測,要求利用每月前19天的歷史數(shù)據(jù)預(yù)測20天之后的共享單車租賃情況。這一問題屬于機器學(xué)習(xí)中的回歸問題,在Kaggle提供的數(shù)據(jù)集上分別采用了線性模型(Ridge Regression),基于回歸樹的集成學(xué)習(xí)模型(Random Forest)以及深度學(xué)習(xí)模型(Neural Network)。以預(yù)測結(jié)果和真實值的RMSE(Root Mean Squared Logarithmic Error)作為模型表現(xiàn)的評價指標。對不同的模型特點以及在共享單車數(shù)據(jù)集上的表現(xiàn)進行了對比分析,對結(jié)果進行了總結(jié)。
關(guān)鍵詞:共享單車需求分析;嶺回歸;隨機森林
中圖分類號:F27文獻標識碼:Adoi:10.19311/j.cnki.16723198.2020.25.019
0引言
共享單車是一種十分便捷環(huán)保的出行方式,人們可以從任意提供共享單車的位置通過手機APP租借,在到達目的地之后直接在APP上選擇歸還將共享單車落鎖即可。
回歸問題的研究在機器學(xué)習(xí)領(lǐng)域具有重要意義,不同的回歸分析方法由于各自的思想以及采用的優(yōu)化方式不同因而在不同的訓(xùn)練數(shù)據(jù)上表現(xiàn)會出現(xiàn)差異?;趯?shù)據(jù)本身的分析和理解,從機器學(xué)習(xí)回歸方法中挑選幾個模型進行訓(xùn)練,并在此基礎(chǔ)上進行優(yōu)化。
本文依據(jù)共享單車預(yù)測這一具體問題,構(gòu)建了一些回歸學(xué)習(xí)模型,將歷史數(shù)據(jù)與未來的天氣信息相結(jié)合,更加準確地預(yù)測華盛頓特區(qū)的共享單車租賃需求。
1數(shù)據(jù)集描述
Kaggle比賽給出的數(shù)據(jù)集劃分為訓(xùn)練集和測試集,其中訓(xùn)練集包含10886個訓(xùn)練樣本,測試集包含6493個測試樣本。數(shù)據(jù)包含12列特征,包括datetime(日期,精確到整點時刻),season(季節(jié),1=春,2=夏,3=秋,4=冬),holiday(是否假日),workingday(是否工作日),weather(天氣等級:1=晴天或多云,2=有霧,3=小雪或小雨,4=暴雨或大雪,冰雹等惡劣天氣),temp(溫度,攝氏度),atemp(體感溫度),humidity(相對濕度),windspeed(風(fēng)速),casual(非會員租賃數(shù)量),registered(會員租賃數(shù)量),count(總租賃數(shù)量,會員+非會員)。數(shù)據(jù)中只有日期特征為字符串類型,其他特征都是數(shù)值類型,數(shù)據(jù)中不存在缺失情況。
1.1數(shù)據(jù)集分析
1.1.1數(shù)據(jù)預(yù)處理
經(jīng)過數(shù)據(jù)探查,發(fā)現(xiàn)數(shù)據(jù)中不存在缺失值和重復(fù)值,因此對數(shù)據(jù)進行異常值分析。
1.1.2數(shù)據(jù)加工
對字符串類型的日期數(shù)據(jù)進行轉(zhuǎn)換,從中提取出年,月,日,小時,單獨作為特征。
1.2特征分析
1.2.1日期和共享單車租賃總數(shù)
對于訓(xùn)練數(shù)據(jù),分別計算每日對應(yīng)的共享單車租賃總數(shù)和當(dāng)月共享單車租賃的中位數(shù),畫出2011年1月到2012年12月的折線圖。可以直觀地看到,2012年和2011年的數(shù)據(jù),年內(nèi)波動曲線類似,但2012年每月租賃數(shù)據(jù)同比2011年均有增長。
1.2.2月度和共享單車租賃總數(shù)
通過對月份和共享單車租賃情況畫圖分析,年內(nèi)隨著月份變化租賃總量會有規(guī)律地變化,此外,每個月的數(shù)據(jù)中存在不同程度的離群點。
1.2.3季度和共享單車租賃總數(shù)
數(shù)據(jù)呈現(xiàn)出比較明顯的季度趨勢,通過分析發(fā)現(xiàn),租賃總數(shù)的峰值出現(xiàn)在秋季,低谷出現(xiàn)在春季,此外,春季具有較多的離群值。
1.2.4周幾和共享單車租賃總數(shù)
通過對數(shù)據(jù)取中位數(shù)分析,相比工作日,周末會有較多的非會員用戶租賃共享單車,工作日則有較多的會員用戶使用共享單車。統(tǒng)計共享單車的日內(nèi)使用總數(shù),工作日共享單車有更多的用戶。
1.2.5工作日、節(jié)假日和共享單車租賃總數(shù)
整體而言,共享單車的租賃在節(jié)假日呈下滑趨勢,而在工作日呈上升趨勢。同時,在節(jié)假日會有更多的非會員用戶使用共享單車服務(wù),而在工作日,使用共享單車的非會員用戶較少。可能節(jié)假日的非會員用戶來源為游客,較多的會員用戶會在工作日使用共享單車來通勤。
1.2.6整點時間共享單車租賃總數(shù)
對整點時間的分析劃分成節(jié)假日和工作日兩部分。
在節(jié)假日期間,非會員用戶與會員用戶的共享單車使用趨勢比較接近,峰值出現(xiàn)時間不同,非會員用戶峰值出現(xiàn)在下午2點左右,會員用戶的峰值則出現(xiàn)在下午5點。
在工作日期間,會員用戶的共享單車使用呈現(xiàn)出兩個峰值,分別為早上8點和下午5點。這兩個時段為上下班高峰期,符合會員用戶通勤需要的推測。非會員用戶則不存在雙高峰的情況,在一天之中呈現(xiàn)出先上升后下降的趨勢,高峰出現(xiàn)在中午。
1.2.7天氣和共享單車租賃總數(shù)
在工作日以及非工作日,共享單車的租賃數(shù)量會明顯受到天氣的影響,當(dāng)天氣越糟糕,共享單車的使用量越低。如果非工作日遇到最惡劣的天氣(暴雨/大雪)則不會產(chǎn)生共享單車的租賃。
2構(gòu)建回歸模型
2.1構(gòu)建嶺回歸(Ridge Regression)模型
2.1.1基本原理
線性回歸實際上是假設(shè)訓(xùn)練數(shù)據(jù)X和預(yù)測目標Y之間滿足線性關(guān)系,假設(shè)一組線性方程,利用預(yù)測值和真實值的誤差構(gòu)建損失函數(shù)來描述線性方程的擬合效果,用訓(xùn)練數(shù)據(jù)對模型進行訓(xùn)練,通過梯度下降算法來減小誤差(即降低損失),從而修正線性方程。損失函數(shù)是一種評判標準。通過求得損失函數(shù)的最小值來確定最能擬合數(shù)據(jù)的線性方程。梯度下降算法是一種用來計算損失函數(shù)最小值的方法。
2.1.2在共享單車預(yù)測數(shù)據(jù)集上應(yīng)用Ridge Regression模型
對于一組線性方程Y=wx+b構(gòu)造一個損失函數(shù),預(yù)測值和真實值之間的平方誤差,使用梯度下降的方法求得損失函數(shù)的最小值,能夠使組線性方程最好地擬合數(shù)據(jù)集,求出此時的w,b即確定了線性方程的參數(shù),得到訓(xùn)練好的模型。
嶺回歸則是在線性回歸的基礎(chǔ)上增加正則化參數(shù),能夠有效地防止模型過擬合。
2.1.3結(jié)果分析
訓(xùn)練過程中,通過交叉驗證來挑選最優(yōu)的alpha參數(shù),最終選定的alpha參數(shù)為805。采用最優(yōu)的參數(shù)訓(xùn)練模型,分別計算模型在訓(xùn)練集和測試集上的RMSE(均方根誤差,預(yù)測值與真實值偏差的平方與觀測次數(shù)n比值的平方根)以及模型的擬合優(yōu)度R2(R2 <=1,R2越大越好,模型baseline對應(yīng)的R2接近0,當(dāng)模型完全擬合時,R2 = 1)。模型在訓(xùn)練集上的RMSE:1.034,模型擬合優(yōu)度評分:0.466,模型在測試集上的RMSE:1050,模型擬合優(yōu)度評分:0.4580。
2.2構(gòu)建隨機森林(Random Forest)模型
2.2.1基本原理
以cart回歸樹作為基礎(chǔ)學(xué)習(xí)器,采用最小均方差來決定劃分特征以及特征值。(遍歷所有特征以及特征值,選定任意特征值作為劃分依據(jù)將數(shù)據(jù)劃分成兩部分,S1和S2,篩選出能夠令S1和S2集合內(nèi)均方差最小的劃分特征以及特征值)。
隨機森林,森林的概念是指由多棵樹組成。每棵樹用Bootstrapping(有放回抽樣)的方式構(gòu)造訓(xùn)練集,在構(gòu)建每棵樹的時候按照設(shè)定好的比例隨機抽取一些訓(xùn)練特征參與樹的構(gòu)建。最后將每棵樹集成在一起作為最終的預(yù)測模型。當(dāng)有一個新的測試樣本輸入時,讓森林中的每一課決策樹對它進行判斷,輸出一個類別(分類算法)或一個平均值(回歸算法),避免了一棵樹的決策失誤。
2.2.2在共享單車預(yù)測數(shù)據(jù)集上應(yīng)用Random Forest模型
共享單車數(shù)據(jù)中除了部分數(shù)值類型的特征之外,存在較多類別類型的特征,從特征情況來看比較適合使用隨機森林來建模。
2.2.3結(jié)果分析
在Random Forest模型中采用了1000個估計器,用MSE(均方誤差)作為評價指標,每棵樹的深度采用默認值。模型在訓(xùn)練集上的準確率達到: 0.94338,在測試集上的準確率達到0.92173。
2.3構(gòu)建DNN模型
2.3.1基本原理
DNN模型即人工神經(jīng)網(wǎng)絡(luò)(Neural Network),以神經(jīng)元作為基本運算單元。每個神經(jīng)元按照線性變換和非線性變換相結(jié)合的運算邏輯,對輸入數(shù)據(jù)進行運算,將結(jié)果順著網(wǎng)絡(luò)連接輸送給下一層神經(jīng)元。每個神經(jīng)元數(shù)據(jù)變換的線性函數(shù)形式為:W* X+b,其中X為輸入數(shù)據(jù),W為權(quán)重參數(shù),b為偏置參數(shù),參數(shù)是隨機初始化的,需要網(wǎng)絡(luò)在訓(xùn)練過程中進行修改。非線性函數(shù)通常使用ReLu以及l(fā)eakyReLu等非線性函數(shù),起到了過濾信號的作用。
DNN結(jié)構(gòu)包括輸入層,隱藏層和輸出層,其中隱藏層可能是一層或多層神經(jīng)元結(jié)構(gòu)。每層設(shè)定好神經(jīng)元的個數(shù),相鄰兩層神經(jīng)元之間是全連接的(每兩個神經(jīng)元之間都有連線),而連接表示上一個神經(jīng)元的輸出要作為下一個神經(jīng)元的輸入。
對于神經(jīng)網(wǎng)絡(luò)的調(diào)整可以從改變隱藏層數(shù)目以及修改每層神經(jīng)元個數(shù)入手,為了避免過擬合情況,還可以在Dense層后面增加Dropout層,不僅能簡化模型,還能夠增強網(wǎng)絡(luò)的魯棒性。理論上來說,在沒有過擬合的前提下,增加神經(jīng)元個數(shù)以及層數(shù)能夠增強模型的預(yù)測能力。
2.3.2在共享單車預(yù)測數(shù)據(jù)集上應(yīng)用DNN模型
構(gòu)建了一個三層128 個神經(jīng)元的神經(jīng)網(wǎng)絡(luò),采用‘a(chǎn)dam作為優(yōu)化器。在原始模型的基礎(chǔ)上嘗試增加或減少hidden layer,在訓(xùn)練過程中為了避免過擬合采用了early stop。加入了 weight dacay。
2.3.3結(jié)果分析
在原始模型基礎(chǔ)上增加了Dropout,修改了模型學(xué)習(xí)率。最終模型在訓(xùn)練集上的RMSE:0.4213,模型準確率:0.9526,模型在測試集上的RMSE:0.4437,模型擬合優(yōu)度評分:0.9506。
3結(jié)語
通過對各個模型的特點以及結(jié)果對比分析,集成學(xué)習(xí)和深度學(xué)習(xí)均表現(xiàn)出比較明顯的優(yōu)勢。對比三層DNN以及線性模型嶺回歸在共享單車需求預(yù)測上的效果差異,深度學(xué)習(xí)相對于其他機器學(xué)習(xí)方法而言,對特征的自動提取是其最大的特點,在沒有充分的人工特征的前提下,深度學(xué)習(xí)能夠發(fā)揮出較大的作用。深度學(xué)習(xí)對比傳統(tǒng)方法來說,最大的優(yōu)勢是自動特征的提取。對比集成學(xué)習(xí)以及線性模型嶺回歸在共享單車需求預(yù)測上的效果差異,集成學(xué)習(xí)得益于對于單個預(yù)測模型的綜合。如果對特征進行進一步擴展和篩選,可能在此基礎(chǔ)上能夠得到更好的模型效果。
參考文獻
[1]Kaggle共享單車案例——隨機森預(yù)測[EB/OL].https://zhuanlan.zhihu.com/p/38168416.
[2]Python數(shù)據(jù)分析——Kaggle共享單車項目實戰(zhàn)[EB/OL].http://www.sohu.com/a/284341148_120045139.
[3]實踐Kaggle比賽:房價預(yù)測[EB/OL].http://zh.d2l.ai/chapter_deep-learning-basics/kaggle-house-price.html.