【摘要】數(shù)據(jù)挖掘技術(shù)則是商業(yè)智能(Business Intelligence)中最高端的,最具商業(yè)價值的技術(shù)。數(shù)據(jù)挖掘是統(tǒng)計學、機器學習、數(shù)據(jù)庫、模式識別、人工智能等學科的交叉,隨著海量數(shù)據(jù)搜集、強大的多處理器計算機和數(shù)據(jù)挖掘算法等基礎(chǔ)技術(shù)的成熟,數(shù)據(jù)挖掘技術(shù)高速發(fā)展,成為21世紀商業(yè)領(lǐng)域最核心競爭力之一。本文從設(shè)計思路、系統(tǒng)架構(gòu)、模塊規(guī)劃等方面分析了數(shù)據(jù)挖掘系統(tǒng)設(shè)計技術(shù)。
【關(guān)鍵詞】數(shù)據(jù)挖掘;商業(yè)智能;技術(shù)分析
引言
數(shù)據(jù)挖掘是適應(yīng)信息社會從海量的數(shù)據(jù)庫中提取信息的需要而產(chǎn)生的新學科。它可廣泛應(yīng)用于電信、金融、銀行、零售與批發(fā)、制造、保險、公共設(shè)施、政府、教育、遠程通訊、軟件開發(fā)、運輸?shù)雀鱾€企事業(yè)單位及國防科研上。數(shù)據(jù)挖掘應(yīng)用的領(lǐng)域非常廣闊,廣闊的應(yīng)用領(lǐng)域使用數(shù)據(jù)挖掘的應(yīng)用前景相當光明。我們相信,隨著數(shù)據(jù)挖掘技術(shù)的不斷改進和日益成熟,它必將被更多的用戶采用,使企業(yè)管理者得到更多的商務(wù)智能。
1、參考標準
1.1挖掘過程標準:CRISP-DM
CRISP-DM全稱是跨行業(yè)數(shù)據(jù)挖掘過程標準。它由SPSS、NCR、以及DaimlerChrysler三個公司在1996開始提出,是數(shù)據(jù)挖掘公司和使用數(shù)據(jù)挖掘軟件的企業(yè)一起制定的數(shù)據(jù)挖掘過程的標準。這套標準被各個數(shù)據(jù)挖掘軟件商用來指導(dǎo)其開發(fā)數(shù)據(jù)挖掘軟件,同時也是開發(fā)數(shù)據(jù)挖掘項目的過程的標準方法。挖掘系統(tǒng)應(yīng)符合CRISP-DM的概念和過程。
1.2ole for dm
ole for dm是微軟于2000年提出的數(shù)據(jù)挖掘標準,主要是在微軟的SQL SERVER軟件中實現(xiàn)。這個標準主要是定義了一種SQL擴展語言:DMX。也就是挖掘系統(tǒng)使用的語言。標準定義了許多重要的數(shù)據(jù)挖掘模型定義和使用的操作原語。相當于為軟件提供商和開發(fā)人員之間提供了一個接口,使得數(shù)據(jù)挖掘系統(tǒng)能與現(xiàn)有的技術(shù)和商業(yè)應(yīng)用有效的集成。我們在實現(xiàn)過程中發(fā)現(xiàn)這個標準有很多很好的概念,但也有一些是勉為其難的,原因主要是挖掘系統(tǒng)的整體概念并不是非常單純,而是像一個發(fā)掘信息的方法集,所以任何概念并不一定符合所有的情況,也有一些需要不斷完善和發(fā)展中的東西。
1.3PMML
PMML是1999年由DMG發(fā)布了1.0版本,他主要是一個基于XML的模型描述語言,利用XML的描述能力來表達各種挖掘模型和規(guī)則。標準化的描述使得各個不同的廠商的軟件之間可以共享,交換這些挖掘模型。所以他主要是一種模型和規(guī)則的描述語言。
1.4對于標準的基本判斷
CRISP-DM的流程已經(jīng)成為業(yè)界的基本認識,但他更像一個項目指導(dǎo)思想,而不是單純硬性規(guī)范。ole for dm規(guī)范了挖掘模型和操作原語,使挖掘軟件能有效,簡單的整合進現(xiàn)有的企業(yè)軟件架構(gòu),對于推動挖掘軟件的使用和普及意義非凡。但ole for dm的規(guī)則模型對于結(jié)構(gòu)復(fù)雜,形態(tài)各異的模型規(guī)則用簡單的平面表來表示就顯得非常怪異,而PMML正好彌補了這個缺陷,PMML利用了XML的描述能力,能有效的描述挖掘模型和規(guī)則。
挖掘服務(wù)器主要以上我們對于這些標準的基本判斷為基礎(chǔ),吸收CRISP-DM和ole for dm的核心的優(yōu)良概念,在實際開發(fā)中我們也是根據(jù)實際需求來拓展了一些概念和修正了一些做法,為客戶和開發(fā)使用人員提供更好的軟件。
2、軟件功能設(shè)計
2.1設(shè)計思想
數(shù)據(jù)挖掘系統(tǒng)的構(gòu)架設(shè)計采用如下的原則:
采用分層的設(shè)計,模塊化的原則
采用先進和成熟的技術(shù)
使用C++語言使用(C/C++語言是實現(xiàn)服務(wù)器級別軟件的首選);使用泛型思想,面向?qū)ο蠹夹g(shù);使用STL容器或開發(fā)STL更優(yōu)化的C++容器。
標準性
系統(tǒng)的設(shè)計和開發(fā)遵循國際標準和行業(yè)標準;符合CRISP-DM規(guī)定的數(shù)據(jù)挖掘項目實施的過程流程標準,遵循ole for dm規(guī)范中挖掘模型和操作原語;使用DMX作為用戶的接口來驅(qū)動數(shù)據(jù)挖掘過程。
良好的可擴展性
系統(tǒng)支持多個層面的可擴展性,通過快速開發(fā)/重組、參數(shù)配置等多個方面使得系統(tǒng)可以實現(xiàn)客戶未來不斷變化的需求;系統(tǒng)有合理的層次結(jié)構(gòu);要有較強的擴展能力,可快速方便的插入新算法;系統(tǒng)要求支持平臺無關(guān)性,能夠適應(yīng)多種主流主機平臺、數(shù)據(jù)庫平臺、中間件平臺,具有較強的跨系統(tǒng)平臺的能力。系統(tǒng)能適應(yīng)不同的網(wǎng)絡(luò)結(jié)構(gòu),可根據(jù)業(yè)務(wù)的發(fā)展靈活擴展硬件產(chǎn)品。
2.2系統(tǒng)架構(gòu)體系
根據(jù)架構(gòu)分析和設(shè)計思想產(chǎn)生系統(tǒng)的架構(gòu)圖,并對架構(gòu)圖進行描述,說明分層的原因、層次的職責。首先從系統(tǒng)整體架構(gòu)來闡述,然后對數(shù)據(jù)挖掘服務(wù)器進一步分層,模塊化,并完整說明每層實現(xiàn)的功能。
2.3系統(tǒng)整體架構(gòu)
上面的架構(gòu)圖由:數(shù)據(jù)層、挖掘服務(wù)器層、驅(qū)動層和客戶層組成。
數(shù)據(jù)層:由業(yè)務(wù)系統(tǒng)的各個數(shù)據(jù)庫或數(shù)據(jù)倉庫組成。通過ODBC或相應(yīng)的驅(qū)動為挖掘服務(wù)器層提供數(shù)據(jù)支持。
挖掘服務(wù)器層:實現(xiàn)對數(shù)據(jù)進行預(yù)處理,包括主成分分析、抽樣、過濾、投影、離散等,創(chuàng)建、訓(xùn)練、評估模型,預(yù)測,修改模型參數(shù),刪除規(guī)則,刪除模型等一系列功能。本層通過Socket與上面的驅(qū)動層交互,接收驅(qū)動層的DMX語句,執(zhí)行完成后作出響應(yīng)并返回結(jié)果到上一層。
驅(qū)動層:根據(jù)客戶層的具體平臺分為JAVA驅(qū)動和C++驅(qū)動,驅(qū)動層提供API接口供客戶端調(diào)用。類似于數(shù)據(jù)庫系統(tǒng)中的JDBC驅(qū)動和ODBC驅(qū)動。
客戶層:處于系統(tǒng)的最上層。系統(tǒng)最終用戶的使用界面和設(shè)備。包括基于瀏覽器的瘦客戶端和基于GUI的胖客戶端應(yīng)用。
3、數(shù)據(jù)挖掘服務(wù)器架構(gòu)
本架構(gòu)圖是對服務(wù)器客戶端架構(gòu)的進一步分層,模塊化后的描述。上面的架構(gòu)圖由數(shù)據(jù)源接口層、核心服務(wù)層、傳輸層和用戶驅(qū)動(接口)層組成。
數(shù)據(jù)源接口層:提供獲取數(shù)據(jù)的接口。
核心服務(wù)層:由許多核心服務(wù)單元組成,包括會話管理、DMX解析、DMX引擎、算法、模型管理、內(nèi)存管理、異步框架、持久化管理、并發(fā)控制、異常處理和計算與排序緩沖區(qū)等。
傳輸層:用于獲取上層的輸入,并向上層返回結(jié)果。
用戶驅(qū)動(接口)層:用戶使用DMX語句提交給本層完成模型管理、模型訓(xùn)練、模型預(yù)測等功能。
4、模塊概要設(shè)計
4.1內(nèi)存管理
4.1.1服務(wù)器內(nèi)存。系統(tǒng)內(nèi)存主要分為3塊:系統(tǒng)管理模型和規(guī)則的內(nèi)存,用于排序及其它計算操作的緩沖區(qū)內(nèi)存,用戶連接私有內(nèi)存。
內(nèi)容管理的目標是實現(xiàn):不產(chǎn)生內(nèi)存碎片;內(nèi)存不會泄露;內(nèi)存分配和刪除要快;盡量做到總是有內(nèi)存可用。
4.1.2大數(shù)據(jù)量支持。數(shù)據(jù)挖掘服務(wù)器提供對巨大數(shù)據(jù)量的支持。當然,有些算法對于大數(shù)據(jù)量是沒有意義的,比如說神經(jīng)網(wǎng)絡(luò),這是由算法本身的特征決定的。數(shù)據(jù)挖掘服務(wù)器可以支持大量數(shù)據(jù),但也有可能導(dǎo)致計算量的急劇增加,所以相應(yīng)的計算機也應(yīng)該比較強勁。用戶可以通過一個參數(shù)MaxMemoryBuffer來設(shè)置某一次處理可以使用的最大內(nèi)存,如果所需內(nèi)存超過這個數(shù)值,系統(tǒng)將使用用戶的硬盤空間來處理數(shù)據(jù),所以如果用戶希望有比較大的內(nèi)存,希望優(yōu)化性能的話可以設(shè)大這個參數(shù),盡可能將數(shù)據(jù)在內(nèi)存處理。
4.1.3客戶端數(shù)據(jù)集。BI系統(tǒng)往往工作在巨大的數(shù)據(jù)量的環(huán)境中。所以挖掘服務(wù)器是以效率為優(yōu)先考慮設(shè)計的,盡量使用更少的內(nèi)存,更少的代碼來加快執(zhí)行速度。挖掘服務(wù)器的驅(qū)動中,結(jié)果集有三種數(shù)據(jù)緩沖類型,對應(yīng)著不同的用戶需求和資源(內(nèi)存)需求的選項:不緩沖數(shù)據(jù)集,緩沖一行數(shù)據(jù)集(包括該行的所有子表),緩沖整個數(shù)據(jù)集。
不緩沖數(shù)據(jù)集提供深度單向遍歷能力。特點是只使用很少的內(nèi)存。這種數(shù)據(jù)集的內(nèi)存需求為除了連接會使用一個網(wǎng)絡(luò)傳輸?shù)木彌_區(qū)以外,該數(shù)據(jù)集幾乎不會申請其它任何內(nèi)存,這種情況對于內(nèi)存使用苛刻的用戶使用,或作為更底層的代碼集成進用戶的系統(tǒng),這種低資源要求是非常適合的。但不緩沖數(shù)據(jù)集付出的代價是在結(jié)果集中有嵌套表的情況下順序來讀取這些嵌套表。這個概念是遞歸的,也就是說有多層嵌套表時,必須也是按深度遍歷的方式來讀取。
緩沖一行數(shù)據(jù)集提供主數(shù)據(jù)集上單向遍歷,子所有嵌套表隨機遍歷。特點是內(nèi)存需求適中,遍歷能力能滿足大多數(shù)需求。這個選項是默認的選項。這種數(shù)據(jù)集至少會緩沖主數(shù)據(jù)集的任意一行數(shù)據(jù),包括該行的所有子嵌套表。系統(tǒng)會分配一個適當大小的內(nèi)存池來分配所生成的結(jié)果集對象。這些內(nèi)存在在用戶遍歷完一行時釋放,接下來被重用。
全緩沖數(shù)據(jù)集提供主數(shù)據(jù)集,子嵌套表的隨機訪問能力,但在數(shù)據(jù)集比較大時會占用比較大的內(nèi)存。如果對數(shù)據(jù)集要求隨機訪問的話可以使用這種數(shù)據(jù)集。
用戶在使用數(shù)據(jù)集時可以根據(jù)使用需求,資料意味著狀況來決定使用什么類型的數(shù)據(jù)集。圖中灰色部分表示各自占用的內(nèi)存。
4.2挖掘算法
數(shù)據(jù)挖掘服務(wù)器系統(tǒng)將算法分離出來,系統(tǒng)為算法的接入提供統(tǒng)一的接口,將算法當成一種可插入式的模塊。從系統(tǒng)框架的角度來看,并不關(guān)心算法是如何實現(xiàn)的。這種設(shè)計無疑使本系統(tǒng)有很強的可擴展性,將來可以方便的插入新的數(shù)據(jù)挖掘算法。
系統(tǒng)實現(xiàn)的挖掘算法應(yīng)基本覆蓋目前主流的挖掘算法,能滿足用戶各種數(shù)據(jù)挖掘任務(wù)需求。算法實現(xiàn)中充分考慮運行速度和內(nèi)存的使用,力求達到最佳的運行效率。多個算法只掃描一遍輸入數(shù)據(jù)集以實現(xiàn)支持大數(shù)據(jù)量的要求,對部分挖掘算法考慮增量挖掘。
4.3數(shù)據(jù)源
4.3.1統(tǒng)一數(shù)據(jù)源架構(gòu)。統(tǒng)一數(shù)據(jù)源是產(chǎn)品應(yīng)支持的數(shù)據(jù)源架構(gòu),挖掘服務(wù)器使用其中的平面格式部分(即表或類表的一維數(shù)據(jù))。統(tǒng)一數(shù)據(jù)源的概念是在企業(yè)的信息系統(tǒng)中提供統(tǒng)一接口的數(shù)據(jù)源接口,而不管數(shù)據(jù)實際是從不同的數(shù)據(jù)庫、文件、Web Service或其它接口提供的。
4.3.2數(shù)據(jù)源連接池。如果數(shù)據(jù)來源是數(shù)據(jù)庫,用戶可以對連接池進行設(shè)置。
4.3.3數(shù)據(jù)源種類。挖掘系統(tǒng)現(xiàn)在支持平面數(shù)據(jù)源格式,包括ORACLE(原生接口),DB2(原生接口),及ODBC接口的數(shù)據(jù)源,及文本文件。
4.4異常處理
為了最大程度實現(xiàn)異常處理的通用性、可擴展性以及可配置性,系統(tǒng)采用統(tǒng)一的異常處理框架,并且提供統(tǒng)一的異常處理接口。通過統(tǒng)一配置錯誤信息,各模塊中不論任何地方,只需調(diào)用此唯一的接口,框架就會根據(jù)配置信息執(zhí)行需要的異常處理。
參考文獻
[1]Microsoft公司2000年《Microsoft OLE DB for Data Mining Specification》微軟的數(shù)據(jù)挖掘規(guī)范,此規(guī)范中的DMX定義了模型和使用的操作原語
[2]SIG組織 1999年《cross-industry standard process for data mining》跨行業(yè)數(shù)據(jù)挖掘標準流程標準
作者簡介
蔣勇杰(1982-)男,漢族,廣西桂林人,目前在中國人民大學攻讀管理學碩士研究生學位,現(xiàn)在中國儲備糧管理總公司主要從事項目管理工作