吳學華,馬曉華,婁海川,韓曉春,丁 杰,侯衛鋒
(浙江中控軟件技術有限公司,浙江 杭州 310053)
隨著現代化工產品的個性化定制需求越來越普遍、產品牌號越來越精細,準確預測企業的產品需求顯得尤為重要。
產品的市場需求預測可以簡化為對時間序列的預測。因此,簡單的趨勢外推法,包括移動平均法[1]、指數平滑法[2]、趨勢預測法[3],常被應用于具有簡單增長或降低的時間序列分析。但是簡單的趨勢外推法無法抓住外部環境的季節性、周期性波動和其他影響要素。近年來,分解預測方法較為流行。該方法將時間序列分解成長期趨勢因素、季節變動因素、循環變動因素和不規則變動因素,并對除不規則變動因素以外的其他因素進行建模,從而對時間序列進行預測[4-5]。此外,在統計學中,自回歸(autoregression,AR)模型、自回歸滑動平均(auto-regressive moving average,ARMA)模型、自回歸積分滑動平均(autoregressive integrated moving average,ARIMA)模型則更為常見,常被用于市場分析和預測[6-7]。最近,新的機器學習方法也常被用于復雜時間序列的分析和預測。利用自適應差分進化算法優化反向傳播(back propagation,BP)神經網絡,對多維時間序列進行預測,其精度優于傳統的神經網絡和ARIMA方法;利用循環神經網絡(recurrent neural network,RNN)在口語序列和書面語序列之間進行分析和建模,達到了良好的轉換和預測效果[8-9]。綜上所述,對于簡單或者復雜的時間序列,需要利用不同的建模方法進行分析和預測。
本文利用加權變異系數和帕累托分類兩種指標,結合卷積神經網絡(convolutional neural network,CNN),對某化工企業7大類共202種具體規格的產品進行了分析建模和預測,較好地實現了產品類別的劃分;在考慮產品關聯性的同時,減小了高低不確定性產品之間預測的影響;通過與傳統ARMA模型和乘法分解預測模型的仿真對比,在大類產品的預測精度上取得了較好的效果。
變異系數(coefficient of variation,COV)[10]又稱離散系數,是概率論和統計學中對于一組數據離散程度的歸一化量度。其表達式為:
(1)
式中:σ為該組數據的標準差;μ為該組數據的均值。
設該組數據為X=[x1,x2,…,xn-1,xn]。變異系數是衡量數據中各觀測值變異程度的統計量。當進行兩組或多組變量序列值的變異程度比較時,如果度量單位和(或)平均數相同,可以直接利用標準差來比較;如果單位和(或)平均數不同,則不能采用標準差,而需采用標準差與平均數的比值(相對值)來比較。變異系數可以消除單位和(或)平均數不同對兩個或多個資料變異程度比較的影響。在進行數據統計分析時,如果變異系數大于1.5,則要考慮該數據可能存在異常值,這表明該序列的可預測性較差。
帕累托分類[11]又稱ABC分類。該分析方法是由意大利經濟學家維爾弗雷多·帕累托首創的。1879年,帕累托在研究個人收入的分布狀態時,發現少數人的收入占全部人收入的大部分,而多數人的收入卻只占一小部分。他將這一關系用圖表示,這就是著名的帕累托圖。該分析方法的核心思想是在決定一個事物的眾多因素中分清主次,識別出少數的、但對事物起決定作用的關鍵因素和多數的、但對事物影響較少的次要因素。
設存在產品1~10,其銷售量為P=[p1,p2,…,p10]。將產品按銷售量進行降序排列,并計算每一種產品銷售量占總銷售量的比率和累計比率。累計比率在0%~60%的為最重要的A類產品;累計比率在60%~85%的為次重要的B類產品;累計比率在85%~100%的為不重要產品。以此為依據,將產品進行帕累托分類。
卷積神經網絡是由Y·Lecun[12]于1998年提出的、基于局部卷積和反向傳播算法且不同于全連接神經網絡結構的一種手寫數字圖像識別模型。該模型包括1個輸入層,2個卷積層,2個降采樣層,2個全連接層,1個輸出層。這種結構的卷積神經網絡對當時手寫字體的識別率在95%以上,達到了商用級別。該結構的主要思想是利用不同的卷積核對輸入圖像的局部進行特征提取,再利用降采樣層降低特征的維度,最后連接一個全連接神經網絡,從而達到對手寫數字的準確識別。而除了對圖像進行識別以外,更多的改進卷積神經網絡能夠對語音、文本等各種復雜的數據進行處理和建模。
基于卷積神經網絡的需求預測基本框架如圖1所示。

