陳 堅,彭 濤,曹晏詩,劉柯良
(重慶交通大學 交通運輸學院,重慶 400074)
隨著社會經濟的不斷發展,旅游客運需求日益擴大。高強度且集中化的出行需求使得交通供給設施面臨巨大壓力,可能引發旅客滯留、局部交通設施癱瘓甚至踩踏事件的發生。精準的旅游客運需求預測能夠為有效分配旅游供給資源提供參考,有助于提升旅游出行效率與安全。
旅游客運需求預測是目前研究的熱點問題,現有成果在預測方法上主要通過統計學模型開展[1]。王頠等[2]提出了基于四階段法的旅游客運需求預測模式;WU Lijuan等[3]通過SVR和FOA算法建立了單、多步驟的旅游客流預測模型;YAO Yuan等[4]運用神經網絡增強的隱馬爾科夫時間序列預測模型對美國入境旅游人數進行預測。現有研究更注重長期(年度、季度)旅游需求或是大范圍(國家、城市、地區等)的旅游需求預測,這些模型為制定宏觀旅游政策提供了參考,但對于具體的旅游景區而言,短期預測顯得更為重要。日旅游需求量呈現復雜的非線性趨勢,使得傳統模型難以預測,集成學習模型相較于以上模型具有更強的靈活性,可以用來處理復雜的非線性關系,越來越多的研究者傾向于使用集成學習模型處理預測問題[5]。
在預測影響因素選取上,多以歷史旅游客流數據為基礎,結合天氣、節假日情況對旅游客運需求量進行預測[6]。ZHANG Binru等[7]利用搜索引擎數據與歷史客流數據對景區旅游需求進行預測;YAO Lifei等[8]利用百度指數對旅游景區日到達客流量進行預測;LI Keqing等[9]將網絡搜索數據與天氣、節假日相結合對日旅游客流量進行預測。已有研究需依靠大量的歷史數據建立模型,存在數據來源單一、數據獲取成本高、對出行群體動態刻畫不充分等缺陷,使得上述模型在提升預測精度方面陷入瓶頸。
近年來,隨著互聯網及移動終端的快速普及,社交網絡成為信息交互、資源共享的新平臺。旅游客運需求是出行行為的直接體現,而社交網絡數據能夠通過引導作用和前兆效應反映人的行為。1963年,S.MILGRAM等[10]基于其六度分割理論首次提出社交網絡的概念,用以描述人際間交往規律;S.ARAL等[11]對不同個體在社交網絡中的影響和易感性進行了研究;傅志妍等[12]將社交網絡交通信息作為心理感受變量構建了出行方式選擇行為混合模型;S.D.YOUNG[13]指出,社交網絡數據能夠有助于群體行為預測;LI Menggang等[14]通過分析股票市場投資者情緒預測股票收益率;S.NAEEM等[15]基于推特文本的情感分析對USD/PKR匯率進行預測。
現有研究在旅游客運需求預測模型方面已取得一定成果,但面對短期旅游客運需求的非線性趨勢,尚未有研究采用集成學習方法對短期旅游客運需求進行預測。此外,隨著社交網絡的高速發展,由此產生的海量數據備受關注,諸多領域正挖掘其應用價值,但目前國內外尚未利用社交網絡數據對旅游客運需求預測進行研究。值得關注的是,越來越多的人們出行前在社交網絡平臺分享或發布出行意圖、目的地及出行時間等信息,使得探求社交網絡數據與旅游客運需求之間的內在聯系成為可能。中國社會科學院發布的微博旅游白皮書指出,微博上旅游相關內容的熱度與旅游市場的熱度呈現明顯正相關。旅游目的地在微博上的熱度與游客出行方向也呈正相關,故亟待從社交網絡數據入手對旅游景區客運需求進行精準預測。
筆者以社交網絡數據為切入點,將情感分析量化的社交網絡數據融入集成學習模型中,提出基于社交網絡數據的梯度提升回歸樹(GBRT)預測模型,以提高旅游客運需求的預測精度,彌補現有研究在模型和數據方面的不足。
社交網絡數據獲取主要通過網絡爬蟲實現,網絡爬蟲能夠按照既定規則對互聯網中的數據進行有目的的采集和整理。在大數據時代,通過編寫網絡爬蟲程序完成數據獲取工作已成為主要途徑。
Scrapy是基于Python開發的快速且能定制的Web抓取框架,是一種適用于數據采集的框架,Scrapy爬蟲框架見圖1。

