李雅莉
(寶雞文理學院 電子電氣工程系,陜西 寶雞 721016)
銷售分析是通過對已有數據的多角度分析,獲取有價值的信息,幫助企業做出合理的決策。而銷售預測是在銷售分析的基礎上,對影響市場供求變化的諸多因素及過去和現在的銷售資料進行分析、研究,運用科學的方法,對未來市場產品的供求發展趨勢進行估計和推測。根據銷售預測結果,企業可以科學制訂各種計劃。
為了方便企業決策者使用,本文主要研究如何在客戶端通過微軟VB 6.0設計一款基于BP神經網絡的零售業銷售預測系統,通過簡單的界面操作,使企業決策者很清楚地了解未來產品的發展趨勢,從而制定出科學合理的決策,及時有效地應對市場變化。
神經網絡是由大量簡單神經元相互連接構成的復雜網絡,其通過模擬人腦反復學習技術來工作,對給出的樣本數據,神經網絡通過類似人類記憶過程的方式學習數據中的統計規律,歸納出能描述樣本特征的數據模型,然后用已學會的數據模型進行預測處理。
BP網絡是目前應用最為廣泛的一種神經網絡,具有很強的映射能力,可以實現輸入和輸出間的任意非線性映射。BP網絡一般由一個輸入層、一個或多個隱含層以及一個輸出層組成,是通過誤差反向傳播學習算法來修正網絡的權值和閾值的。由于BP算法采用梯度下降法來收斂實際輸出與理想輸出之間誤差,網絡有可能陷入局部極小值。可采用附加動量與自適應學習速率相結合的方法來改進算法。
在基于BP神經網絡的零售業銷售預測系統中,采用兩層C/S結構進行設計,包括數據倉庫層和客戶端層,如圖1所示。

圖1 銷售預測系統結構
(1)數據倉庫層 按照銷售預測主題需要,在Microsoft SQL Server 2000下設計銷售預測數據倉庫,完成數據抽取、清理和轉換任務,將數據裝載到數據倉庫中。
(2)客戶端層 利用微軟的VB 6.0開發一個良好的人機交互系統,能實現BP神經網絡的訓練及對銷售量和銷售利潤的預測,將結果以曲線圖及數據的方式呈現給用戶,供用戶決策使用。
系統按照模塊化思想進行功能設計開發,其功能模塊如圖2所示。

圖2 系統的功能
以銷售預測為主題的數據倉庫創建好后,利用數據轉換服務創建要進行數據提取轉換加載的DTS包以及數據更新的DTS包,在客戶端利用DTSPkg.dll動態鏈接庫提供的LoadFromSQLServer方法,執行遠程DTS包來完成。
此模塊主要是從數據倉庫中為BP網絡提取所需要的數據,并保存在數據倉庫的臨時數據表中,供BP神經網絡訓練、檢測及預測使用。當數據倉庫中的數據發生變化,調用此功能模塊能實現數據的同步更新。
在SQL Server 2000下創建choicedata包,在執行SQL任務屬性中書寫SQL語句,完成從數據倉庫的維表和事實表中以月為粒度提取商品的銷售時間,商品的月平均價格,購買此商品顧客的平均收入,本月此商品的銷售量,本月此商品的銷售利潤并保存在數據倉庫的臨時數據表中。圖3為所創建的choicedata包,圖4為包中第一個執行SQL任務的屬性內容。數據的提供不是一次就能完成的,此包共分10次完成。在客戶端通過執行遠程DTS包來實現。

圖3 DTS包