圖1 基于卷積神經網絡的需求預測基本框架
①為了準確地對產品每月的市場需求量進行預測,首先對產品的每月銷量進行變異系數計算。在此采用k段滑動窗口法,并對歷史數據窗口進行權重衰減,即時間越遠的時間段權重越小,從而使得近時間段的趨勢得到更好的利用。設某種產品n個月內的月銷量為S=[st1,st2,…,stn],k段滑動窗口的權重分別為w1,w2,…,wk,則該產品的加權變異系數可以定義為:
Cv=w1×Cv1+…+wk×Cvk
(2)
(3)
(4)
式中:σn為第n個滑動窗口的標準差;μn為第n個滑動窗口的均值。
②對產品進行帕累托分類,將多種產品進行銷售量的降序排列。這里僅進行AB分類,即高數量與低數量的分類,并將產品的累計百分比劃分閾值定為70%。
③對劃分好的4大類產品(高需求量高不確定性、高需求量低不確定性、低需求量高不確定性、低需求量低不確定性),分別構建針對多時序數據的卷積神經網絡。由于卷積神經網絡的建模能力較強,對月銷售量以天為單位進行分解建模。設4大類產品中的某一類共有m種具體產品,以前n天的訂單需求量為整個神經網絡模型的輸入X,以后k天的訂單需求量為整個神經網絡模型的輸出Y,則X、Y可以表示為:
(5)
(6)
式中:xnm為前第n天、第m種產品的日需求量;ykm為后第k天、第m種產品的日需求量。
設一維時序卷積核為K=[k1,k2,…,km]∈Rm。其中:ki=[ki1,…,kiL]T,L為卷積核長度。設滑動步長為1,則對輸入X進行卷積操作,可以表示為:
cnm=K×[xnm,…,x(n+L)m]T
(7)
采用最大池化(Maxpooling)降采樣的方法。設降采樣間隔為2,則降采樣操作可以表示為:
(8)
式中:f為激活函數。
通常采用sigmond函數,經過多層卷積和降采樣操作后,直接與輸出層相連,并通過誤差反向傳播算法[13]更新網絡權重,主要更新內容為卷積核的參數調整。
本文收集了某化工企業2015年1月至2017年11月,這35個月的7大類共202種具體產品的需求訂單數據,以月為單位進行COV分析和帕累托分類。其中:COV閾值為1.5,帕累托分類閾值為60%。由此得到的化工產品分類如表1所示。

表1 化工產品分類表
根據以上產品劃分,從ERP數據庫中提取了這些產品在2017年的10月、11月這2個月的訂單數據作為測試數據,其余33個月的數據作為訓練數據,將月數據分解為天數據,模型的輸入為m天、輸出為n天。對每一類數據,首先進行標準化處理:
(9)
利用深度學習庫Keras[14]進行卷積神經網絡的序貫模型構建。由于卷積神經網絡模型的構建具有試驗性質,即需要人為確定的超參數較多,因此,本文采用多組超參數進行對比試驗。以長輸入常卷積常池化卷積神經網絡(long input normal convolution normal pooling-convolution neural network,LNN-CNN)為例,在本文中,其具體結構為“輸入長度為k×20的時間序列-k×3的卷積核-k×2 的最大池化層-k×3的卷積核-k×3的卷積核-輸出為長度為k×5的時間序列”,縮寫為I30-C3-P2-C5-P2-O5。其中,k為卷積核的寬度,即該大類產品的數量。
假設模型輸入的序列長度為m,預測輸出的長度為n,而實際需要在月維度上進行預測對比。因此,采用動態遞推預測,即當需要預測未來(n+1)~2n天的數據時,則采用的模型輸入為先前預測的n天數據和前(m-n)天數據,從而遞推預測未來一個月該大類產品的總銷售量。經過模型訓練,并與ARMA和乘法分解預測法進行對比:ARMA模型中自回歸項階數(AR階數)和滑動平均項階數(MA階數)分別在范圍中進行測試,并根據赤池信息量準則(akaike information criterion,AIC)[15],取AIC值最小的階數組合為ARMA模型的最終參數。而卷積神經網絡的結構采用了4種結構:LNN-CNN,本文中具體結構為I30-C3-P2-C5-P2-O5;
長輸入多卷積常池化神經網絡(long input multi-convolution normal pooling-convolution neural network,LMN-CNN)模型,本文中具體結構為I30-C3-C3-MP2-C2-C2-MP2-O5;2種短輸入不定層卷積神經網絡模型(stochastic layer-convolution neural network,SL-CNN),本文中其結構1為I20-C3-MP2-C3-C3-O5,結構2為I20-C3-C3-MP2-C4-O5。誤差評價函數取平均百分比準確率:
(10)
測試數據中,每大類產品的平均百分比誤差如表2所示。

表2 不同模型的預測結果對比
由以上對比結果可以看出:基于一維時序的多產品卷積神經網絡模型,在高(低)需求量、低不確定性的產品類別上,與其他兩種算法模型相比,并沒有較大的優勢。尤其是在高需求量、低不確定性的產品類別上,由于該類產品季節性較為明顯,因此乘法分解預測模型能較好地抓住產品的季節性分量,從而得到較為準確的預測。而在高(低)需求量、高不確定性的兩類產品下,LMN-CNN模型的預測精度較高,兩個月平均準確率分別高于另外兩類模型7.75%和8.29%;而與同樣的CNN模型相比,兩個月平均準確率分別高于另外3種結構模型2.12%、4.02%和5.05%,多卷積層模型通過多次卷積變換,抓住了不確定性高的時間序列波動模式,從而能更有效地進行預測。從總體平均預測效果看,LMN-CNN模型兩個月平均預測準確率為89.22%,對于不同類型數據的預測穩定性普遍較高,特別適用于工業領域多牌號產品的整體預測。
本文針對某化工企業的產品體系,提出了一種基于多指標結合卷積神經網絡的需求預測框架。首先,利用COV分析和帕累托分類對7大類共202種具體規格的產品進行劃分;然后,對月需求訂單進行日分解,并利用4個卷積神經網絡分別對4大類產品進行合并預測;最后,對不同類型的模型以及不同結構的同類型模型進行對比。測試結果表明,相較于傳統的統計時間序列預測法和時間序列分解預測法,LMN-CNN模型對不確定性較高的產品的預測效果較為明顯。該結果驗證了該模型的有效性。