蒲嘉鵬
(四川外國語學(xué)院重慶第二外國語學(xué)校,重慶,404100)
當(dāng)今時(shí)代是大數(shù)據(jù)的時(shí)代,許多領(lǐng)域、行業(yè)相關(guān)的數(shù)據(jù)量呈爆炸式增長。特別是在商品銷售領(lǐng)域,各大電商的飛速發(fā)展進(jìn)一步帶動(dòng)了線上線下商品的銷量,也進(jìn)一步催生了各色商品的各種銷量數(shù)據(jù)。商品銷量一直以來都是商家非常重視的一項(xiàng)指標(biāo),商家可以根據(jù)商品的各種銷量數(shù)據(jù)有針對(duì)性的作出一系列有價(jià)值有意義的計(jì)劃與決策,進(jìn)而提高自身的收益。而現(xiàn)如今有如此大的數(shù)據(jù)量的基礎(chǔ)上,我們有必要對(duì)這些已有數(shù)據(jù)進(jìn)行一些使用與挖掘,幫助商家更多更深入的了解各類商品的銷售情況。我們知道近兩年人工智能領(lǐng)域發(fā)展的非常迅速,其相關(guān)技術(shù)也已經(jīng)越來越多的應(yīng)用在生活中的各個(gè)領(lǐng)域,并取得了顯著的效果。機(jī)器學(xué)習(xí)作為實(shí)現(xiàn)人工智能的一種技術(shù),被大家廣為熟知。業(yè)界也已經(jīng)將機(jī)器學(xué)習(xí)相關(guān)模型在很多場景中應(yīng)用,如金融風(fēng)控模型、垃圾郵件分類、商品智能推薦等等。機(jī)器學(xué)習(xí)模型經(jīng)過訓(xùn)練后,能夠很好的捕捉到數(shù)據(jù)中隱含的模式,進(jìn)而可以幫助我們很好的完成一些任務(wù)。因此,基于現(xiàn)有數(shù)據(jù),將機(jī)器學(xué)習(xí)技術(shù)應(yīng)用在商品銷量預(yù)測(cè)場景中是非常有意義的,我們能夠通過數(shù)據(jù)挖掘構(gòu)建機(jī)器學(xué)習(xí)模型,發(fā)現(xiàn)數(shù)據(jù)中隱含的信息,更好的對(duì)銷量進(jìn)行預(yù)測(cè),并根據(jù)預(yù)測(cè)結(jié)果采取相應(yīng)措施。
本次研究過程中使用的數(shù)據(jù)來自互聯(lián)網(wǎng),由俄羅斯軟件公司1C COMPANY提供,該數(shù)據(jù)包含了部分商店2013年1月—2015年10月的商品的銷售歷史數(shù)據(jù),具體包括商店名稱、商品名稱、商品銷售量、商品價(jià)格、商品類別、日期等。我們主要針對(duì)這些已有數(shù)據(jù)來構(gòu)造特征,對(duì)每個(gè)商店對(duì)應(yīng)的各個(gè)商品的銷量進(jìn)行預(yù)測(cè)。
一個(gè)機(jī)器學(xué)習(xí)任務(wù)一般包括數(shù)據(jù)探索、數(shù)據(jù)預(yù)處理、特征工程、構(gòu)建模型、訓(xùn)練模型、模型評(píng)估這幾個(gè)階段。接下來我們分別介紹各個(gè)階段涉及的工作。
數(shù)據(jù)探索,該階段主要是對(duì)數(shù)據(jù)進(jìn)行觀察,如查看數(shù)據(jù)的分布、數(shù)據(jù)的缺失情況與異常情況等等,只有更好的認(rèn)識(shí)數(shù)據(jù),我們才能有的放矢,有針對(duì)性的進(jìn)行接下來的工作。
數(shù)據(jù)預(yù)處理,該階段主要是起到一個(gè)清洗數(shù)據(jù)的作用,處理數(shù)據(jù)的缺失情況與異常情況,數(shù)據(jù)的缺失值與異常值必須要經(jīng)過嚴(yán)格處理,不然會(huì)對(duì)我們的模型產(chǎn)生非常大的負(fù)面影響,影響模型的精度與預(yù)測(cè)結(jié)果。常見的處理缺失值的方法有直接丟棄缺失數(shù)據(jù)的樣本,該方法在缺失數(shù)據(jù)的樣本數(shù)很多的時(shí)候會(huì)丟棄大量樣本,這樣造成很大的浪費(fèi),所以可以采用填充值的方法,將一些缺失數(shù)據(jù)的均值或中值等填充到缺失處。對(duì)于異常值處理的話,可以采取類似缺失值處理的方法,直接丟棄異常樣本或采取值填充方法進(jìn)行糾正。本次研究中對(duì)于異常值處理就用到了中值填充法。
特征工程,該階段對(duì)于整個(gè)模型的預(yù)測(cè)效果有非常大的影響,特征工程是機(jī)器學(xué)習(xí)領(lǐng)域的一個(gè)非常熱門的研究話題。在該階段我們主要通過笛卡爾積的方式構(gòu)造了(月份,商店,商品)這樣的三元組作為索引,基于該三元組構(gòu)造各種特征。如三元組對(duì)應(yīng)的銷售總量、銷售總額;該階段還對(duì)商品的一級(jí)分類與二級(jí)分類進(jìn)行了編碼操作,并將其作為特征;另外還根據(jù)日期時(shí)間作了一系列的延遲特征,該特征考慮到了一般商品的銷售相關(guān)的各個(gè)指標(biāo)會(huì)和日期有一定的關(guān)系,會(huì)有一定的趨勢(shì)性,針對(duì)這個(gè)特點(diǎn),構(gòu)造了一些時(shí)間延遲特征,如某商品一個(gè)月之前或兩個(gè)月之前的銷售情況、價(jià)格變化等。其它的特征還包括商品的平均價(jià)格、價(jià)格的變化率、銷量變化率等等。
構(gòu)建模型與訓(xùn)練模型,本次研究中采用的機(jī)器學(xué)習(xí)模型是XGBoost,它是集成學(xué)習(xí)Boosting系列算法GBDT模型的優(yōu)化。集成學(xué)習(xí)是通過構(gòu)建多個(gè)弱學(xué)習(xí)器并將其結(jié)果按照一定的結(jié)合策略(平均法、投票法)結(jié)合成強(qiáng)學(xué)習(xí)器的方法,根據(jù)各個(gè)弱學(xué)習(xí)器之間是否存在強(qiáng)依賴關(guān)系可以分為Boosting與Bagging兩種算法,GBDT是Boosting系列算法,各個(gè)弱學(xué)習(xí)器之間存在強(qiáng)依賴關(guān)系。GBDT的弱學(xué)習(xí)器采用CART決策樹。GBDT通過損失函數(shù)的負(fù)梯度擬合本輪損失的近似值,進(jìn)而擬合一棵CART回歸樹。XGBoost對(duì)GBDT的一些方面進(jìn)行了優(yōu)化,它的弱學(xué)習(xí)器支持線性分類器,且在損失函數(shù)中增加了正則化項(xiàng)與列采樣方法進(jìn)一步防止過擬合,它還引入了Shrinkage方法,即在完成一輪迭代之后,把葉子節(jié)點(diǎn)乘上一個(gè)系數(shù),以減小當(dāng)前數(shù)的影響,這樣留給后面其它樹更多的學(xué)習(xí)空間。此外,XGBoost還支持并行,當(dāng)然這種并行并非各個(gè)弱學(xué)習(xí)器生成過程中的并行,而是特征維度上的并行,即在CART決策樹分裂進(jìn)行特征選擇時(shí)的并行。XGBoost能夠幫助我們很好的完成商品銷量的預(yù)測(cè)任務(wù),基于上文提到的種種優(yōu)化方法,該模型訓(xùn)練速度也比較快,能夠快速迭代,快速預(yù)測(cè)。
模型評(píng)估,該階段我們主要采用RMSE(均方根誤差)來衡量預(yù)測(cè)值與真實(shí)值之間的差距。RMSE也經(jīng)常用于各種回歸任務(wù)中。RMSE定義為下式:
其中,X為樣本特征,h為預(yù)測(cè)值,m為樣本數(shù),y為真實(shí)值。
數(shù)據(jù)預(yù)處理,如圖1所示,本次實(shí)驗(yàn)數(shù)據(jù)中,缺失確實(shí)情況不明顯。這里,我們主要針對(duì)異常值進(jìn)行相應(yīng)的處理,從圖1上半部分,我們可以看到每天銷售量大于1000的數(shù)據(jù),基于實(shí)驗(yàn)數(shù)據(jù)的背景(大都屬于同一級(jí)別的商品),我們把這些樣本看作異常值,且將這部分樣本丟棄。對(duì)于商品的價(jià)格分析(圖1下半部分),我們可以看到存在樣本的價(jià)格小于0,這是不符合常規(guī)的,對(duì)于這部分?jǐn)?shù)據(jù),我們以異常值對(duì)應(yīng)其它樣本的中值進(jìn)行填充。本實(shí)驗(yàn)數(shù)據(jù)中每個(gè)商店的名字都包含了地名,這里采取了商店名字去重、商店名字規(guī)范化、城市名編碼等措施。商品層面,進(jìn)行商品類別處理(劃分為一級(jí)分類、二級(jí)分類),并對(duì)分類進(jìn)行了編碼。到此對(duì)數(shù)據(jù)的預(yù)處理基本完成。
圖1
特征工程,在特征構(gòu)造階段進(jìn)行了前文所述的特征工作,主要從各個(gè)維度考慮特征構(gòu)造,如商品的平均價(jià)格、價(jià)格變化率等特征。
構(gòu)建模型,采用XGBoost,將前32個(gè)月的數(shù)據(jù)作為訓(xùn)練集,第33個(gè)月數(shù)據(jù)作為測(cè)試集。對(duì)模型的一些配置參數(shù)進(jìn)行了調(diào)整,如樹的最大深度、樹的數(shù)量、ETA等。經(jīng)訓(xùn)練測(cè)試,訓(xùn)練集的RMSE為0.822,測(cè)試集RMSE為0.909。
最后,我們對(duì)模型的特征重要性進(jìn)行分析,如圖2所示。商品的分類是得分最高的特征,這個(gè)也基本符合預(yù)期,根據(jù)經(jīng)驗(yàn)判斷,不同類別的商品的銷量應(yīng)該是有比較明顯的差異;得分第二高的特征是月份,說明商品的銷量跟季節(jié)存在一定的關(guān)聯(lián),商品銷量隨季節(jié)變化而發(fā)生變化;再者是商品價(jià)格變化率,從該特征我們可以推斷,商品的價(jià)格變化波動(dòng)小,商品的銷量比較穩(wěn)定,反之,商品的銷量波動(dòng)也會(huì)更大。
圖2
本次所構(gòu)建的模型可為實(shí)際商品銷售預(yù)測(cè)提供參考,能夠幫助商家更好地把握商品的銷量情況,并且可以根據(jù)模型的特征重要性對(duì)各個(gè)特征進(jìn)行深入的分析,以采用相應(yīng)措施,制定更合理的資源配置策略,從而可以更有效的提高商店的利潤。另外,隨著數(shù)據(jù)的不斷積累,我們可以構(gòu)造更多高效的特征來使預(yù)測(cè)更為精準(zhǔn),或者當(dāng)數(shù)據(jù)達(dá)到一定量,我們可以嘗試采用深度學(xué)習(xí)技術(shù)進(jìn)行商品銷量預(yù)測(cè)。