圖4 SQL任務屬性
先進行網絡模型訓練,根據預測時間和商品類型,系統會自動從數據倉庫的臨時數據表中提取此類商品的銷售信息,啟動后臺MATLAB仿真平臺,進行BP預測模型訓練和學習。其次對模型進行檢測,如果誤差太大,重新訓練。將訓練好的網絡模型保存,供預測使用。最后在預測界面,根據預測時間和商品類型進行預測,結果以數據和圖形形式輸出。
網絡訓練和模型檢測不是每次都需要運行,當數據倉庫中的銷售信息發生變化后,網絡模型就需要及時更新。
通過銷售量的網絡預測,就可以得出在預測時間內預測商品的月銷售量,為決策者提供有效的幫助。
同銷售量預測方式一樣,最終得到預測模型,可以預測出某商品的月銷售利潤。
Visual Basic是Microsoft公司推出的面向對象的可視化集成編程系統。在VB中利用ADO(ActiveX Data Objects)控件能夠訪問數據庫系統,ADO控件能訪問的數據,除了標準的關系數據庫中的數據之外,還包括郵件數據,Web上的文本或圖形,目錄服務等。ADO訪問數據是通過OLE DB來實現的[1]。
在VB中要訪問數據倉庫,先要連接數據倉庫,通過下列代碼可連接到數據倉庫。
Set cn = New ADODB.connection
cn.ConnectionString = "Provider =SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=數據倉庫名;Data Source=服務器名"
cn.Open
Microsoft公司的數據轉換工具DTS通過OLE DB接口能夠在關系數據源、非關系數據源以及ODBC數據源之間轉移數據,可以自動或交互地從多個異構數據源向數據倉庫裝入數據;DTS支持使用VBScript或JavaScript等腳本語言創建自定義的轉換腳本,也允許使用編程語言(如VisualBasic或VisualC++)編寫自定義的組件,能夠在轉換中對數據進行校驗、清理等各種操作。集成在SQL Server 2000中的DTS可以自動調度導入或操作任務,也可以使用SQL代理服務來進行調度[2]。
通過DTS設計器創建的數據抽取、清理、轉換和加載的DTS包,數據更新及模型數據提取的DTS包,在VB中可以用下列代碼遠程執行。
Dim MyPackage As DTS.Package
Set MyPackage = New DTS.Package
With MyPackage
.LoadFromSQLServer"服務器名","用戶名","密碼",DTSSQLStgFlag_Default,,,,"DTS包名"
.Execute
ActiveX部件是Microsoft公司提供的一種用于模塊集成的新協議,它是VB工具箱的擴充部分。在VB下通過ActiveX自動化接口可將MATLAB作為Visual Basic語言的一個ActiveX部件調用,實現 MATLAB 與 VB 的集成[3-6]。
在VB應用程序中用ActiveX部件實現MATLAB與VB的集成,代碼如下:
Dim Matlab As Object(在變量聲明部分申明要調用MATLAB的ActiveX)
SetMatlab = CreateObject("Matlab.Application")(鏈接 MATLAB的ActiveX部件)
Matlab.Execute(“待執行的MATLAB命令語句”) (執行MATLAB命令)
Call MatLab.Quit (退出 MATLAB)
網絡訓練界面中,網絡參數都設計成可以變化的值,這樣的網絡模型更具有靈活性。

圖5 模型訓練界面

圖6 模型檢驗界面

圖7 模型銷售量預測界面
本系統界面友好,操作簡單,利用此系統可以對零售業的商品銷售量和銷售利潤進行合理預測,通過預測曲線圖和具體的預測數據幫助決策人員制訂科學合理的采購、庫存及營銷計劃。
[1] 李雅莉.決策支持系統中數據倉庫的設計[J].中國管理信息化,2009(17):84-87.
[2] 陳鴻雁.保險數據倉庫數據抽取的設計與實現[J].中國金融電腦,2011(4):48-52.
[3] 隗燕琳,陳進明.基于VB與MATLAB的混合編程方法[J].計算機與數字工程,2013(8):1388-1390.
[4] 李波,曹洪奎.VB 與 MATLAB 技術的研究[J].渤海大學學報:自然科學版,2009,30(1):89-92.
[5] 王新態,曹爽,丁海勇.VB調用MATLAB神經網絡工具箱在測繪軟件設計中的應用[J].測繪通報,2011(11):59-62.
[6] 陳麗芳,馮力靜.基于VB與MATLAB集成技術的預測系統設計與實現[J].河北理工大學學報:自然科學版,2010,32(1):34-38.