周 雨, 段永瑞
(同濟(jì)大學(xué) 經(jīng)濟(jì)與管理學(xué)院, 上海 200092)
信息化浪潮以及大數(shù)據(jù)技術(shù)的蓬勃發(fā)展為各行各業(yè)帶來了機(jī)遇與挑戰(zhàn), 通過數(shù)據(jù)驅(qū)動(dòng)管理決策活動(dòng)將可能為企業(yè)創(chuàng)造巨大的商業(yè)價(jià)值[1].零售企業(yè)通常儲(chǔ)存著大量的銷售明細(xì)數(shù)據(jù), 這些數(shù)據(jù)為企業(yè)進(jìn)行銷售預(yù)測(cè)活動(dòng)提供了可行性, 銷售預(yù)測(cè)是零售企業(yè)進(jìn)行多項(xiàng)管理決策活動(dòng)的基礎(chǔ), 因而對(duì)于企業(yè)具有重要意義, 例如精準(zhǔn)的銷售預(yù)測(cè)可以有效減少因庫存積壓或庫存短缺造成的利益損失、幫助管理者更好地制定市場(chǎng)營(yíng)銷策略以及提升客戶滿意度水平, 從而使企業(yè)建立起長(zhǎng)期的競(jìng)爭(zhēng)優(yōu)勢(shì)[2].
銷售預(yù)測(cè)通常被當(dāng)作時(shí)間序列預(yù)測(cè)問題來進(jìn)行處理, 為了滿足企業(yè)在戰(zhàn)略、戰(zhàn)術(shù)及日常運(yùn)營(yíng)等不同層級(jí)上的決策需要, 銷售明細(xì)數(shù)據(jù)需要相應(yīng)的在時(shí)間、供應(yīng)鏈及產(chǎn)品等多個(gè)維度上進(jìn)行不同程度的聚合.目前大多數(shù)研究主要集中于解決高聚合級(jí)別如總銷售的預(yù)測(cè)問題, 對(duì)于低聚合級(jí)別如商品SKU預(yù)測(cè)的相關(guān)研究還相對(duì)較少[3], 而后者相對(duì)更難獲得準(zhǔn)確的預(yù)測(cè)結(jié)果, 其原因在于低層級(jí)往往包含較多的數(shù)據(jù)噪聲, 且影響銷售波動(dòng)的因素及其作用效果十分復(fù)雜, 不同商品的銷售情況可能存在較大的差異.近些年來, 許多研究對(duì)銷售的影響因素進(jìn)行了討論, 除了歷史銷售表現(xiàn)之外, 部分文獻(xiàn)發(fā)現(xiàn)促銷和價(jià)格等相關(guān)因素能夠有效提升促銷期的預(yù)測(cè)表現(xiàn)[4,5].Huber等通過實(shí)證分析驗(yàn)證了日歷因素如節(jié)假日對(duì)于銷售預(yù)測(cè)的提升作用[6].此外, 一些文獻(xiàn)還討論了天氣因素對(duì)于預(yù)測(cè)結(jié)果的影響[7,8].
從預(yù)測(cè)方法上看, 常見的時(shí)間序列預(yù)測(cè)方法如指數(shù)平滑法[9]、ARIMA與狀態(tài)空間模型[10]已經(jīng)得到了較為廣泛的討論, 然而傳統(tǒng)時(shí)間序列方法的缺陷在于僅使用內(nèi)部變量進(jìn)行預(yù)測(cè)且無法有效捕捉非線性因素的影響.因此, 許多文獻(xiàn)提出基于數(shù)據(jù)驅(qū)動(dòng)的機(jī)器學(xué)習(xí)方法將時(shí)間序列預(yù)測(cè)問題轉(zhuǎn)化為監(jiān)督學(xué)習(xí)的方式進(jìn)行處理, 其中較為常見的方法包括神經(jīng)網(wǎng)絡(luò)模型如極限學(xué)習(xí)機(jī)ELM[11]、深度學(xué)習(xí)網(wǎng)絡(luò)DNN[12]以及回歸算法如支持向量回歸SVR[13,14]、基于回歸樹的集成算法如隨機(jī)森林[15]、XGBoost[16]等.此外, 部分文獻(xiàn)認(rèn)為結(jié)合聚類的預(yù)測(cè)模型可以有效提升預(yù)測(cè)效果, Venkatesh等對(duì)111個(gè)ATM機(jī)的每日現(xiàn)金需求量進(jìn)行了預(yù)測(cè), 他們根據(jù)現(xiàn)金需求量的周季節(jié)性特征對(duì)ATM機(jī)進(jìn)行了聚類, 并在每個(gè)類別上分別訓(xùn)練了多種神經(jīng)網(wǎng)絡(luò)模型, 實(shí)驗(yàn)結(jié)果表明基于聚類的預(yù)測(cè)模型總是優(yōu)于不聚類的預(yù)測(cè)模型[17].Lu等構(gòu)建了基于獨(dú)立成分分析、GHSOM聚類與SVR的月銷售預(yù)測(cè)模型, 根據(jù)38家PC銷售分公司的歷史銷售數(shù)據(jù)對(duì)它們進(jìn)行了類別的劃分, 并對(duì)每一個(gè)類別獨(dú)立訓(xùn)練了SVR預(yù)測(cè)模型, 實(shí)驗(yàn)結(jié)果表明該模型能有效提升預(yù)測(cè)效果[18].這些研究所提出的預(yù)測(cè)模型在本質(zhì)上是類似的, 即在進(jìn)行預(yù)測(cè)之前首先使用聚類算法將整個(gè)數(shù)據(jù)集劃分為幾個(gè)子數(shù)據(jù)集, 通過提升數(shù)據(jù)集中的數(shù)據(jù)相似程度以達(dá)到減少數(shù)據(jù)噪聲的目的, 之后再通過每個(gè)子數(shù)據(jù)集中的數(shù)據(jù)構(gòu)建出的數(shù)據(jù)池來進(jìn)行預(yù)測(cè)模型的訓(xùn)練, 這樣所得到的預(yù)測(cè)模型的預(yù)測(cè)結(jié)果更加準(zhǔn)確和穩(wěn)定.不過需要注意的是, 以上研究在預(yù)測(cè)變量的選擇上僅考慮了歷史滯后因素, 因此所提出的模型仍舊存在一定的改進(jìn)空間.
總的來說, 目前的相關(guān)研究仍主要集中于解決總銷售預(yù)測(cè)或單個(gè)商品的銷售預(yù)測(cè)問題, 對(duì)于多個(gè)商品的銷售預(yù)測(cè)場(chǎng)景的討論還相對(duì)不足, 因此本文將K-means聚類算法與SVR、隨機(jī)森林、XGBoost等機(jī)器學(xué)習(xí)回歸算法相結(jié)合以構(gòu)建預(yù)測(cè)模型來解決零售行業(yè)中多個(gè)商品的日銷量預(yù)測(cè)問題, 通過構(gòu)建數(shù)據(jù)池的方式擴(kuò)充了用于模型訓(xùn)練的數(shù)據(jù)量, 為了驗(yàn)證模型的預(yù)測(cè)效果,本文將所提出的模型與基準(zhǔn)模型以及不使用聚類的預(yù)測(cè)模型進(jìn)行了對(duì)比分析, 所有模型的訓(xùn)練與評(píng)估都是在真實(shí)的零售銷售數(shù)據(jù)集上完成的.
本文結(jié)合聚類與機(jī)器學(xué)習(xí)算法構(gòu)建了商品級(jí)別的銷售預(yù)測(cè)模型, 模型的基本流程如圖1所示.針對(duì)所要分析的問題場(chǎng)景, 我們分別以Y= (y1,y2, …,yt, …,yn)以及X= [xij],i= 1, 2,…,n,j= 1, 2,…,m表示某件商品在n個(gè)時(shí)間點(diǎn)上的銷售量以及與銷售量相關(guān)的外部變量的取值, 則對(duì)于任意一個(gè)商品而言, 預(yù)測(cè)目標(biāo)即是基于已有數(shù)據(jù)預(yù)測(cè)該商品在下一個(gè)時(shí)間點(diǎn)的銷售量yn+1.
圖1 基于聚類與機(jī)器學(xué)習(xí)的預(yù)測(cè)模型
零售企業(yè)往往需要對(duì)多種商品進(jìn)行銷量預(yù)測(cè), 考慮到不同商品銷量的波動(dòng)模式可能有較大的差異, 若直接使用所有商品的數(shù)據(jù)訓(xùn)練模型則會(huì)引入大量的數(shù)據(jù)噪聲, 這可能會(huì)導(dǎo)致所訓(xùn)練出的模型有較大的預(yù)測(cè)偏差, 因此在預(yù)測(cè)之前首先通過聚類分析將具有類似銷售波動(dòng)模式的商品進(jìn)行劃分, 以此來達(dá)到降低數(shù)據(jù)噪聲的目的.
K-means算法因其簡(jiǎn)單高效的特點(diǎn)在諸多領(lǐng)域得到了廣泛應(yīng)用[19].該算法的核心思想為: 首先從全部數(shù)據(jù)樣本中隨機(jī)選取K個(gè)初始聚類中心點(diǎn)θi(1≤i≤K)并計(jì)算其余樣本點(diǎn)距離各聚類中心的歐式距離, 并將該樣本點(diǎn)劃分到距離其最近的聚類中心所代表的簇中,之后計(jì)算每個(gè)簇中所有樣本的均值以作為新的聚類中心并進(jìn)行下一次迭代, 算法的停止準(zhǔn)則為達(dá)到最大的迭代次數(shù)或所有聚類中心都不再變化為止.
為了符合真實(shí)的預(yù)測(cè)場(chǎng)景, 我們將原始銷售數(shù)據(jù)從時(shí)間點(diǎn)t1切割為訓(xùn)練集和測(cè)試集兩部分, 并假設(shè)僅有訓(xùn)練集是已知的, 接著以商品在訓(xùn)練期上每個(gè)時(shí)間點(diǎn)的銷量作為輸入變量來實(shí)現(xiàn)商品的聚類, 由此, 樣本點(diǎn)與聚類中心間的歐式距離計(jì)算公式為:
其中,s即為某件商品在訓(xùn)練期的樣本數(shù)據(jù),sj,θij分別代表商品s與商品簇中心θi的第j個(gè)變量的取值.通常情況下, 我們以整體誤差平方和來衡量聚類的效果,計(jì)算公式如下:
機(jī)器學(xué)習(xí)可以將時(shí)間序列預(yù)測(cè)轉(zhuǎn)化為監(jiān)督學(xué)習(xí)的方式來進(jìn)行處理, 為了構(gòu)建機(jī)器學(xué)習(xí)模型訓(xùn)練所需要數(shù)據(jù)形式, 我們首先需要在原始時(shí)序數(shù)據(jù)上使用滑動(dòng)時(shí)間窗口對(duì)內(nèi)部變量即歷史滯后值進(jìn)行提取: 假設(shè)使用過去l個(gè)時(shí)間點(diǎn)上的歷史數(shù)據(jù)作為預(yù)測(cè)變量, 則在長(zhǎng)度為n的原始數(shù)據(jù)Y= (y1,y2, …,yt, …,yn)上總共可以得到n-l個(gè)樣本數(shù)據(jù):
其中,X表示預(yù)測(cè)變量矩陣即特征矩陣,Y為目標(biāo)變量.進(jìn)一步, 我們可以將外部變量加入到當(dāng)前的特征矩陣X中, 從而得到最終的特征矩陣和目標(biāo)變量矩陣:
機(jī)器學(xué)習(xí)需要有充足的數(shù)據(jù)量為其提供支持, 數(shù)據(jù)量不足將很可能導(dǎo)致過擬合情況的發(fā)生, 使得所訓(xùn)練出的模型僅在特定的訓(xùn)練數(shù)據(jù)集上擁有良好的擬合效果而不具備對(duì)未來進(jìn)行預(yù)測(cè)的可用性.一般情況下單個(gè)時(shí)間序列對(duì)象所包含的數(shù)據(jù)量較少, 在進(jìn)行訓(xùn)練集和測(cè)試集的劃分后使得可用于模型訓(xùn)練的數(shù)據(jù)變得更加有限, 導(dǎo)致在單個(gè)時(shí)間序列對(duì)象的預(yù)測(cè)問題上機(jī)器學(xué)習(xí)方法的表現(xiàn)甚至劣于更為簡(jiǎn)單的時(shí)間序列預(yù)測(cè)方法[20].為了解決這一問題, 本文利用不同商品的數(shù)據(jù)來構(gòu)建數(shù)據(jù)池, 并基于整個(gè)數(shù)據(jù)池的數(shù)據(jù)進(jìn)行模型訓(xùn)練和測(cè)試: 假設(shè)DS表示由商品s的歷史銷售數(shù)據(jù)與相關(guān)的外部變量數(shù)據(jù)按照上述方式處理所得到的特征數(shù)據(jù)與目標(biāo)變量數(shù)據(jù), 則所有商品都可以按照相同的方式進(jìn)行處理, 最終我們將所得到的全部數(shù)據(jù)進(jìn)行合并:D= ∪Ds,s=1,2,···,N.
至此, 我們可以基于數(shù)據(jù)池D進(jìn)行訓(xùn)練集、驗(yàn)證集與測(cè)試集的劃分.訓(xùn)練集數(shù)據(jù)用于模型的訓(xùn)練, 使模型能夠?qū)μ卣髦蹬c目標(biāo)變量之間的映射關(guān)系進(jìn)行學(xué)習(xí).驗(yàn)證集的主要作用體現(xiàn)在通過超參數(shù)調(diào)優(yōu)以避免模型出現(xiàn)過擬合與欠擬合的情況, 最后, 模型預(yù)測(cè)效果的評(píng)估在測(cè)試集數(shù)據(jù)上進(jìn)行, 本文使用MAE與SMAPE作為預(yù)測(cè)效果的評(píng)估指標(biāo):
其中,m為測(cè)試集的樣本總數(shù),yi為真實(shí)值,y~i為預(yù)測(cè)值。
本文所使用的數(shù)據(jù)來源于國(guó)內(nèi)某家零售企業(yè)所提供的真實(shí)銷售數(shù)據(jù)集, 我們選取了清潔用品品類下160件商品從2011年4月1日至2011年11月8日共222個(gè)時(shí)間點(diǎn)的日銷售數(shù)據(jù)進(jìn)行分析, 對(duì)于少量缺失值使用了該時(shí)間點(diǎn)前后兩周的平均銷量進(jìn)行了填充.其中2011年4月1日至2011年9月27日共180個(gè)時(shí)間點(diǎn)的數(shù)據(jù)用于構(gòu)建訓(xùn)練集和驗(yàn)證集, 之后的42個(gè)時(shí)間點(diǎn)用于構(gòu)建測(cè)試集, 圖2顯示了隨機(jī)抽取出的兩件商品的銷售時(shí)序圖, 從圖中我們可以看出商品呈現(xiàn)出明顯的周季節(jié)性特點(diǎn), 但兩種商品的銷量趨勢(shì)以及波動(dòng)幅度都存在著明顯的區(qū)別.這些規(guī)律在我們所分析的其他商品上是較為普遍存在的.
圖2 商品銷售時(shí)序圖
預(yù)測(cè)變量的選擇往往依賴于特定領(lǐng)域的知識(shí), 我們參考了已有研究的相關(guān)結(jié)論并在數(shù)據(jù)探索性分析的基礎(chǔ)上構(gòu)建了本文的預(yù)測(cè)變量.
時(shí)間序列預(yù)測(cè)具備可行性的前提為假設(shè)過去出現(xiàn)過的數(shù)據(jù)模式在未來還會(huì)以類似的方式出現(xiàn), 因此自回歸時(shí)間序列數(shù)據(jù)即歷史滯后值是最常用也是最直接的預(yù)測(cè)變量.然而目前對(duì)于滯后值的選擇范圍還沒有文獻(xiàn)進(jìn)行過系統(tǒng)的討論, 一般情況下對(duì)于短期預(yù)測(cè)而言使用近期的滯后值來進(jìn)行預(yù)測(cè)會(huì)得到更為準(zhǔn)確的預(yù)測(cè)效果, 此外, 基于滯后值計(jì)算的相關(guān)統(tǒng)計(jì)值也常被用來進(jìn)行時(shí)間序列的預(yù)測(cè).
外部變量的加入有助于提升機(jī)器學(xué)習(xí)模型的預(yù)測(cè)效果.除了用于劃取歷史滯后值之外, 由時(shí)間維度衍生出的時(shí)不變的日歷變量如月份、工作日與周末、節(jié)假日等在時(shí)間序列預(yù)測(cè)場(chǎng)景下很可能起到積極的作用.考慮到所分析的多數(shù)商品具有較為明顯的周季節(jié)性特點(diǎn), 本文主要關(guān)注了商品銷量在一周內(nèi)的變化趨勢(shì)以及在法定節(jié)假日期間的銷售情況, 并分別計(jì)算了相應(yīng)的銷售均值.從圖3中我們可以看到, 非節(jié)假日期間商品銷量有著明顯的周季節(jié)性特點(diǎn), 這與銷售時(shí)序圖所反映出的現(xiàn)象是一致的, 考慮到消費(fèi)者在周末有更充裕的時(shí)間進(jìn)行集中購物, 商家也會(huì)在周末推出相應(yīng)的促銷優(yōu)惠活動(dòng), 因此周末的商品銷量要明顯地高于工作日.此外, 節(jié)假日期間的銷量普遍高于非節(jié)假日, 特別是我們發(fā)現(xiàn)本應(yīng)屬于工作日的周一和周二的商品銷量在節(jié)假日期間有了明顯的增長(zhǎng).因此, 本文在建立預(yù)測(cè)模型時(shí)納入了相關(guān)的日歷變量.最后, 我們還考慮將商品價(jià)格作為預(yù)測(cè)變量, 由于價(jià)格本身也可以被看作是時(shí)間序列數(shù)據(jù), 因此對(duì)于價(jià)格變量同樣使用了時(shí)間滑窗的方式進(jìn)行處理, 即我們考慮了短期價(jià)格波動(dòng)對(duì)商品銷量的影響, 本文使用的所有預(yù)測(cè)變量見表1.
圖3 周季節(jié)性與節(jié)假日對(duì)商品銷量的影響
表1 預(yù)測(cè)變量
本文使用了多種機(jī)器學(xué)習(xí)回歸算法構(gòu)建預(yù)測(cè)模型,其中包括支持向量回歸(Support Vector Regression,SVR)、集成算法隨機(jī)森林(Random Forest, RF)[21]以及XGBoost (eXtreme Gradient Boosting)算法[22].作為實(shí)驗(yàn)對(duì)照, 本文選用了Na?ve以及季節(jié)性指數(shù)平滑作為基準(zhǔn)方法, Na?ve將上一個(gè)時(shí)間點(diǎn)的真實(shí)值作為預(yù)測(cè)值來進(jìn)行預(yù)測(cè), 故又被稱為隨機(jī)游動(dòng)預(yù)測(cè)法, 該方法因其簡(jiǎn)單且有效的特點(diǎn)而被廣泛地用作基準(zhǔn)方法[23].Hyndman等對(duì)指數(shù)平滑家族做了完備的闡述[24], 結(jié)合本文的預(yù)測(cè)場(chǎng)景我們選擇了季節(jié)性指數(shù)平滑來對(duì)每個(gè)商品進(jìn)行單獨(dú)預(yù)測(cè), 使用了過去七天的歷史銷量作為該方法的預(yù)測(cè)變量.
3.3.1 支持向量回歸
支持向量回歸是在統(tǒng)計(jì)學(xué)習(xí)理論基礎(chǔ)上發(fā)展起來的基于結(jié)構(gòu)風(fēng)險(xiǎn)最小化原理的機(jī)器學(xué)習(xí)算法, 該算法通過核函數(shù)將低維空間的非線性問題轉(zhuǎn)化為高維空間的線性問題來進(jìn)行求解, 因而能夠有效降低過度擬合的可能性, 具有較強(qiáng)的泛化能力[25].本文選用徑向基函數(shù)作為支持向量回歸的核函數(shù), 使得該算法能夠更好地處理非線性關(guān)系.
3.3.2 隨機(jī)森林
隨機(jī)森林是基于決策樹的Bagging類集成學(xué)習(xí)算法, 其核心思想是通過構(gòu)建多個(gè)相互獨(dú)立的決策樹并采用平均值計(jì)算或多數(shù)表決原則對(duì)每個(gè)決策樹輸出的結(jié)果進(jìn)行處理以得到最終的結(jié)果.為了保證隨機(jī)性, 在構(gòu)建每個(gè)決策樹時(shí)都采用隨機(jī)有放回抽樣的方式對(duì)訓(xùn)練集數(shù)據(jù)進(jìn)行樣本抽取, 并且在每個(gè)節(jié)點(diǎn)都通過隨機(jī)選取特征子集來決定分支結(jié)果.隨機(jī)森林有諸多優(yōu)點(diǎn),由于對(duì)獨(dú)立的決策樹采用并行計(jì)算方式, 使得其在大型數(shù)據(jù)集上也有較快的計(jì)算速度, 此外隨機(jī)森林能夠處理高維數(shù)據(jù)、不同類型的特征以及缺省值數(shù)據(jù), 且不要求對(duì)數(shù)據(jù)進(jìn)行規(guī)范化.
3.3.3 XGBoost
XGBoost是基于梯度提升樹算法GBDT的高效實(shí)現(xiàn)與改進(jìn)算法, 本質(zhì)上屬于Boosting類的集成學(xué)習(xí)算法.Boosting通過逐步迭代的方式將多個(gè)弱學(xué)習(xí)器結(jié)合為強(qiáng)學(xué)習(xí)器, 其中每一步迭代所構(gòu)建的弱學(xué)習(xí)器都是根據(jù)已有弱學(xué)習(xí)器的預(yù)測(cè)殘差進(jìn)行進(jìn)一步學(xué)習(xí)的.GBDT在進(jìn)行目標(biāo)函數(shù)優(yōu)化時(shí)僅使用到了一階導(dǎo)數(shù)信息, 而XGBoost對(duì)損失函數(shù)進(jìn)行了二階泰勒展開并增加正則項(xiàng)以避免過擬合情況的發(fā)生.XGBoost具有高準(zhǔn)確度、能夠并行計(jì)算、可以分布式處理高維稀疏特征等優(yōu)點(diǎn).
本文首先使用全部訓(xùn)練集數(shù)據(jù)對(duì)機(jī)器學(xué)習(xí)預(yù)測(cè)模型進(jìn)行了訓(xùn)練, 采用十折交叉驗(yàn)證以及網(wǎng)格搜索法進(jìn)行了超參數(shù)選擇, 并在測(cè)試集數(shù)據(jù)上驗(yàn)證了模型的預(yù)測(cè)效果, 表2對(duì)各模型的預(yù)測(cè)評(píng)估指標(biāo)結(jié)果進(jìn)行了匯總.從預(yù)測(cè)指標(biāo)反映的結(jié)果來看, 季節(jié)性指數(shù)平滑以及基于機(jī)器學(xué)習(xí)的預(yù)測(cè)模型結(jié)果都要優(yōu)于基準(zhǔn)方法Na?ve,其中3種基于機(jī)器學(xué)習(xí)的預(yù)測(cè)模型的預(yù)測(cè)效果又要好于季節(jié)性指數(shù)平滑, 由于季節(jié)性指數(shù)平滑是基于單個(gè)商品的銷售數(shù)據(jù)來進(jìn)行預(yù)測(cè)的, 所考慮的預(yù)測(cè)信息有限, 且不能很好地處理非線性關(guān)系, 因此在多個(gè)商品的預(yù)測(cè)場(chǎng)景下通過構(gòu)建數(shù)據(jù)池來擴(kuò)充數(shù)據(jù)量和預(yù)測(cè)變量的選擇范圍更有助于發(fā)揮出機(jī)器學(xué)習(xí)模型的預(yù)測(cè)效果.最后, 支持向量回歸的預(yù)測(cè)結(jié)果優(yōu)于隨機(jī)森林以及XGBoost, 其相比于Na?ve在SMAPE及MAE指標(biāo)上分別獲得了20.45%以及18.56%的提升.
表2 基準(zhǔn)模型與機(jī)器學(xué)習(xí)模型的預(yù)測(cè)結(jié)果
進(jìn)一步, 本文進(jìn)行了實(shí)驗(yàn)以驗(yàn)證聚類是否能夠進(jìn)一步提升機(jī)器學(xué)習(xí)預(yù)測(cè)模型的預(yù)測(cè)效果.聚類數(shù)對(duì)最終的預(yù)測(cè)效果具有直接影響, 過少的聚類數(shù)意味著不能很好地識(shí)別具有相似銷售模式的商品, 即不能很好地實(shí)現(xiàn)降低數(shù)據(jù)噪聲的作用, 而過多的聚類數(shù)會(huì)導(dǎo)致子數(shù)據(jù)集中包含較少的數(shù)據(jù)量, 這將會(huì)影響到預(yù)測(cè)模型的最終預(yù)測(cè)效果.基于以上考慮, 我們分別取聚類數(shù)K=2, 3, 4并實(shí)驗(yàn)了3種機(jī)器學(xué)習(xí)模型在不同聚類數(shù)下的預(yù)測(cè)結(jié)果, 為了方便對(duì)比, 我們使用K=1來表示不使用聚類的情況.
表3匯總了不同聚類數(shù)下各預(yù)測(cè)模型的預(yù)測(cè)結(jié)果,從中我們可以看到結(jié)合聚類的機(jī)器學(xué)習(xí)模型的預(yù)測(cè)效果在原有基礎(chǔ)上都有了進(jìn)一步的提升, 其中K-SVR模型在聚類數(shù)K=2時(shí)得到了最優(yōu)預(yù)測(cè)結(jié)果, 而K-RF以及K-XGBoost模型則在聚類數(shù)K=3時(shí)表現(xiàn)最佳, 當(dāng)聚類數(shù)為4時(shí)預(yù)測(cè)效果的提升程度則最小, 因此我們認(rèn)為將商品劃分為2或3個(gè)商品簇是相對(duì)合適的.此外,無論在哪種情況下支持向量回歸的預(yù)測(cè)結(jié)果總是優(yōu)于兩種集成算法, 因此相較于聚類而言, 算法的選擇對(duì)最終的預(yù)測(cè)結(jié)果有著更大的影響.
表3 基于聚類與機(jī)器學(xué)習(xí)的預(yù)測(cè)模型的預(yù)測(cè)結(jié)果
為了更加直觀的對(duì)比不同模型的預(yù)測(cè)結(jié)果, 繪制了不同預(yù)測(cè)模型的預(yù)測(cè)值與真實(shí)值的散點(diǎn)圖, 具體情見圖4.其中樣本分布越集中于對(duì)角線說明預(yù)測(cè)誤差越小.
圖4 不同模型預(yù)測(cè)值與真實(shí)值關(guān)系散點(diǎn)圖
銷售預(yù)測(cè)能夠?yàn)榱闶燮髽I(yè)安排生產(chǎn)計(jì)劃、控制庫存水平以及制定營(yíng)銷策略等多項(xiàng)管理決策活動(dòng)提供支持.目前的大部分研究是針對(duì)單個(gè)時(shí)間序列對(duì)象如總銷售或某個(gè)特定商品的銷售情況進(jìn)行分析的,而在真實(shí)預(yù)測(cè)場(chǎng)景中企業(yè)往往需要對(duì)多個(gè)商品進(jìn)行預(yù)測(cè), 本文認(rèn)為基于聚類分析與機(jī)器學(xué)習(xí)方法的預(yù)測(cè)模型能夠很好地應(yīng)用于此類預(yù)測(cè)場(chǎng)景, 其原因主要為在此類預(yù)測(cè)場(chǎng)景下可以通過構(gòu)建數(shù)據(jù)池的方式來增加用于訓(xùn)練機(jī)器學(xué)習(xí)模型的數(shù)據(jù)量以及預(yù)測(cè)變量的選擇范圍.此外, 考慮到數(shù)據(jù)池構(gòu)建的同時(shí)會(huì)引入數(shù)據(jù)噪聲, 因此在訓(xùn)練模型之前可以通過聚類分析將具有相似銷售模式的商品進(jìn)行劃分.本文基于K-means聚類與支持向量回歸、隨機(jī)森林、XGBoost構(gòu)建了3種不同的預(yù)測(cè)模型, 并使用真實(shí)的零售企業(yè)銷售數(shù)據(jù)對(duì)模型進(jìn)行了驗(yàn)證.結(jié)果表明3種預(yù)測(cè)模型的預(yù)測(cè)效果要明顯好于基準(zhǔn)預(yù)測(cè)方法, 其中表現(xiàn)最優(yōu)的預(yù)測(cè)模型K-SVR (K=2)在SMAPE及MAE兩項(xiàng)預(yù)測(cè)評(píng)估指標(biāo)上相較于Na?ve方法分別提升了21.23%和20.46%.
本文所提出的預(yù)測(cè)思路不僅對(duì)零售行業(yè)的銷量預(yù)測(cè)問題具有參考意義, 其還可以應(yīng)用到類似的時(shí)間序列預(yù)測(cè)場(chǎng)景中.對(duì)于未來的研究方向我們認(rèn)為可以嘗試將更多性能優(yōu)異的機(jī)器學(xué)習(xí)算法用于此類預(yù)測(cè)場(chǎng)景.此外由于K-means聚類算法的缺陷之一為需要手動(dòng)設(shè)定聚類數(shù), 因此也可以嘗試使用其他類型的聚類算法如層次聚類法.