常曉花,熊 翱
(北京郵電大學 網(wǎng)絡技術研究院,北京 100876)
銷售量是衡量一個公司銷售業(yè)績好壞的重要標志.銷售量的多少不僅影響著公司的盈利和發(fā)展,同時也影響著整個國家的經(jīng)濟命脈.因此,銷售量預測的精確性和科學性具有重要的研究價值.
銷售數(shù)據(jù)是一種動態(tài)的、非線性的、不規(guī)則的時間序列數(shù)據(jù),受季節(jié)氣候、突發(fā)事件、經(jīng)銷商的銷售能力、下級經(jīng)銷商的數(shù)量等等各種因素的影響.國內外學者對各行各業(yè)銷售量預測的方法,主要有神經(jīng)網(wǎng)絡預測法[1]、聚類預測[2]方法等.傳統(tǒng)的BP神經(jīng)網(wǎng)絡方法,容易陷入局部極小值,而達不到預測的精度;基于聚類的銷量預測方法,初始聚類中心的選擇對聚類結果的影響較大,并且需要不斷調整聚類中心,所以數(shù)據(jù)量較大時,算法時間開銷也會非常大.
本文針對上述問題,提出了基于改進Adaboost算法[3]的隨機森林預測方法,該方法不存在神經(jīng)網(wǎng)絡算法會陷入局部極小值的缺點,且在數(shù)據(jù)量較大和較小時都能夠維持一定的預測精度,對不平衡數(shù)據(jù)集來說,能夠平衡誤差,同時訓練速度快,能夠實現(xiàn)并行化.本文利用該改進的Adaboost隨機森林預測方法,對某醫(yī)療器械銷售公司的實際銷售數(shù)據(jù)集進行了仿真實驗,實驗結果證明了本文所提方法的有效性.
隨機森林[4]是Bagging算法和改進的決策樹算法的結合.
Bagging算法是多個個體弱學習器各自學習,然后通過集合策略來得到最終的強學習器,個體弱學習器之間不存在依賴關系,個體弱學習器的訓練集通過隨機采樣得到,隨機采樣表示每次從訓練集中采集固定個數(shù)的樣本,但是采集后都將樣本放回;普通的決策樹算法,會在節(jié)點所有樣本特征中選擇一個最優(yōu)的特征來做決策樹的左右子樹劃分.但是,隨機森林中所用的決策樹算法,則是通過隨機選擇節(jié)點上的一部分樣本特征,再在其中選擇一個最優(yōu)的特征來做決策樹的左右子樹劃分.
隨機森林算法,就是將改進的決策樹算法作為弱學習器,然后使用Bagging算法對弱學習器進行集成學習而得到的.該算法結合了Bagging算法的隨機采樣以及決策樹算法的隨機特征選擇,這兩個“隨機”性,因而其泛化能力強,不容易陷入過擬合.同時,由于Bagging算法中弱學習器之間相互獨立,隨機森林中的決策樹可以并行學習,因而,隨機森林算法的時間效率高.
隨機森林的訓練過程如下:
(1)給定訓練集S,測試集T,特征維數(shù)F.確定參數(shù):使用到的CART的數(shù)量t,每棵樹的深度d,每個節(jié)點使用到的特征數(shù)量f.終止條件:節(jié)點上最少樣本數(shù)s,節(jié)點上最少的信息增益m.
對于第1-t棵樹,i=1-t:
乳腺肉瘤是發(fā)生于乳腺間葉組織的惡性腫瘤,按其組織來源分為間葉組織類,主要包括乳腺脂肪肉瘤,血管肉瘤及纖維組織肉瘤等;混合組織類,主要為乳腺葉狀囊肉瘤和癌肉瘤。
(2)從S中有放回的抽取大小和S一樣的訓練集S(i),作為根節(jié)點的樣本,從根節(jié)點開始訓練.
(3)如果當前節(jié)點上達到終止條件,則設置當前節(jié)點為葉子節(jié)點,如果是分類問題,該葉子節(jié)點的預測輸出為當前節(jié)點樣本集合中數(shù)量最多的那一類c(j),概率p為c(j)占當前樣本集的比例;如果是回歸問題,預測輸出為當前節(jié)點樣本集各個樣本值的平均值.然后繼續(xù)訓練其他節(jié)點.如果當前節(jié)點沒有達到終止條件,則從F維特征中無放回的隨機選取f維特征.利用這f維特征,尋找分類效果最好的一維特征k及其閾值th,當前節(jié)點上樣本第k維特征小于th的樣本被劃分到左節(jié)點,其余的被劃分到右節(jié)點.繼續(xù)訓練其他節(jié)點.
(4)重復(2),(3),直到所有節(jié)點都訓練過了或者被標記為葉子節(jié)點.
(5)重復(2),(3),(4),直到所有CART都被訓練過.
利用隨機森林的預測過程如下:
對于第1-t棵樹,i=1-t:
(1)從當前樹的根節(jié)點開始,根據(jù)當前節(jié)點的閾值th,判斷是進入左節(jié)點還是進入右節(jié)點,直到到達,某個葉子節(jié)點,并輸出預測值.
(2)重復執(zhí)行(1),直到所有t棵樹都輸出了預測值.如果是分類問題,則輸出為所有樹中預測概率總和最大的那一個類,即對每個c(j)的p進行累計;如果是回歸問題,則輸出為所有樹的輸出的平均值.

表1 Bagging框架的參數(shù)

