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