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