圖1 Scrapy爬蟲框架
Scrapy的工作步驟如下:調度器對首個URL進行解析并向互聯網發送請求,交給下載器進行下載;在其返回時對內容進行檢索并解析得到的請求網頁;返回項目對象和需要繼續迭代的請求對象,其中項目對象經過爬蟲解析后流向項目管道進行數據儲存;繼續迭代的請求對象將回到調度器中,循環完成上述工作;最后利用Pandas庫可以將所有數據儲存至本地硬盤中。
在對社交網絡數據進行爬取后,能夠得到大量的文本信息,為了建立其與旅游客運需求的相互關系,需對文本信息進行量化處理。由于文本內容復雜,通過人工閱讀并給出對應的情感立場,工作量巨大且易出現主觀性過強等問題,筆者采用深度學習模型對文本內容進行結構化處理。
BERT(bidirectional encoder representations from transformer)模型由谷歌AI團隊于2018年5月首次提出[16],模型的最大特點在于利用大規模的無標注語言進行預訓練。
BERT模型的輸入由詞向量、分段向量、位置向量3個部分組成,模型規范化輸入見圖2。每句話的開頭與結尾分別添加CLS(classification)和SEP(separate),其中CLS對應位置的輸出是BERT所有輸出池化后的結果,能夠作為全文本分類的特征向量,SEP用以斷開每個句子,BERT模型結構見圖3。

圖2 BERT規范化輸入

圖3 BERT模型結構
BERT的文本特征提取由Transformer(圖3中Trm)編碼層實現,Transformer包含兩個子層,分別為多頭注意力機制子層和位置全連接子層,從輸入E={E[CLS],E1,E2,…,E[SEP]}到多頭注意力機制子層輸出S={s1,s2,…,sN}的運算過程如式(1)~式(3):
(1)
(2)
(3)

(4)
式中:W1、W2、b1、b2為模型參數,W1,W2∈dr×dh,b1,b2∈dh。類似地,對當前輸出進行殘差連接并層歸一化得到處理后的輸出見式(5):
(5)

情感分類(sentiment analysis)是將BERT預訓練模型輸出結果輸出至特定的分類器,分類器可以是LSTM、CNN、GRU、FC等。研究表明,使用全連接層(fully-connected layer)的情感分類效果優于其他分類器[14]。
(6)
(7)

在現有研究基礎上,新增結構化后的社交網絡數據,模型變量與定義見表1。其中,日旅游客運需求量為因變量,往年同期旅游客運量、量化后的社交網絡數據、天氣、法定節假日為自變量。對于天氣和法定節假日,引入虛擬變量對其進行處理。

表1 梯度提升決策樹訓練樣本描述
1)天氣:除極端天氣暴雨或大雨外,其它天氣對旅游客運需求的影響較小[4,6],故僅對極端天氣引用虛擬變量,即該變量僅取1(暴雨或大雨時)或0(其他天氣)。
2)法定節假日:旅游客運需求受周末、法定節假日和工作日的影響較為明顯[4,6-7],故需引入兩組虛擬變量D1和D2表示以上3種狀態。當預測日為法定節假日時取D1=1,其他情況取D1=0;當預測日為周末時取D2=1,其他情況取D2=0。并規定當某一預測日既是周末也是法定節假日時,視該預測日為法定節假日。
3)往年同期旅游客運量:指往年中與預測日同一天的歷史旅游客運量。在已有的研究中,旅游客運需求量與往年同期旅游客運量存在較強的相關關系[8],故筆者將往年同期旅游客運量納入模型,有利于提升預測精度。
4)社交網絡數據:通過合法途徑獲取社交網絡數據,并對其與人工瀏覽方式獲得的數據進行抽樣比對確定有效性,將社交網絡數據納入研究范疇。研究表明,Twitter中的公眾情緒變化總是在2~3 d后對道瓊斯工業指數(DIJA)產生影響[13]。同樣,社交網絡中公眾對于旅游景區的情緒變化不會立即體現在景區旅游客運量上,待出行群體在社交網絡中的表現與現實中的實際行為存在一定的時間滯后,故引入滯后變量對其進行處理。滯后變量是指過去時期對當前被解釋變量產生影響的變量。ZHANG Binru等[7]和YAO Lifei等[8]指出,對于日數據,三階以上的滯后變量對提升預測精度的貢獻甚微。筆者對量化后的社交網絡數據分別進行一階、二階、三階滯后處理并一同納入預測模型。
文中預測模型采用梯度提升回歸樹(gradient boosting regression trees, GBRT)構建,該模型將x=[x1,x2,…,x6]做為輸入特征,將y作為輸出特征,GBRT將預測函數f(x)近似為M個回歸樹的線性組合,如式(8):
(8)
式中:M為回歸樹的數量;αm為第m棵回歸樹b(x;θm)的權重;θm為第m棵回歸樹的參數。通過使損失函數L(yi,f(xi))達到最小值,確定am和θm的取值。筆者對旅游客運量進行建模,屬于回歸任務,對于此類任務的損失函數為:
(9)
損失函數在前m-1個回歸樹的組合fm-1(x)的負梯度值為:
(10)
通過式(11)、式(12)估計回歸樹的權重與參數:
(11)
(12)
GBRT的迭代過程可用式(13)表示:
fm(x)=fm-1(x)+αmb(x;θm)
(13)
為防止過擬合和欠擬合,引入學習率ξ(0<ξ≤1)對模型進行改進,當達到預定迭代次數M時,最終預測函數以式(14)表示:
fM(x)=fM-1(x)+ξαMb(x;θM)
(14)
數據獲取階段采用爬蟲程序獲取2019年4月1日至5月3日之間新浪微博中“黃山旅游”相關微博博文內容、用戶id和發表時間,共計64 526條微博數據。同時,通過黃山旅游客運樞紐獲得相應時間段內實際旅游客運數據,因往來黃山游客均需換乘景區交通車進行游覽,故選取乘坐景區交通車的人數作為實際的旅游客運量。
在社交網絡數據量化部分,選用BERT-Base預訓練語言模型,其參數設置已經固定,其中多頭注意力機制為12個,隱含層為768層,訓練批處理大小為18,學習率設置為0.000 02,最大句長為200[16]。
模型的超參數選取很大程度上決定其預測效果,現有研究中超參數確定方式過于主觀,這可能導致模型與樣本契合度低,從而影響預測精度[5]。筆者采用網格搜索法(GridSearch),使用5折交叉驗證(訓練集與測試集之比為8∶2)[17]來評估超參數的所有組合并以均方誤差(mean squared error,MSE)為判別標準,對GBRT模型的學習率、最大決策樹數量、樹深度3個超參數進行優化,超參數調整過程見圖4。
Scikit-Learn中交叉驗證功能采用效用函數(越大越好)而非成本函數(越小越好),故對模型評估的函數實際是負的均方誤差函數,即圖4中最佳模型取值。文中模型超參數取值為最大回歸樹數量為300、回歸樹深度為5、學習率為0.1。

