魏明樺,鄭金貴
(1. 福州職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)系,福建 福州 350007;2. 福建農(nóng)林大學(xué) 品質(zhì)所,福建 福州 350007)
基于改進(jìn)BP神經(jīng)算法的農(nóng)產(chǎn)品價(jià)格預(yù)測模型的構(gòu)建與實(shí)現(xiàn)
魏明樺1,2,鄭金貴2
(1. 福州職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)系,福建 福州 350007;2. 福建農(nóng)林大學(xué) 品質(zhì)所,福建 福州 350007)
為了提高農(nóng)產(chǎn)品價(jià)格預(yù)測精度,提出一種改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)模型。先通過定性分析得到影響農(nóng)產(chǎn)品價(jià)格波動(dòng)的因子,然后采用MIV方法選擇強(qiáng)影響力的因子作為神經(jīng)網(wǎng)絡(luò)輸入節(jié)點(diǎn)。并采用改進(jìn)的算法進(jìn)行學(xué)習(xí),尋找最優(yōu)的BP網(wǎng)絡(luò)結(jié)構(gòu)。利用改進(jìn)后的模型,實(shí)現(xiàn)了農(nóng)產(chǎn)品價(jià)格的高精度仿真。
農(nóng)產(chǎn)品價(jià)格;BP神經(jīng)網(wǎng)絡(luò);MIV;變學(xué)習(xí)率;附加動(dòng)量
目前,有關(guān)農(nóng)產(chǎn)品價(jià)格波動(dòng)的研究主要集中在對其特征和原因的分析兩方面。這些研究認(rèn)為,農(nóng)產(chǎn)品價(jià)格波動(dòng)特征復(fù)雜,并且未來仍存在很大的不確定性,農(nóng)產(chǎn)品價(jià)格波動(dòng)的原因,包括能源成本的提高、國際市場的沖擊、自然災(zāi)害、消費(fèi)結(jié)構(gòu)升級和生物質(zhì)能源的發(fā)展等[1-5]。并且,實(shí)物投資、貨幣供應(yīng)數(shù)量、自然災(zāi)害、國際市場等因素的短期作用,也能對農(nóng)產(chǎn)品價(jià)格帶來影響[6-7]。但是,農(nóng)產(chǎn)品價(jià)格與這些因素之間存在復(fù)雜的線性、非線性與互動(dòng)關(guān)系,自變量與因變量之間是離散數(shù)據(jù),無法用數(shù)學(xué)公式來表示。因此,必須構(gòu)建一個(gè)能夠適應(yīng)這種特性、反映它們之間關(guān)系的模型,從而能夠較為準(zhǔn)確地預(yù)測農(nóng)產(chǎn)品價(jià)格。目前,國內(nèi)學(xué)者對于農(nóng)產(chǎn)品價(jià)格的定量分析有幾種方式。比如,劉峰等[8]以白菜月價(jià)格數(shù)據(jù)為例,構(gòu)建非平穩(wěn)時(shí)間序列ARIMA(p d, q)模型并預(yù)測白菜未來的月價(jià)格;李艷等[9]通過使用RBF神經(jīng)網(wǎng)絡(luò)探究農(nóng)產(chǎn)品價(jià)格與畜牧業(yè)、林業(yè)與漁業(yè)等相關(guān)因素的交互關(guān)系,都取得了較好的成果。本研究構(gòu)建農(nóng)產(chǎn)品價(jià)格相關(guān)因素?cái)?shù)據(jù)庫,并結(jié)合改進(jìn)的Back Propagation(BP)神經(jīng)網(wǎng)絡(luò)建模對農(nóng)產(chǎn)品價(jià)格進(jìn)行預(yù)測。
1.1 BP神經(jīng)網(wǎng)絡(luò)
Back Propagation(BP)神經(jīng)網(wǎng)絡(luò)由輸入層、隱含層和輸出層組成,其中隱含層可以有多層。各層神經(jīng)元之間沒有任何連接,僅相鄰層神經(jīng)元之間有單項(xiàng)連接[10]。
BP算法優(yōu)點(diǎn)較為突出,但是,它也存在一些不足:BP神經(jīng)網(wǎng)絡(luò)在處理大量多維數(shù)據(jù)時(shí),存在網(wǎng)絡(luò)結(jié)構(gòu)不容易設(shè)計(jì),收斂時(shí)間長,需要比較多的訓(xùn)練次數(shù)等不足;BP神經(jīng)網(wǎng)絡(luò)使用的最速下降法來源于非線性規(guī)劃,它的學(xué)習(xí)效率不高,收斂速度較慢,主要導(dǎo)致的原因是它使用誤差函數(shù)的負(fù)梯度方向來修改權(quán)值;算法容易收斂到局部極小。
針對這些不足,本研究結(jié)合了以下幾種改進(jìn)方法來提高基本BP算法的效率。
1. 2 MIV(Mean Impact Value)
BP神經(jīng)網(wǎng)絡(luò)中所包含的輸入數(shù)據(jù)是研究者們根據(jù)專業(yè)知識和經(jīng)驗(yàn)預(yù)先選擇好的,數(shù)據(jù)收集時(shí)不可避免的存在一些與輸出值相關(guān)度較低的干擾變量。本研究使用MIV(Mean Impact Value)方法來對大量的數(shù)據(jù)變量進(jìn)行預(yù)處理,以去除相關(guān)度較低的變量。它的計(jì)算過程如下:
(1)在網(wǎng)絡(luò)訓(xùn)練終止后,將訓(xùn)練樣本P中的每一自變量特征在原值的基礎(chǔ)上加/減10%構(gòu)成新的兩個(gè)訓(xùn)練樣本P1和P2;
(2)將P1和P2分別作為仿真樣本利用已訓(xùn)練好的網(wǎng)絡(luò)進(jìn)行仿真,得到兩個(gè)仿真結(jié)果A1和A2;
(3)求出A1和A2的差值,即為該自變量對輸出產(chǎn)生的影響變化值(Impact Value);
(4)最后將IV按照觀測例數(shù)平均得出該自變量對于因變量—網(wǎng)絡(luò)輸出的MIV。
按照上述步驟依次算出各個(gè)自變量的MIV值,MIV值的絕對值大小代表了自變量網(wǎng)絡(luò)結(jié)果的影響程度。通過保留絕對值大的自變量,去掉絕對值小的自變量,就實(shí)現(xiàn)了變量的篩選。
1.3 可變學(xué)習(xí)率算法
BP神經(jīng)網(wǎng)絡(luò)有一個(gè)重要參數(shù)學(xué)習(xí)率η,其取值范圍在0-1。值越大,學(xué)習(xí)過程的權(quán)值修改越大。學(xué)習(xí)率取值如果太大,會導(dǎo)致權(quán)值學(xué)習(xí)過程的震蕩,如果太小,權(quán)值學(xué)習(xí)不容易穩(wěn)定,直接導(dǎo)致神經(jīng)網(wǎng)絡(luò)收斂過慢??梢允褂米儗W(xué)習(xí)率學(xué)習(xí)算法來解決取值的問題。它指的是學(xué)習(xí)率在網(wǎng)絡(luò)構(gòu)建初期較大,這時(shí)網(wǎng)絡(luò)收斂速度快,權(quán)值趨于穩(wěn)定;隨著學(xué)習(xí)過程的進(jìn)行,學(xué)習(xí)率不斷減小,網(wǎng)絡(luò)震蕩變小,趨于穩(wěn)定。變學(xué)習(xí)率計(jì)算公式為:
式中,ηmax為最大學(xué)習(xí)率;ηmin為最小學(xué)習(xí)率;tmax為最大迭代次數(shù);t為當(dāng)前迭代次數(shù)。
結(jié)果表明,可變學(xué)習(xí)率算法對于減少訓(xùn)練次數(shù)很有效。
1.4 附加動(dòng)量方法
傳統(tǒng)BP網(wǎng)絡(luò)容易收斂到局部最小值,收斂速度慢。為避免這種缺陷,可以使用附加動(dòng)量法修正權(quán)值,公式為:
式中:mc稱動(dòng)量因子(MC),取值為0.95左右;wij為第i層到第j層的連接權(quán)值。
本研究把BP神經(jīng)網(wǎng)絡(luò)同以上改進(jìn)結(jié)合起來,首先使用MIV方法把輸入數(shù)據(jù)降維處理,然后在網(wǎng)絡(luò)設(shè)計(jì)訓(xùn)練時(shí)結(jié)合使用變學(xué)習(xí)率學(xué)習(xí)算法和附加動(dòng)量法,充分發(fā)揮它們各自的優(yōu)點(diǎn)。并通過使用MATLAB編程實(shí)現(xiàn),完成農(nóng)產(chǎn)品價(jià)格的預(yù)測研究。
2.1 輸入層和輸出層設(shè)計(jì)
(1)數(shù)據(jù)庫建立
根據(jù)影響農(nóng)產(chǎn)品價(jià)格的因素,選取相關(guān)26項(xiàng)指數(shù)作為樣本數(shù)據(jù)。查閱中國統(tǒng)計(jì)年鑒,選取1994-2011年共18組數(shù)據(jù)構(gòu)建數(shù)據(jù)庫。
(2)使用MIV方法選取強(qiáng)影響因子作為輸入項(xiàng)
使用歸一化函數(shù)mapminmax對數(shù)據(jù)進(jìn)行歸一化處理,使所有數(shù)據(jù)都轉(zhuǎn)化為[-1,1]之間的數(shù),消除了數(shù)據(jù)之間的數(shù)量級差別,避免因?yàn)檩斎胼敵鰯?shù)據(jù)之間數(shù)量級的差別導(dǎo)致網(wǎng)絡(luò)預(yù)測誤差較大。
編程實(shí)現(xiàn)MIV神經(jīng)網(wǎng)絡(luò)變量篩選。計(jì)算出26項(xiàng)指數(shù)的MIV值后,最終根據(jù)各個(gè)指數(shù)的MIV值高低,選取值較高的10個(gè)指數(shù)作為網(wǎng)絡(luò)的輸入項(xiàng)。它們分別是:人均國內(nèi)生產(chǎn)總值,貨幣和準(zhǔn)貨幣M2,居民消費(fèi)水平指數(shù),國內(nèi)生產(chǎn)資料價(jià)格指數(shù),主要農(nóng)產(chǎn)品人均占有量,燃料和動(dòng)力類購進(jìn)價(jià)格指數(shù),鄉(xiāng)村人口占總?cè)丝诒壤?,農(nóng)作物播種面積(糧食),農(nóng)產(chǎn)品單位面積產(chǎn)量(糧食),國際農(nóng)產(chǎn)品價(jià)格。
(3)輸出項(xiàng)的選擇
選取商品零售價(jià)格指數(shù)(糧食)作為網(wǎng)絡(luò)的輸出項(xiàng)。
2.2 隱含層設(shè)計(jì)
本研究使用三層BP神經(jīng)網(wǎng)絡(luò),也就是只使用一層隱含層。最佳隱含節(jié)點(diǎn)的確定可以根據(jù)以下經(jīng)驗(yàn)公式預(yù)估:
式中: m為輸入層節(jié)點(diǎn)數(shù),n為輸出層節(jié)點(diǎn)數(shù),a為0-10之間的常數(shù)。使用公式確定隱含節(jié)點(diǎn)取值范圍后,使用試湊法確定最佳的節(jié)點(diǎn)數(shù)。在本研究中,節(jié)點(diǎn)數(shù)目選6時(shí),網(wǎng)絡(luò)預(yù)測值的誤差最小。
2.3 樣本
2.3.1 訓(xùn)練樣本
數(shù)據(jù)庫中有1994-2011年共18組數(shù)據(jù),我們使用除了1998年和2002年之外的16組數(shù)據(jù)作為訓(xùn)練樣本,來訓(xùn)練改進(jìn)后的BP神經(jīng)網(wǎng)絡(luò)。數(shù)據(jù)如表1所示。表1中Xi是之前所述的歸一化后的10個(gè)MIV值較高的指數(shù)。Y0是網(wǎng)絡(luò)輸出項(xiàng)商品零售價(jià)格指數(shù)(糧食)。
2.3.2 預(yù)測樣本
1994-2011年18組數(shù)據(jù),選取1998年和2002年的數(shù)據(jù)作為驗(yàn)證樣本。數(shù)據(jù)如表2所示。表2中Ti是之前所述的歸一化后的10個(gè)MIV值較高的指數(shù)。Y1是預(yù)測項(xiàng)商品零售價(jià)格指數(shù)(糧食)。
2.4 使用的神經(jīng)網(wǎng)絡(luò)函數(shù)與結(jié)果分析
隱含層決定函數(shù)使用函數(shù)“tansig”,輸出層決定函數(shù)使用函數(shù)“purelin”,訓(xùn)練函數(shù)使用函數(shù)“traingdm”。編程實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的搭建、訓(xùn)練與預(yù)測。網(wǎng)絡(luò)預(yù)測輸出結(jié)果如表3所示。
表1 訓(xùn)練樣本
表2 預(yù)測樣本
表3 預(yù)測輸出結(jié)果
通過定性分析,得到了影響農(nóng)產(chǎn)品價(jià)格波動(dòng)的影響因子,進(jìn)而建立了影響因子數(shù)據(jù)庫。使用MIV方法對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行變量篩選,最終選中10個(gè)變量作為BP神經(jīng)網(wǎng)絡(luò)的輸入項(xiàng),使用商品零售價(jià)格指數(shù)(糧食)作為網(wǎng)絡(luò)的輸出項(xiàng),訓(xùn)練后的網(wǎng)絡(luò)預(yù)測誤差均小于10%。改進(jìn)后的BP神經(jīng)網(wǎng)絡(luò)模型為農(nóng)產(chǎn)品價(jià)格預(yù)測提供了一種有效的預(yù)測工具。
[1] 程國強(qiáng),徐雪高.改革開放以來我國農(nóng)產(chǎn)品價(jià)格波動(dòng)的回顧[J].重慶工學(xué)院學(xué)報(bào):社會科學(xué)版,2009,23(4):1-3.
[2] 劉勇,王偉,易法海.我國通貨膨脹與農(nóng)產(chǎn)品價(jià)格經(jīng)濟(jì)增長動(dòng)態(tài)關(guān)系分析[J].生態(tài)經(jīng)濟(jì),2009(2):61-65.
[3] 李敬輝,范志勇.利率調(diào)整和通貨膨脹預(yù)期對大宗商品價(jià)格波動(dòng)的影響基于中國市場糧價(jià)和通貨膨脹關(guān)系的經(jīng)驗(yàn)研究[J].經(jīng)濟(jì)研究,2005(6):61-68.
[4] 姜長云,張曉敏.近年來我國農(nóng)產(chǎn)品成本變化的特點(diǎn)原因及趨勢分析[J].經(jīng)濟(jì)研究參考,2009(58):9-28.
[5] 黃季煜,仇煥廣,Michielk,等.發(fā)展生物燃料乙醇對我國區(qū)域農(nóng)業(yè)發(fā)展的影響分析[J].經(jīng)濟(jì)學(xué),2009,8(2):727-742.
[6] 張文軍,投資對農(nóng)產(chǎn)品價(jià)格波動(dòng)的傳導(dǎo)機(jī)制探究[J].廈門理工學(xué)院學(xué)報(bào),2011,19(3):90-94.
[7] 王超,鮑鋒,新一輪農(nóng)產(chǎn)品價(jià)格波動(dòng)的成因及對策[M].經(jīng)濟(jì)縱橫,2011(4):38-41.
[8] 劉峰,王儒敬,李傳席.ARIMA模型在農(nóng)產(chǎn)品價(jià)格預(yù)測中的應(yīng)用[J].計(jì)算機(jī)工程與應(yīng)用,2009(25):238-239,248.
[9] 李艷,劉軍,農(nóng)產(chǎn)品價(jià)格預(yù)測系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[M].湖北農(nóng)業(yè)科學(xué),2011,50(14):2976-2978.
[10] 羅曉曙.人工神經(jīng)網(wǎng)絡(luò)理論[M].桂林:廣西師范大學(xué)出版社,2005:31-32.
(責(zé)任編輯、校對:田敬軍)
The Construction and Implementation of the Prediction Model of Agricultural Product’s Price Based on the Improved BP Neural Network
WEI Ming-hua1,2, ZHENG Jin-gui2
(1. Computer Department, Fuzhou Polytechnic, Fuzhou 350007, China; 2. Agricultural Product Quality Institute, Fujian Agriculture and Forestry University, Fuzhou 350007, China)
An improved BP neural network model is proposed to improve the precision of the prediction of agricultural products. Firstly, the factors of price fluctuation of agricultural products are gotten through the qualitative analysis and then use the MIV method to choose the strong influent factors as the input nodes of a neural network. Find the optimal structure of BP network through the improved learning algorithm, and then use the improved model to realize the agricultural high precision simulation of the product price.
price of agricultural products; BP neural network; MIV; variable learning rate; momentum back propagation
TP389.1
A
1009-9115(2014)02-0066-03
10.3969/j.issn.1009-9115.2014.02.019
農(nóng)業(yè)部948項(xiàng)目(2012-z30)
2013-09-29
魏明樺(1980-),男,福建福州人,博士研究生,講師,研究方向?yàn)榫W(wǎng)絡(luò)技術(shù)、神經(jīng)網(wǎng)絡(luò)。