王紅愛
(中國鐵道科學研究院,北京 100081)
退票是鐵路客票發(fā)售和預訂系統(tǒng)(以下簡稱客票系統(tǒng))的核心業(yè)務之一[1],當旅客行程變更或自然災害、調整運行圖等事件發(fā)生時,可通過辦理退票手續(xù)來取消旅行。目前有4種辦理退票的渠道,分別為窗口退票、互聯(lián)網退票、手機退票、自助設備退票,多渠道辦理大大提高了旅客辦理退票業(yè)務的便捷性。退票后系統(tǒng)會將席位從“已售”狀態(tài)變更為“未售”狀態(tài),初始的一個長途席位可能會被分成多個短途席位,組織該部分席位進行再售,對退票席位充分使用,一直是鐵路部門研究的重要課題之一,也是鐵路收益管理的重要內容之一。對預售期內的空閑席位,包括通過辦理退票、改簽、作廢票等業(yè)務釋放的席位,國內外都實施了不同的售票組織策略。國外鐵路部門[2-3],如美國,建立了ARROW客票預訂系統(tǒng),通過價格浮動,合理分配運輸能力;法國國家鐵路公司(SNCF)采用SABRE方案尋求最大化的收益增加方案,使得所有列車的席位分配達到最優(yōu);英國大東北鐵路公司(GNER)采用IRIS工程方案,通過預測需求及采用折扣票價實現(xiàn)席位的最大化利用。國內鐵路部門實施了席位合并、預分、復用、共用、取消限售等不同策略[4-6],并將釋放的空閑席位隨機轉到網上進行公開發(fā)售,以避免“隨返隨放”導致囤票倒票現(xiàn)象。為實現(xiàn)“票盡其用”的目標,鐵路部門對空閑席位制定了多方位的售票組織策略,但還沒有對未來“可能”的空閑席位進行智能化管理,本文旨在從鐵路客票系統(tǒng)的歷史客票數據中,通過智能化技術,挖掘有用的信息,提前對因退票而釋放的席位情況進行預測,為票額再售提供決策依據,為旅客購票提供更多選擇。
文中將退票率作為目標變量,對其進行預測研究,從旅客來說,可以根據預測結果規(guī)劃購票需求,對退票率高的意向列車進行候補下單,對退票率低的意向列車可以更換其他購票成功率高的列車進行下單;從客票系統(tǒng)來說,可以根據預測結果對候補購票的排隊數量進行動態(tài)調整,避免票額能力不足而排隊過長造成的訪問資源浪費,并且可以提升旅客購票體驗;從鐵路部門來說,可以根據預測結果提前對票額進行動態(tài)調整,制定共用、取消限售等策略,滿足更多旅客的出行需求;從車站來說,可以根據預測結果實行彈性開窗機制,節(jié)約旅客退票排隊時間。
目前對客票系統(tǒng)歷史數據的研究,主要是基于不同的學習算法進行模型研究,如BP人工神經網絡[7]、灰色動態(tài)模型[8]、灰色-馬爾科夫預測模型[9]、XGBoost(Extreme Gradient Boosting)算法[10]、遺傳算法[11]等。XGBoost機器學習算法[12]是近年來新興的一種高效算法,能夠自動利用CPU的多線程進行并行處理,在效率及精度上都比較有優(yōu)勢,故在本文中采用了XGBoost算法進行退票率的分類及預測研究,研究中對客票數據進行了脫敏處理。在進行分類預測前,首先對退票率數據做預處理,根據退票業(yè)務特點,分析影響退票率的特征變量,并且為滿足分類算法的要求,需要對退票率數據進行離散化處理。
退票率是指退票量占售出量的比例,是對某列車或多列車同一天同一區(qū)段同一席別的席位退票情況的統(tǒng)計指標之一,退票率Rijk為
(1)
式中:Tijk為某天第i趟車第j個區(qū)段第k個席別的退票量;Sijk為某天第i趟車第j個區(qū)段第k個席別的售出量。
退票率的統(tǒng)計要依據客票系統(tǒng)的售票、退票交易數據,交易數據包括乘車日期、車次、發(fā)站、到站、車廂、席位號、售出渠道、售出時間等屬性。影響退票率的特征變量見表1,包括時間特征、區(qū)段特征、席別特征、售出特征,其中,時間特征依據節(jié)假日特點劃分售出時間屬性值;區(qū)段特征依據車票發(fā)站、到站與始發(fā)站、終到站的關系劃分屬性值;售出特征中“售出渠道”子特征,包括互聯(lián)網、手機APP、車站窗口、TVM、電話訂票幾類屬性值。文中將售出特征中的各子特征與各主特征一起作為特征變量,退票率作為目標變量進行分類及預測研究,在研究過程中對原始數據依據特征變量進行統(tǒng)計,獲得售出量及退票量以進行退票率的計算。
表1 影響退票率的特征變量
為避免樣本偏差帶來的噪聲問題,對目標變量采用無監(jiān)督離散化。離散化[13-16]即將樣本數據劃分為多個空間,每個空間由一個離散的值來標識。無監(jiān)督離散化算法[17]包括等寬離散化方法(Equal Width,EW)、等頻率離散化方法(Equal Frequent,EF)、近似等頻離散化方法(Approximate Equal Frequency Discretization Method,AEFD)、基于局部密度的離散化算法、基于聚類的離散化算法等。其中,DBSCAN[18](Density-Based Spatial Clustering of Applications with Noise)是基于密度的優(yōu)秀聚類算法,它把具有足夠高密度的區(qū)域劃分為簇,將簇定義為密度相連的點的最大集合,可以在噪聲的空間數據庫中發(fā)現(xiàn)任意形狀的聚類,并且不需要事先知道要形成的簇類數量。根據業(yè)務特點,退票率具有密度不均勻的特征,而經典的DBSCAN算法難以適應密度不均勻的數據集。為解決密度不均勻帶來的問題,設計了EW-DBSCAN離散化方法,即首先用等寬離散化方法將樣本數據進行離散化,然后將離散化結果中高密度區(qū)段采用DBSCAN算法進行二次離散化。實現(xiàn)如下:
Step1取一定時間段的退票率數據,分析數據分布特征。
Step2根據數據分布特征,確定等寬離散化的區(qū)間個數。
Step3將退票率數據等寬離散化,并分析各區(qū)間的數據密度。
Step4將已劃分區(qū)間中密度較高的區(qū)間通過DBSCAN算法進行二次離散化。
Step6最后將各個局部的聚類結果進行合并。
由于每個局部區(qū)域使用的是各自局部的聚類半徑值來進行聚類,從而可以有效緩解因使用全局聚類半徑值dEps而導致聚類質量惡化的問題。本文取客座率較高的某線列車2017年客票數據,通過Python3.5.1實現(xiàn)該算法,表2為目標離散化結果,取值范圍及切分點以百分比為單位。
表2 目標離散化結果
在一些客運業(yè)務中,掌握精確值比掌握區(qū)間值對旅客、管理部門及客票系統(tǒng)進行決策更有指導性意義,因此為指導退票后的售票策略,本文在每個退票率分類中,計算能滿足一定誤差范圍的最優(yōu)預測退票率取值,使得該最優(yōu)預測退票率在誤差范圍內密度最大。梯度算法具有很強的局部搜索能力,采用梯度算法進行區(qū)間退票率最優(yōu)值計算。取某個離散化區(qū)間[Rl,Rl+1],求該區(qū)間的最優(yōu)預測退票率,算法實現(xiàn)如下:
Step1Rl1,Rl2,…,Rln為區(qū)間[Rl,Rl+1]上的n個樣本數據,給定誤差范圍[e1,e2]。
Step2根據誤差范圍,可將樣本數據點,分成n個樣本區(qū)間
{[Rl1-e1,Rl1+e2],[Rl2-e1,Rl2+e2],…,[Rln-e1,Rln+e2]}
Step3統(tǒng)計上述n個樣本區(qū)間對應的樣本數量{Y1,Y2,…,Yn},擬合各區(qū)間中位數與樣本數量的數據特征曲線
Y=f(X)
式中:X為以各區(qū)間的中位數為特征的變量。
Step4給定一個初始點X0,并設定算法終止距離ε以及步長α。
Step6重復計算導數,直至滿足算法終止距離ε,計算到的極值即為最優(yōu)預測退票率。
建立擬合函數,進行梯度算法求最優(yōu)預測退票率,可以避免直接迭代求最值造成的過擬合問題。
根據實際業(yè)務需求,將誤差范圍設定為[-5%,5%],取客座率較高的某線列車2017年客票數據,擬合誤差區(qū)間的樣本數量。因為業(yè)務特點,不會出現(xiàn)整年售出車票大部分被退票的現(xiàn)象,故區(qū)間[85,100]數據密度較低,該區(qū)間擬合函數特征不太明顯,其他區(qū)間二次曲線特征明顯。樣本密度較高的[25%,40%)區(qū)間的擬合曲線見圖1,最優(yōu)預測退票率的計算結果見表3。
圖1 [25%,40%)區(qū)間的擬合曲線圖
表3 最優(yōu)預測退票率的計算結果
XGBoost是一種可擴展的、分布式的算法庫,在GBDT(Gradient Boosting Decision Tree,梯度提升決策樹)基礎上做了很多優(yōu)化,如損失函數、正則項、特征選擇、并行運算等。XGBoost的集成學習過程為
(2)
第m次的目標函數為
(3)
基于XGBoost算法的退票率分類實現(xiàn)如下:
Step2初始值設定:設定正則參數p1、p2;設定樹的深度;設定樹的總量,即要建多少棵樹。
Step3計算各樣本的Sm函數的一階導數及二階導數。
Step4進行建樹,核心的裂解過程見圖2。
Step5達到樹的深度則一棵樹建立完成,重復Step3、Step4,直至按照樹的總量建立完成,即完成分類。
為了支持自定義損失函數,在XGBoost算法中,需要對損失函數進行二階泰勒展開
(4)
另外,建樹過程中,需要計算增益值,并根據最大增益值來進行分叉處理。增益值Ggain為
(5)
式中:FL為分裂點的左側樣本一階導數之和;SL為對應的二階導數之和;FR為分裂點的右側樣本一階導數之和;SR為對應的二階導數之和;r1、r2為常數項,在建樹過程中控制了復雜度,取值均為0.1。
圖2 XGBoost建樹分枝過程
2.2.1 XGBoost算法的參數優(yōu)化
參數組合對XGBoost算法的分類性能影響較大,一般會運用經驗或者窮舉法對參數進行調整。因為貝葉斯優(yōu)化具有迭代次數少,速度快,可以避免非凸函數的局部最優(yōu)問題等優(yōu)點,在很多應用[19-20]中調參時選擇貝葉斯方法,并取得較好的效果,故選擇用貝葉斯方法對XGBoost算法進行參數優(yōu)化。
貝葉斯調參時需要設定目標函數,本文中,目標函數入參為分類算法XGBoost的所有參數,輸出為模型交叉驗證5次的AUC均值。依據上文目標離散化中用到的某線列車2017年客票數據,將該數據80%部分進行訓練,20%部分進行測試,采用貝葉斯方法對XGBoost算法進行參數最優(yōu)化,結果見表4,其中迭代8次的參數達到最優(yōu)。
表4中,參數1=colsample_bytree,表示構造每棵樹時的列采樣率;參數2=gamma,表示指定節(jié)點被分割時,最小損失函數減小的大??;參數3=learning_rate,表示學習率,可以使模型更加健壯;參數4=max_depth,表示樹的最大深度,該參數用于控制過擬合;參數5=min_child_weight,表示所有觀察值的最小權重和,該參數用于減少過擬合;參數6=n_estimators,表示樹的數量,本次調優(yōu)取值范圍[10,100];參數7=subsample,表示樣本的采樣率;AUC(Area Under Curve),作為參數最優(yōu)化的評價標準,取值范圍在[0,1]。
2.2.2 退票率預測模型
退票率預測模型見圖3。包括模型生成、模型使用、模型評價、模型優(yōu)化4個階段。按照模型生成→模型使用→模型評價→模型優(yōu)化流程進行退票率預測。
模型生成階段:首先,按照EW-DBSCAN離散化方法對歷史退票率進行離散化處理,應用梯度算法對各離散化區(qū)間選取最優(yōu)預測退票率;其次,將歷史客票數據按照8∶2的比例,采用基于貝葉斯調參的XGBoost算法進行退票率分類訓練和測試。
模型使用階段:準備待預測數據后,通過生成的模型對此部分數據進行退票率預測。
模型評價階段:將預測結果與實際退票率進行對比,準度符合要求時,模型無須優(yōu)化,繼續(xù)下一次預測。準度不符合要求時,記錄預測日志表,當準度不符合要求的累計次數達到閾值時,進行模型優(yōu)化。
表4 貝葉斯方法對XGBoost算法進行調參
圖3 退票率預測模型圖
模型優(yōu)化階段:以最新客票歷史數據為數據源,進行模型訓練和測試,重新生成模型,在模型優(yōu)化階段,定期依據新數據重新將退票率離散化處理。
分類精度的衡量指標很多,常用的有混淆矩陣、總體分類精度、Kappa系數、ROC曲線等。對于二分類問題,可以使用ROC曲線來評估模型的預測效果;對于多分類問題衡量模型精準度的可以用混淆矩陣、Kappa系數等。混淆矩陣不能直觀反映出分類精度的好壞,本文中采用Kappa系數進行算法精度評價,Kappa系數基于實際分類與預測分類的混淆矩陣,表示分類與完全隨機的分類產生錯誤減少的比例,值越大,則代表模型實現(xiàn)的分類準確度越高,在實際應用中,一般取值范圍是[0,1]。K為Kappa系數,其計算過程為
(6)
(7)
3.1.1 基于貝葉斯參數優(yōu)化的XGBoost算法有效性驗證
為了驗證基于貝葉斯參數優(yōu)化的XGBoost算法是否較其他分類算法在鐵路退票率分類預測中效果更好,本文同樣以客座率較高的某線列車2018年客票數據進行驗證,實驗環(huán)境為Win10,64位操作系統(tǒng),Intel(R) Core(TM) i7-7700HQ CPU @ 2.80 GHz,內存32 GB,Python3.5.1。表5為基于貝葉斯參數優(yōu)化的XGBoost算法、基于窮舉法的XGBoost算法、GBDT 算法、SVM算法、Adaboost算法、RandomForest算法的Kappa系數驗證結果。
表5 不同算法的退票率預測精度對比
由表5可見,相對于其他分類算法, XGBoost算法在預測退票率時有較高的分類精度,基于窮舉法的XGBoost算法與基于貝葉斯優(yōu)化參數的XGBoost算法的預測精度相差不多,但是基于貝葉斯參數優(yōu)化的XGBoost算法比基于窮舉法的XGBoost算法的訓練速度快9倍多,因此采用貝葉斯參數優(yōu)化法進行XGBoost參數調優(yōu)。XGBoost算法在進行訓練之前,預先對數據進行了排序,然后保存為block結構,后面的迭代中重復地使用這個結構,在進行節(jié)點的分裂時,對各個特征的增益計算就可以開多線程進行,大大減少了計算量,在生成候選的分割點時體現(xiàn)了高效。
3.1.2 退票率離散化算法有效性驗證
為了驗證本文中使用的離散化方法在退票率區(qū)間分割中更有效,將退票率采用等寬、等頻、DBSCAN算法及本文中提出的EW-DBSCAN算法進行對比實驗,分類算法均為基于貝葉斯參數優(yōu)化的XGBoost算法。這幾種不同離散化方法后的預測精度對比見表6,其中EW-DBSCAN算法的Kappa指數最高。
表6 不同離散化方法的退票率預測精度對比
為了驗證本文中使用的區(qū)間最優(yōu)退票率選取方法的有效性,將各離散化區(qū)間分別采用密度法、均值法、梯度法選取區(qū)間最優(yōu)收入率,并且將誤差范圍均設定為[-5%,5%],計算退票率的預測精度,結果見表7,其中使用梯度法得到的退票率預測準確度最高。
表7 不同區(qū)間最優(yōu)退票率選取方法的退票率預測精度對比
鐵路部門一直致力于以旅客服務為核心的研究,為充分實現(xiàn)票盡其用,本文以退票率為目標變量進行了分類及預測的研究,旨在能通過預知退票率信息對退票釋放的席位進行提前規(guī)劃。文中分析了退票率數據的特征,提出EW-DBSCAN算法對目標變量進行離散化處理;通過梯度算法獲取目標區(qū)段內的最優(yōu)值,在預售期內可以供旅客購票進行參考;通過基于貝葉斯參數優(yōu)化的XGBoost算法對退票率進行分類及預測,并驗證了算法的有效性。后續(xù)的研究中可以細化特征變量,研究具體特征對退票率的影響,如研究開車時間與退票率的關系,鐵路部門可以將退票率很大的列車通過調整開行時刻等策略來提高運營收益,充分利用現(xiàn)有的運能,滿足旅客乘車需求。