白智遠,溫從威,楊錦浩,陳 智,呂 品
(上海電機學(xué)院 電子信息學(xué)院,上海 201306)
移動定位服務(wù)的發(fā)展使得互聯(lián)網(wǎng)商家“線上線下”的交易數(shù)據(jù)急劇增長[1-4]。分析這些數(shù)據(jù)中隱藏的用戶交易習(xí)慣和傾向性[5-6]對優(yōu)化商家的運營具有重要作用。近來年,出現(xiàn)了許多關(guān)于移動定位服務(wù)預(yù)測的研究。例如,付全興等[7]使用邏輯回歸和支持向量機,以4個月的電商數(shù)據(jù)為研究對象,預(yù)測用戶的購買行為;陳傳波等[8]把平滑加權(quán)的思想應(yīng)用于實時模型預(yù)測,通過提取包含有趨勢的特征來提高預(yù)測模型的精確度;張昊等[9]利用XGBoost(extreme gradient boost)算法[10]實現(xiàn)了商品推薦中的用戶購買行為預(yù)測。他們將決策樹[11]、隨機森林[12]作為基線對比方法,研究發(fā)現(xiàn)變量的重要性對模型的構(gòu)建有較大影響。
文中借鑒上述研究的思想,提出了歷史均值與提升樹融合的互聯(lián)網(wǎng)商家客流量預(yù)測模型。該模型的本質(zhì)是提升樹模型與歷史均值模型,按照計算公式所求出的權(quán)重系數(shù),按照一定比例而融合的加權(quán)和,不僅考慮了如何提高模型的預(yù)測精度,而且還考慮了客流量的預(yù)測與時間的依賴關(guān)系。并且對不同模型的預(yù)測結(jié)果做出了對比分析。最后,將融合了歷史均值與提升樹的客流量預(yù)測模型所得到的結(jié)果與傳統(tǒng)的零售業(yè)結(jié)合,粗略進行了分析,對商家今后的運營提出了一些實質(zhì)性的建議。
文中使用的數(shù)據(jù)來自天池大數(shù)據(jù)平臺,共包含某年7月1日至次年10月31日的商家完整行為數(shù)據(jù),分為“商家特征”數(shù)據(jù)、“用戶支付行為”數(shù)據(jù)和“用戶瀏覽行為”數(shù)據(jù)。商家特征反映了商家的熱度,評分高以及評論好的商家,是提高用戶購買力的因素之一,除此之外,門店的等級、菜品的豐富程度也作為商家的考量之一。它的數(shù)據(jù)共包含7個屬性:商家ID、店鋪所在地、人均消費、評分、評論數(shù)、門店等級以及食品分類名稱;用戶支付行為特征反映了用戶的支付習(xí)慣方式,包含3個屬性:用戶ID、商家ID和用戶的支付時間;用戶瀏覽行為則反映了用戶的購買習(xí)慣,如果用戶經(jīng)常訪問同一個商家,結(jié)合其他兩個特征可以推斷出用戶所喜愛的商品種類、個人口味等信息,包含3個屬性:用戶ID、商家ID和用戶瀏覽商家的時間。
由于直接使用原始數(shù)據(jù)訓(xùn)練模型不僅會產(chǎn)生誤差,還會耗費大量的計算資源,因此,對原始數(shù)據(jù)集進行了預(yù)處理,將原始數(shù)據(jù)中存在的異常值進行剔除、去重、歸一化等處理。一方面,由于商家從入駐口碑平臺到銷售量增加存在一定的啟動時間,并且可能出現(xiàn)某段時間銷量中斷的現(xiàn)象,因此,商家開業(yè)前7天的數(shù)據(jù)以及銷量中斷前后3天的數(shù)據(jù)不作為訓(xùn)練數(shù)據(jù);另一方面,由于原始數(shù)據(jù)中存在短時間內(nèi)單個用戶大量購買的情況,為消除這種異常消費對預(yù)測的影響,采用了基于規(guī)則的方法對原始數(shù)據(jù)進行歸一化;另外,原始數(shù)據(jù)中還存在一些特殊時間節(jié)點和難以預(yù)計的大幅波動,如大型節(jié)假日(如中秋節(jié)、國慶節(jié)等)、停業(yè)、商家開展促銷活動時單個用戶大量購買的情況。對于這些基于規(guī)則的方法難以處理的異常值,文中采用了模型預(yù)訓(xùn)練方法,即采用欠擬合算法對模型預(yù)訓(xùn)練,清除原始數(shù)據(jù)中殘差為10%和25%的數(shù)據(jù)。由于預(yù)測目標(biāo)是商家的日銷量,因此預(yù)處理后用于訓(xùn)練的數(shù)據(jù)是按小時統(tǒng)計的商家的總銷量。
此外,為提高模型預(yù)測的準(zhǔn)確性,實驗中還采集了全國各省市的天氣數(shù)據(jù)以及節(jié)假日天氣數(shù)據(jù)作為原始數(shù)據(jù)的補充。在額外采集的氣溫、濕度、氣壓等數(shù)據(jù)中,根據(jù)經(jīng)驗,將天氣狀況簡單轉(zhuǎn)換為降水指數(shù)和天晴指數(shù)兩個指標(biāo)。由于人體對于氣象參數(shù)的感受不成線性關(guān)系,故生成人體舒適度指數(shù)(comfort index of human body,SSD)作為模型訓(xùn)練的一個重要特征。最終,模型訓(xùn)練與預(yù)測使用的特征與標(biāo)簽如表1所示。
表1 模型訓(xùn)練與預(yù)測使用的特征
XGBoost是一種極限提升樹的機器學(xué)習(xí)方法,具有良好的擴展性,以及計算速度快、模型表現(xiàn)好等特點。對于數(shù)據(jù)集D={(xi,yi)},提升樹方法的核心是最小化式1所示的正則化目標(biāo)函數(shù)。
(1)
一般,對上述目標(biāo)函數(shù)進行二階泰勒展開(如式2),然后進行優(yōu)化。
(2)
假設(shè)樹結(jié)構(gòu)q(x)已知,并且Ij={i|q(xi)=j}為葉節(jié)點j的樣本集合,可得葉節(jié)點j的最優(yōu)權(quán)重:
(3)
最后,采用貪心算法,從某一葉子開始,反復(fù)向樹中添加分支。假設(shè)IL和IR是分割后左右節(jié)點的實例集合。令I(lǐng)=IL∪IR,則分裂后的損失可由式4計算。
(4)
與傳統(tǒng)的GBDT模型對比,XGBoost還支持線性分類器,并且加入正則化因子,用于控制模型的復(fù)雜度。正則項里包含了樹的葉子節(jié)點個數(shù)等信息,它降低了模型的方差,使學(xué)習(xí)出來的模型更加簡單,防止過擬合,這也是XGBoost優(yōu)于傳統(tǒng)GBDT的一個特性。
歷史均值模型是以預(yù)測日為基準(zhǔn),求出預(yù)測日之前到某一天的平均客流量、銷量增量等信息,再以權(quán)重系數(shù)作為融合的比例,預(yù)測未來14天的客流量。
為獲得精確度高的客流量預(yù)測模型,文中采用了二個階段的訓(xùn)練方法。第一次階段的訓(xùn)練中,使用了XGBoost與GBDT(gradient boosting decision tree)模型。模型訓(xùn)練的參數(shù)如表2和表3所示。每一種模型分別使用了2組參數(shù)進行訓(xùn)練,總共獲得4個模型。
表2 XGBoost算法的不同參數(shù)
表3 GBDT算法的不同參數(shù)
為了減小預(yù)測誤差,調(diào)整XGBoost與GBDT算法中樹的深度、學(xué)習(xí)率以及迭代次數(shù)的參數(shù),在XGBoost算法的1號模型中,一般情況下,學(xué)習(xí)率的值默認(rèn)為0.1,而樹的最大深度默認(rèn)為3。但是,對于不同的問題,理想的學(xué)習(xí)率有時會在一些特定的區(qū)間范圍之間波動。樹的深度越大,則對數(shù)據(jù)的擬合程度越高。因此,文中在確定XGBoost算法的2號模型的學(xué)習(xí)率以及樹的最大深度時,引入XGBoost算法中內(nèi)置的cv函數(shù),cv函數(shù)在每一輪迭代中使用交叉驗證,根據(jù)算法參數(shù)的調(diào)整,返回理想的決策樹數(shù)量。因此,通過cv函數(shù)較為精確的計算,將2號模型的學(xué)習(xí)率調(diào)至0.03,樹的最大深度為5。
第二階段的訓(xùn)練使用了歷史均值模型。歷史均值模型以預(yù)測日為基準(zhǔn),首先求出預(yù)測日之前的21天的銷量平均值,得到每天的平均銷量;其次,以周為單位,統(tǒng)計每周的銷量的中位數(shù)和平均值,通過線性擬合得到每周的銷量增量;最后,將每天的均值銷量與每周的銷量增量疊加,以此預(yù)測未來兩周的銷量。該模型把過去21天的歷史銷量的相關(guān)度矩陣作為輸入;將未來兩周的銷量和歷史均值模型與第一階段的模型融合的權(quán)重系數(shù)作為輸出。均值模型的融合比例最大為0.75。融合的權(quán)重系數(shù)計算如下:
(5)
由此,將XGBoost、GBDT和歷史均值模型得到的過去三周的平均銷量和銷量值,分別代入式5,可求出相應(yīng)的權(quán)重系數(shù)為:0.47,0.34,0.19。最終,將訓(xùn)練得到的2組XGBoost模型和2組GBDT的不同結(jié)果分別與歷史均值模型按0.47,0.34,0.19的比例融合,得到預(yù)測未來14天的客流量。
該實驗采用的硬件為Inter(R) Core(TM) i5-5200U CPU @ 2.20 GHz。軟件環(huán)境中操作系統(tǒng)為Windows 7,開發(fā)環(huán)境為Python3.6。原始數(shù)據(jù)為2.13 GB,預(yù)處理后的數(shù)據(jù)為220 MB。為判斷XGBoost方法預(yù)測的有效性,實驗中引入了時間序列加權(quán)回歸的算法作為基線對比方法[8]。
由于時間序列反映了實體屬性在時間順序上的特征[13],因此,實現(xiàn)了時間序列加權(quán)回歸算法,分析2種算法的預(yù)測結(jié)果后,得到的前500位互聯(lián)網(wǎng)商家在未來14天的客流量發(fā)展趨勢,如圖1和圖2所示。
圖1 歷史均值與提升樹融合模型預(yù)測
分析客流量發(fā)展趨勢可知:
(1)與瀏覽動作相關(guān)的變量對模型的貢獻程度最大,這是因為瀏覽是用戶交互的最主要方式,其信息豐富程度遠高于其他特征;
(2)部分商家可能所經(jīng)營的商品評價較高,顧客的返回率使得部分商家的客流量穩(wěn)步上升;
(3)大部分的商家十四天總客流量已經(jīng)突破了5 000,少量甚至達到了約25 000的級別。這極有可能是商家近期的某種促銷活動所導(dǎo)致的。比如通過平臺派發(fā)不同程度的優(yōu)惠券、現(xiàn)金紅包、買滿一定金額優(yōu)惠等活動。但如何調(diào)整自己的運營策略,吸引到更多的客流量顯得至關(guān)重要。
圖2 時間序列加權(quán)回歸模型預(yù)測
通過優(yōu)化算法參數(shù),采用測試集樣本對建模結(jié)果進行評測[14],算法運行結(jié)果和精度測試如表4所示。
表4 歷史均值與提升樹融合模型精度測試
實驗中利用XGBoost自定義的評價函數(shù)對提出的模型進行了性能評估。調(diào)用評價函數(shù)時,傳入驗證集和驗證集上的預(yù)測值作為函數(shù)參數(shù),返回一個浮點類型的評估值fevalerror。fevalerror的值越大,模型預(yù)測精度越低。反之,fevalerror的值越小,模型預(yù)測精度越高。結(jié)果表明,隨著訓(xùn)練集樣本大小的增加,運算時間增加,fevalerror值逐漸減小,精度上卻逐漸增加。由此,歷史均值與提升樹的融合模型具有預(yù)測精度較高、運算速度較快的優(yōu)勢。
將歷史均值模型與提升樹方法進行了融合,對互聯(lián)網(wǎng)商家的線上線下的真實用戶數(shù)據(jù)進行了特征提取和建模預(yù)測。并將提出的模型與時間序列加權(quán)回歸進行了預(yù)測結(jié)果與性能比較。實驗結(jié)果表明,融合歷史均值模型與提升樹模型的方法能有效實現(xiàn)互聯(lián)網(wǎng)商家客流量的預(yù)測。在互聯(lián)網(wǎng)高速發(fā)展的今天,對比傳統(tǒng)的零售行業(yè),互聯(lián)網(wǎng)商家的營銷對用戶消費給予了更多的關(guān)注,在產(chǎn)品詳情頁的介紹、客服服務(wù)、便捷的移動支付等方面都致力于為用戶帶來更好的消費體驗。通過這次客流量預(yù)測模型的構(gòu)建和對用戶數(shù)據(jù)進行的挖掘,商家利用互聯(lián)網(wǎng)這一渠道,能夠更好地與用戶及時溝通,了解用戶感受,使互聯(lián)網(wǎng)商家與用戶建立了信任關(guān)系,吸引到更多忠實的用戶。這對互聯(lián)網(wǎng)商家的運營決策、降低成本、改善用戶體驗有著重要的現(xiàn)實意義。