圖4 超參數調整過程
文中模型迭代過程見圖5。由圖5可以看出,隨著迭代次數的提升,訓練集和測試集偏差的趨勢呈一致的下降趨勢,證明模型參數設置適當,沒有出現過擬合現象。

圖5 迭代過程中模型對各數據集的偏差
為驗證筆者所提的基于社交網絡數據的GBRT模型(模型1)的有效性,引入未納入社交網絡數據的GBRT模型(模型2),同時控制其余因素,兩個模型均以GBRT算法實現預測。GBRT的可解釋體現在其能反映各特征對于目標特征的相對重要度,通過調用GBRT的feature_importances方法,得到各特征的相對重要度排序,見表2。

表2 特征相對重要度排序
由表2可以看出,往年同期旅游需求量是旅游需求預測的主導特征,其重要度為49.41%,其次是社交網絡數據,其總體重要度達到了45.54%,即社交網絡數據能夠為旅游需求預測提供依據。此外,節假日對旅游需求的影響比天氣更大,其重要度分別為4.94%和0.12%。
需要注意的是,一階、二階、三階社交網絡數據并不相互獨立,在統計分析中若自變量存在共線性,將無法區分它們對因變量的影響,導致無法將結果解釋清楚。但GBRT模型的特征重要度是相對于模型而言的,即特征重要度的計算依賴于模型的選擇。GBRT模型是由一系列的基回歸樹集成而成的機器學習模型,它能夠處理特征間的共線性,樹模型本質上不受多重共線性的影響[18]。另外,未引入社交網絡數據的GBRT模型所表現的特征相對重要度分別如下:往年同期旅游客運量、節假日情況、天氣狀況的相對重要度分別為87.62%、11.33%、1.05%。從結果上看,被剔除的社交網絡數據所占據的重要度被攤派給了剩余變量,三者重要度相對關系與納入社交網絡數據的GBRT模型保持一致。
兩種模型預測結果見表3,模型精度對比見表4,兩種模型預測曲線及誤差見圖6。

表3 兩種模型客流量預測結果

表4 模型精度對比
由圖6可以看出,模型1的預測誤差在3%以內,筆者提出的模型誤差均小于未納入社交網絡數據的GBRT模型誤差。由表4可以看出,基于社交網絡數據的GBRT模型相較于未納入社交網絡數據的GBRT模型具有更低的平均相對誤差絕對值,預測精度提升了10.81%。

圖6 兩種模型客流量預測曲線及誤差
在移動互聯網絡信息新環境下,針對如何運用網絡數據開展交通需求預測的嶄新問題,筆者提出融入社交網絡數據的旅游交通需求預測模型,并運用于對黃山旅游客運需求預測的實證分析中,通過與未納入社交網絡數據的預測模型進行對比,研究發現,筆者所提模型在擬合優度和預測精度上有所提升,進而證實社交網絡數據有助于提高短期微觀旅游需求預測精度。研究結果一方面開拓了旅游需求預測領域的模型運用,另一方面拓展了社交網絡數據的應用前景。