表2 CART決策樹的參數(shù)
Adaboost是一種迭代算法.其主要過程分為三步,首先對訓練樣本進行權重初始化;然后對弱學習器進行訓練,如果某個樣本點的預測值達到了所要求的精度,那么在構造下一個訓練集時,它的權重就降低,相反,則權重提高,接著權重更新過的樣本集被用于訓練下一個學習器,整個訓練過程如此迭代進行;最后將各個學習器組合成強學習器[5].
Adaboost算法最終得到的強學習器,由各個弱學習器與其權重結合而成,弱學習器的權重由每個弱學習器的誤差率決定,誤差率小的弱學習器,其權重則大,這使其在最終的強學習器函數(shù)中起較大的決定作用.
因此,Adaboost算法中的個體學習器之間有很強的依賴關系,也因此導致其有預測精度高的優(yōu)點.并且,Adaboost算法[6]提供的是一個學習框架,這使其應用非常靈活,可以使用各種分類回歸模型來構建弱學習器.
本文將隨機森林算法與Adaboost算法框架結合,提出了一種改進Adaboost算法的隨機森林銷售量預測算法,以下稱為預測算法.

該算法詳細步驟如下:

(2)隨機森林弱預測模型[8]預測.通過選取合適隨機森林算法參數(shù)值,構造不同的隨機森林弱預測器,對于t=1,...,T進行T次迭代,在訓練第t個弱預測器時,使用隨機森林回歸類對數(shù)據(jù)進行訓練,建立回歸模型gt(x)→y.具體步驟如下:




5)進行第t+1次迭代;
6)如果迭代次數(shù)達到T,則繼續(xù)7),否則返回1),直到達到最大迭代次數(shù);
最終強預測器函數(shù)的輸出公式如下:

本文提出的基于Adaboost的隨機森林預測算法,結合了隨機森林算法和Adaboost算法的優(yōu)點,時間效率高,泛化能力強,同時由于Adaboost的迭代,預測精度較高.預測算法使用了弱學習器中每次學習后的預測錯誤率以及樣本的平均相對誤差作為影響弱學習器權重的因子,使得在下一個學習器中能夠更注重上一個學習器預測誤差較大的樣本,從而提高了預測的精度.
本文的實驗數(shù)據(jù)來自某醫(yī)療器械銷售公司的銷售數(shù)據(jù).共有240組樣本數(shù)據(jù),部分數(shù)據(jù)如表3所示,tmp_max表示最高氣溫均值,tmp_min表示最低氣溫均值,prob_rain表示降雨概率(已做處理),lstwk_sales表示上周的銷量,lsttwo_sales表示上上周的銷量,單位為實際銷售單位EA.

表3 實驗部分數(shù)據(jù)
選取樣本中的150組數(shù)據(jù)進行訓練,其余90組作為測試樣本.然后用本文提出的方法進行訓練.實驗采用python[9,10]進行仿真,實驗過程中,隨機森林決策樹個數(shù)設為100,隨機森林其余參數(shù)均選擇默認值,構成弱預測器.根據(jù)本文提出的預測方法,設置Adaboost算法的最大迭代次數(shù)T為20,調整系數(shù)k為1.1,相對誤差率閾值設0.1.
表4所示為部分預測值及相對誤差,圖1是使用改進Adaboost方法和未使用Adaboost方法的預測結果對比圖.實驗結果表明,預測數(shù)據(jù)誤差率小于0.1,使用基于Adaboost改進后的算法能夠比改進之前的預測率提高約12%,證明了本文提出的算法的有效性.

表4 室內光流擾動效應檢測

圖1 改進前后銷量預測對比圖
近年來,隨著醫(yī)療技術的不斷更新發(fā)展,醫(yī)療器材的需求量也不斷增加,大量的銷售數(shù)據(jù)銷售信息有待挖掘,本文利用改進的Adaboost方法,初始化訓練樣本權重,并利用隨機森林算法訓練得到若預測器,后又結合多個弱預測器,形成強預測器的方法,對銷售數(shù)據(jù)集進行了分析和研究,同時提升了隨機森林算法的回歸性能,但是本文提出的方法,只是通過改進Adaboost算法結合隨機森林算法來提高算法的回歸性能,并沒有考慮通過改進隨機森林算法本身來提高算法的有效性,所以未來還有很大的提升改進空間.
1陳蓉.基于BP神經(jīng)網(wǎng)絡的零售產(chǎn)品銷量預測方法.經(jīng)營管理者,2015,(4):10-11.
2王建偉.基于商品聚類的電商銷量預測.計算機系統(tǒng)應用,2016,25(10):162-168.[doi:10.15888/j.cnki.csa.005423]
3曹瑩,苗啟廣,劉家辰,等.AdaBoost算法研究進展與展望.自動化學報,2013,39(6):745-758.
4丁君美,劉貴全,李慧.改進隨機森林算法在電信業(yè)客戶流失預測中的應用.模式識別與人工智能,2015,28(11):1041-1049.
5李翔,朱全銀.Adaboost算法改進BP神經(jīng)網(wǎng)絡預測研究.計算機工程與科學,2013,35(8):96-102.
6張禹,馬駟良,張忠波,等.基于Adaboost算法與神經(jīng)網(wǎng)絡的快速虹膜檢測與定位算法.吉林大學學報(理學版),2006,44(2):233-236.
7李翔,朱全銀.基于Adaboost算法和BP神經(jīng)網(wǎng)絡的稅收預測.計算機應用,2012,32(12):3558-3560,3568.
8李威威,李春青,聶敬云,等.膜生物反應器膜污染的隨機森林預測模型.計算機應用,2015,35(SI):135-137.
9Richert W,Coelho LP.Python語言構建機器學習系統(tǒng).南京:東南大學出版社,2016.
10Hetland ML.Python基礎教程.2版.司維,曾軍崴,譚穎華,譯.北京:人民郵電出版社,2014.