摘要:介紹一種利用數(shù)據(jù)挖掘技術(shù)開(kāi)發(fā)金融數(shù)據(jù)分析模塊的設(shè)計(jì)和實(shí)現(xiàn),使用Microsoft SQL Server Analysis Services服務(wù)技術(shù)進(jìn)行分析和預(yù)測(cè)。該模塊的運(yùn)行可以有效提高金融分析員的工作效率。
關(guān)鍵詞:數(shù)據(jù)挖掘;金融數(shù)據(jù)分析;Analysis Services
中圖分類號(hào):TP274文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2009)36-10604-02
The Implement of Financial Data Analysis Module Base on SSAS Technology
HE Ying-gang, CHEN Jian-xiong
(Chengyi College, Jimei University, Xiamen 361021, China)
Abstract: Introduces a sample of design method to develop financial data analysis module by using the Data Mining technology. This sample use Microsoft SQL Server Analysis Services technology for analysis and forecasting. In practice, the operation of this module can improve the work efficiency offinancial analysts.
Key words: data mining; financial data analysis; analysis services
目前許多金融交易系統(tǒng)都為用戶提供了技術(shù)指標(biāo)的編寫工具。在編寫指標(biāo)計(jì)算公式時(shí),往往有各種參數(shù)需要用戶進(jìn)行選擇和設(shè)置,合理的參數(shù)組合所得出的結(jié)果可以使得用戶作出正確判斷,但是這類金融系統(tǒng)中并未提供最佳參數(shù)搜索功能,這使得用戶需要耗費(fèi)許多時(shí)間對(duì)分析驗(yàn)證參數(shù)。隨著數(shù)據(jù)挖掘技術(shù)的成熟和發(fā)展,為這類問(wèn)題的解決提供了解決方法和途徑。
由于許多金融公司都有使用Microsoft SQL Server系列數(shù)據(jù)庫(kù)系統(tǒng)作為內(nèi)部系統(tǒng)的數(shù)據(jù)庫(kù)平臺(tái),而微軟公司提供的Microsoft SQL Server 2005 Analysis Services (SSAS) 通過(guò)服務(wù)器和客戶端技術(shù)的組合為客戶提供聯(lián)機(jī)分析處理 (OLAP) 和數(shù)據(jù)挖掘功能。這使得我們可以在不改變現(xiàn)有數(shù)據(jù)庫(kù)系統(tǒng)的前提下,在原有的公司業(yè)務(wù)系統(tǒng)的基礎(chǔ)上開(kāi)發(fā)數(shù)據(jù)挖掘分析模塊。基于SSAS本文提出了一種實(shí)現(xiàn)金融數(shù)據(jù)分析模塊的解決方案。
1 金融數(shù)據(jù)分析模塊的數(shù)據(jù)挖掘功能的設(shè)計(jì)
1.1 功能設(shè)計(jì)
金融數(shù)據(jù)分析模塊主要應(yīng)用于對(duì)指標(biāo)參數(shù)的搜索,尋找最合適的指標(biāo)參數(shù)值。所以系統(tǒng)應(yīng)具有的功能有:1)根據(jù)用戶的需要,提供指標(biāo)公式設(shè)計(jì)和參數(shù)設(shè)置;2)提供靈活直觀的圖形顯示;3)用戶能夠指定數(shù)據(jù)挖掘算法的參數(shù)值,并查看數(shù)據(jù)挖掘生成的規(guī)則。
1.2 結(jié)構(gòu)設(shè)計(jì)
數(shù)據(jù)分析模塊的設(shè)計(jì)采用了三層體系結(jié)構(gòu),分別為:1)數(shù)據(jù)訪問(wèn)層,實(shí)現(xiàn)對(duì)金融日志數(shù)據(jù)的采集、清理和轉(zhuǎn)換;2)數(shù)據(jù)挖掘業(yè)務(wù)層;3)分析結(jié)果表示層,表示層把各種參數(shù)組合所對(duì)應(yīng)的數(shù)據(jù)挖掘分析結(jié)果以圖形化或表格化的方式展現(xiàn)出來(lái),方便用戶能夠?qū)Ρ雀鞣N參數(shù)組合的優(yōu)劣。為了避免對(duì)數(shù)據(jù)庫(kù)系統(tǒng)性能造成影響,模塊使用獨(dú)立的數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)。開(kāi)發(fā)框架如圖1所示。
2 金融數(shù)據(jù)分析模塊的數(shù)據(jù)挖掘功能模塊的實(shí)現(xiàn)和關(guān)鍵技術(shù)
指標(biāo)公式參數(shù)的求解是一類系統(tǒng)優(yōu)化問(wèn)題。遺傳算法是一種求最優(yōu)解或近似最優(yōu)解的全局優(yōu)化搜索算法。使用遺傳算法比傳統(tǒng)的枚舉算法和啟發(fā)式算法具有諸多優(yōu)點(diǎn),例如:搜索使用評(píng)價(jià)函數(shù)啟發(fā),過(guò)程簡(jiǎn)單;搜索從群體出發(fā),具有并行性;與問(wèn)題領(lǐng)域無(wú)關(guān)的快速隨機(jī)搜索能力等等。由于SSAS所提供的數(shù)據(jù)挖掘算法中沒(méi)有包含遺傳算法,所以為了實(shí)現(xiàn)最優(yōu)參數(shù)搜索,必須在數(shù)據(jù)挖掘模塊中加入遺傳算法。本文將指標(biāo)計(jì)算公式的參數(shù)作為染色體基因,一種參數(shù)組合作為一個(gè)個(gè)體。然后根據(jù)個(gè)體基因數(shù)據(jù)生成指標(biāo)值,并對(duì)指標(biāo)值進(jìn)行數(shù)據(jù)挖掘和預(yù)測(cè),對(duì)預(yù)測(cè)結(jié)果的準(zhǔn)確性進(jìn)行評(píng)分,預(yù)測(cè)效果最好的參數(shù)組合將作為最佳選擇提供給用戶。遺傳算法實(shí)現(xiàn)可以參考有關(guān)文獻(xiàn)。本文所設(shè)計(jì)的主要處理流程如圖2所示。
在圖2流程中使用SSAS對(duì)每一種參數(shù)組合計(jì)算生成的指標(biāo)數(shù)據(jù)進(jìn)行數(shù)據(jù)挖掘分析和預(yù)測(cè)。SSAS是基于數(shù)據(jù)挖掘模型進(jìn)行處理的,數(shù)據(jù)挖掘模型是一個(gè)數(shù)據(jù)結(jié)構(gòu),包含了數(shù)據(jù)關(guān)系、多維數(shù)據(jù)的分組和預(yù)測(cè)分析、數(shù)據(jù)挖掘算法等。用SSAS進(jìn)行數(shù)據(jù)挖掘過(guò)程分為三個(gè)步驟:創(chuàng)建挖掘模型、訓(xùn)練挖掘模型和利用挖掘模型生成的規(guī)則進(jìn)行預(yù)測(cè)。
2.1 創(chuàng)建數(shù)據(jù)挖掘模型
開(kāi)發(fā)人員可以利用Visual Studio 2005內(nèi)置Analysis Services項(xiàng)目模板快速創(chuàng)建數(shù)據(jù)挖掘模型,也可以利用DMX數(shù)據(jù)挖掘查詢語(yǔ)言創(chuàng)建和處理數(shù)據(jù)挖掘模型。下面是一個(gè)利用關(guān)聯(lián)規(guī)則算法建立的外匯利潤(rùn)預(yù)測(cè)分析的挖掘模型的例子。選擇交易時(shí)間做為主鍵,該字段用來(lái)唯一表示某時(shí)間段內(nèi)外匯交易價(jià)格。
CREATE MINING MODEL DM (
Ftime Date KEY,
KvalueDoublediscrete,
DvalueDoublediscrete,
…….
ProfitLeveldiscrete PREDICT)
USING Microsoft_Association_Rules (Minimum_Probability = 0.3, MINIMUM_SUPPORT = 0.05)
2.2 訓(xùn)練挖掘模型
SSAS將挖掘模型保存在數(shù)據(jù)庫(kù)服務(wù)器端,然后訓(xùn)練挖掘模型生成數(shù)據(jù)挖掘規(guī)則。AMO(Analysis Management Object)是微軟提供給開(kāi)發(fā)人員使用的管理SSAS的主要接口,開(kāi)發(fā)人員可以使用AMO創(chuàng)建、管理和處理挖掘模型,立方體,分區(qū)等Analysis Services對(duì)象。以下是在戶端程序中使用AMO與Analysis Services進(jìn)行數(shù)據(jù)交互,訓(xùn)練挖掘模型的簡(jiǎn)單例子。
Svr=new Server();
Svr.Connect(@”Provider=SQLNCLI.1;Data Source=SSASDM\\Store;……”);
Db=svr.Databases.GetByName(“DM”); //獲取數(shù)據(jù)挖掘模型對(duì)象
Db.Process(ProcessType.ProcessFull); //調(diào)用訓(xùn)練和處理挖掘模型
Svr.Disconnect();
2.3 預(yù)測(cè)
挖掘模型訓(xùn)練完后,SSAS生成挖掘規(guī)則并可以用來(lái)進(jìn)行預(yù)測(cè)。本文算法流程中將指標(biāo)數(shù)據(jù)預(yù)留一部分用于預(yù)測(cè),然后使用SSAS提供的SQL擴(kuò)展語(yǔ)言,實(shí)現(xiàn)預(yù)測(cè)任務(wù)。以下是一個(gè)客端程序的預(yù)測(cè)連接例子:
AdomdConnectionConn=new AdomdConnection(……);
AdomdClient.AdomdConnand Comm=Conn.CreateCommand();
AdomdDataReader reader;
Comm.CommandText=String.Format(@”Select Predict( [profit Level] ) , PredictProbability( [Profit Level] ) From IndexData NATURAL PREDICTON JOIN (Select {0} as [Kvalue],{1} as [Dvalue],… as t”,R1,R2,…);
//構(gòu)建數(shù)據(jù)挖掘預(yù)測(cè)語(yǔ)句
Reader=Comm.ExecuteReader();
上述第四行程序語(yǔ)句涉及數(shù)據(jù)挖掘模型和數(shù)據(jù)測(cè)試表,使用一個(gè)實(shí)例集進(jìn)行預(yù)測(cè),返回預(yù)測(cè)結(jié)果數(shù)據(jù)表格。
3 總結(jié)
該文分析了一種金融數(shù)據(jù)分析模塊的設(shè)計(jì)方法和實(shí)現(xiàn),該模塊可以被重復(fù)開(kāi)發(fā)和利用。若用戶自定義新的指標(biāo)計(jì)算公式,只需要修改數(shù)據(jù)挖掘模型和預(yù)測(cè)連接語(yǔ)句即可運(yùn)行。在實(shí)際應(yīng)用中,該系統(tǒng)模塊的原型證明能夠幫助金融分析員提高工作效率。
參考文獻(xiàn):
[1] Zhao Huitang.Data Mining with SQL server 2005[M].Wiley Publishing,Inc.2007.
[2] 張濤.基于MS Analysis Services多維分析系統(tǒng)的實(shí)現(xiàn)[J].哈爾濱理工大學(xué)學(xué)報(bào),2003(6):16-18.
[3] Ryan B.Microsoft SQL Server 2005 Analysis Services[M].Microsoft Press,2007.
[4] 鄭宇軍,杜家興.SQL Server 2005+Visual C#2005專業(yè)開(kāi)發(fā)精解[M].北京:清華大學(xué)出版社,2007.