基于關(guān)聯(lián)規(guī)則的醫(yī)生診療數(shù)據(jù)挖掘系統(tǒng)的實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引言
數(shù)據(jù)挖掘從20世紀(jì)80年代提出到現(xiàn)在,不過短短20多年的時(shí)間,但其應(yīng)用已非常廣泛,不僅用于科研領(lǐng)域,在商業(yè)領(lǐng)域的應(yīng)用也毫不遜色,尤其是用于銀行、電信、保險(xiǎn)、交通、零售(如超級(jí)市場(chǎng))等領(lǐng)域。數(shù)據(jù)挖掘在醫(yī)學(xué)領(lǐng)域的應(yīng)用也有著廣泛的前景。在醫(yī)學(xué)領(lǐng)域存在著大量的數(shù)據(jù),包括病人病史、診斷、檢驗(yàn)、和治療的臨床信息,藥品管理信息,醫(yī)院管理信息等。數(shù)據(jù)挖掘應(yīng)用到醫(yī)學(xué)領(lǐng)域,對(duì)醫(yī)學(xué)數(shù)據(jù)進(jìn)行分析,提取隱含的有價(jià)值的信息能夠促進(jìn)醫(yī)院管理者作出明智決策、醫(yī)生對(duì)病人的正確診斷和治療。這對(duì)促進(jìn)人類健康、保持健康的生活質(zhì)量都有積極的意義。
1 基于關(guān)聯(lián)規(guī)則數(shù)據(jù)挖掘技術(shù)分析
1.1 數(shù)據(jù)挖掘概述
1.1.1 數(shù)據(jù)挖掘的定義
數(shù)據(jù)挖掘就是從大量的、不完全的、有噪聲的、模糊的、隨機(jī)的數(shù)據(jù)中,提取隱含在其中的、人們事先不知道的、但又是潛在的有用信息和知識(shí)的過程。這個(gè)定義包含幾層含義,數(shù)據(jù)源必須是真實(shí)的、大量的、含噪聲的;發(fā)現(xiàn)的是用戶感興趣的知識(shí);發(fā)現(xiàn)的知識(shí)要可接受、可理解、可運(yùn)用;并不要求發(fā)現(xiàn)放之四海而皆準(zhǔn)的知識(shí),僅需支持特定的發(fā)現(xiàn)問題。
1.1.2 數(shù)據(jù)挖掘的過程
數(shù)據(jù)挖掘過程一般需要經(jīng)歷數(shù)據(jù)準(zhǔn)備、數(shù)據(jù)開采、結(jié)果表述和解釋三個(gè)主要步驟。
(1)數(shù)據(jù)準(zhǔn)備。數(shù)據(jù)準(zhǔn)備是數(shù)據(jù)挖掘中的一個(gè)重要步驟,數(shù)據(jù)準(zhǔn)備是否做好將直接影響到數(shù)據(jù)挖掘的效率、準(zhǔn)確度以及最終模式的有效性。這個(gè)階段又可以進(jìn)一步分為三個(gè)子步驟:數(shù)據(jù)集成、數(shù)據(jù)選擇、數(shù)據(jù)預(yù)處理。
(2)數(shù)據(jù)開采。數(shù)據(jù)開采階段選定某個(gè)特定的數(shù)據(jù)挖掘算法(如關(guān)聯(lián)規(guī)則、分類、回歸、聚類等算法),用于搜索數(shù)據(jù)中的模式。這是數(shù)據(jù)挖掘過程中最關(guān)鍵的一步,也是技術(shù)難點(diǎn)。
(3)結(jié)果表述和解釋。根據(jù)最終用戶的決策目的,對(duì)提取的信息進(jìn)行分析,把最有價(jià)值的信息區(qū)分出來,并且通過決策支持工具提交給決策者。因此,這一步驟的任務(wù)不僅是把結(jié)果表達(dá)出來,還要對(duì)信息進(jìn)行過濾處理。如果不能令決策者滿意,需要重復(fù)以上的數(shù)據(jù)挖掘過程。
1.2 關(guān)聯(lián)規(guī)則概述
給定一個(gè)事務(wù)(交易)數(shù)據(jù)庫(kù),人們往往希望發(fā)現(xiàn)事務(wù)中的關(guān)聯(lián)事實(shí),即事務(wù)中一些項(xiàng)目的出現(xiàn)必定隱含著同次事務(wù)中其他項(xiàng)目的出現(xiàn),這是關(guān)聯(lián)規(guī)則的一個(gè)簡(jiǎn)單的描述。
設(shè)I ={t1,t2 ,-,tm} 是由m 個(gè)不同項(xiàng)目組成的集合,D 是交易數(shù)據(jù)庫(kù)(交易數(shù)據(jù)庫(kù)又稱事務(wù)數(shù)據(jù)庫(kù)),其中每一個(gè)交易或事務(wù)T 是I 中一些項(xiàng)目的集合,即T- I.每一個(gè)交易或事務(wù)T 都與一個(gè)惟一的標(biāo)識(shí)符TID 相聯(lián)。
對(duì)于項(xiàng)目集X-I,如果X-T,則交易或事務(wù)T 支持X.
如果X 中有k 個(gè)項(xiàng)目,則又稱X 為k- 項(xiàng)目集,或X 的長(zhǎng)度為k.
關(guān)聯(lián)規(guī)則是指形式如下的一種數(shù)據(jù)隱含關(guān)系:X -Y,其中X - I,Y-I,且X-Y = -.
關(guān)聯(lián)規(guī)則挖掘的任務(wù)是:在給定的交易或事務(wù)數(shù)據(jù)庫(kù)D 中,發(fā)現(xiàn)D 中所有的頻繁關(guān)聯(lián)規(guī)則。所謂頻繁關(guān)聯(lián)規(guī)則是指這些規(guī)則的支持度、置信度分別不低于用戶給定的最小支持度和最小置信度。
2 ARFDW 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
2.1 ARFDW系統(tǒng)框架需求分析
作為通用的數(shù)據(jù)挖掘框架,ARFDW 要提供對(duì)不同操作系統(tǒng)、不同處理平臺(tái)的支持;對(duì)異構(gòu)數(shù)據(jù)源的支持;支持多樣化、可插拔、可組合的數(shù)據(jù)轉(zhuǎn)換功能;提供統(tǒng)一的管理和調(diào)度功能;處理程序的繼承和開放性;要有清晰的框架處理層次以及對(duì)元數(shù)據(jù)的管理等。下面對(duì)框架的關(guān)鍵需求進(jìn)行描述。
2.1.1 建立挖掘主題
系統(tǒng)應(yīng)該支持挖掘主題的建立。在對(duì)被挖掘?qū)ο筮M(jìn)行充分分析并確定挖掘主題及數(shù)據(jù)來源后,系統(tǒng)能夠通過挖掘主題配置工具來創(chuàng)建挖掘主題及關(guān)聯(lián)維度,并生成相應(yīng)數(shù)據(jù)庫(kù)表及數(shù)據(jù)記錄映射對(duì)象。
2.1.2 異構(gòu)數(shù)據(jù)源數(shù)據(jù)抽取
作為通用框架,系統(tǒng)應(yīng)該支持盡可能多的異構(gòu)數(shù)據(jù)源,異構(gòu)數(shù)據(jù)源包括不同廠商、不同版本的數(shù)據(jù)庫(kù),不同格式的文本等。如ODBC 數(shù)據(jù)源、(非ODBC)各種關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)源、應(yīng)用數(shù)據(jù)、電子商務(wù)數(shù)據(jù)、各種文件格式中數(shù)據(jù)等;同時(shí)提供通用數(shù)據(jù)訪問接口:該接口能夠跨平臺(tái)、網(wǎng)絡(luò)訪問數(shù)據(jù),支持在不同類型數(shù)據(jù)源間建立連接,通過它可以屏蔽各種數(shù)據(jù)源之間的差異,為后序工作提供一個(gè)統(tǒng)一的數(shù)據(jù)視圖。
2.1.3 建立轉(zhuǎn)換規(guī)則
由于業(yè)務(wù)系統(tǒng)的開發(fā)一般會(huì)有一個(gè)較長(zhǎng)的時(shí)間跨度,這就造成同一種數(shù)據(jù)在業(yè)務(wù)系統(tǒng)中可能會(huì)有多種完全不同的存儲(chǔ)格式。這就要求ETL工具必須對(duì)抽取到的數(shù)據(jù)能進(jìn)行靈活的計(jì)算、合并、拆分等轉(zhuǎn)換操作,系統(tǒng)要能夠不斷地以插件形式添加轉(zhuǎn)換節(jié)點(diǎn)的種類,就可以不斷地增強(qiáng)ETL工具的功能,以應(yīng)付各種各樣的數(shù)據(jù)不一致的問題。
2.1.4 執(zhí)行定時(shí)任務(wù)
針對(duì)數(shù)據(jù)源的多樣性和可變性,ETL通過對(duì)從數(shù)據(jù)源到目標(biāo)數(shù)據(jù)倉(cāng)庫(kù)間的映射規(guī)則進(jìn)行元數(shù)據(jù)級(jí)別上的建模,使得整個(gè)抽取、轉(zhuǎn)換、裝載過程在元數(shù)據(jù)驅(qū)動(dòng)下能完全自動(dòng)調(diào)度執(zhí)行,同時(shí)也便于維護(hù)和擴(kuò)展。[!--empirenews.page--]
2.2 ARFDW總體框架設(shè)計(jì)
ARFDW 系統(tǒng)架構(gòu)模型如圖1 所示。首先,對(duì)被挖掘?qū)ο筮M(jìn)行充分分析,確定挖掘主題及數(shù)據(jù)來源,通過挖掘主題配置工具創(chuàng)建挖掘主題及關(guān)聯(lián)維度,并生成相應(yīng)數(shù)據(jù)庫(kù)表及數(shù)據(jù)記錄映射對(duì)象;其次,通過數(shù)據(jù)源配置工具對(duì)等待抽取的數(shù)據(jù)源數(shù)據(jù)的相關(guān)連接格式參數(shù)進(jìn)行配置,數(shù)據(jù)源配置好后系統(tǒng)會(huì)將輸入的數(shù)據(jù)通過數(shù)據(jù)對(duì)象化工具轉(zhuǎn)換為統(tǒng)一的XML 描述數(shù)據(jù)格式,并根據(jù)映射在基礎(chǔ)數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)保存表記錄;再次,通過轉(zhuǎn)換任務(wù)元數(shù)據(jù)配置工具生成數(shù)據(jù)轉(zhuǎn)換規(guī)則及對(duì)應(yīng)目標(biāo)主題,該部分實(shí)現(xiàn)需要用到功能節(jié)點(diǎn)以及設(shè)定任務(wù)中各個(gè)功能節(jié)點(diǎn)的執(zhí)行流程。配置好的任務(wù)將在任務(wù)列表中列出,可以手動(dòng)執(zhí)行,也可以通過總控調(diào)度配置自動(dòng)執(zhí)行。數(shù)據(jù)經(jīng)過ETL處理后會(huì)加載到挖掘庫(kù)對(duì)應(yīng)的主題中去。最后,通過基于關(guān)聯(lián)規(guī)則的挖掘算法對(duì)目標(biāo)數(shù)據(jù)進(jìn)行挖掘,并將條件的規(guī)則保存到規(guī)則庫(kù)。
2.3 ARFDW框架實(shí)現(xiàn)
整個(gè)系統(tǒng)框架結(jié)構(gòu)按照分層設(shè)計(jì)、實(shí)現(xiàn)?,F(xiàn)對(duì)關(guān)鍵層的實(shí)現(xiàn)進(jìn)行逐一描述。
數(shù)據(jù)持久層采用Hibernate,負(fù)責(zé)存儲(chǔ)、更新、刪除數(shù)據(jù)庫(kù)記錄等。Hibernate是一個(gè)用來處理O/R Mapping的持久層框架。技術(shù)本質(zhì)上是一個(gè)提供數(shù)據(jù)庫(kù)服務(wù)的中間件,該中間件屏蔽了不同數(shù)據(jù)庫(kù)之間的差異。它的工作原理是通過文件把值對(duì)象和數(shù)據(jù)庫(kù)表之間建立起一個(gè)映射關(guān)系,這樣,只需要通過操作這些值對(duì)象和Hibernate提供的一些基本類,就可以達(dá)到使用數(shù)據(jù)庫(kù)的目的。
Hibernate 使用數(shù)據(jù)庫(kù)和配置信息來為應(yīng)用程序提供持久化服務(wù)(以及持久的對(duì)象)。在這里,創(chuàng)建了接口IdaoSupport,該接口定義了所有對(duì)數(shù)據(jù)庫(kù)進(jìn)行的原子操作,DaoSupportHibernate3Imp 是其實(shí)現(xiàn)類,該類繼承了HibernateDaoSupport類,通過調(diào)用該類提供的方法來完成對(duì)數(shù)據(jù)庫(kù)的操作。
業(yè)務(wù)邏輯層采用Spring.Spring框架是一個(gè)分層架構(gòu),它的核心提供了一個(gè)管理業(yè)務(wù)對(duì)象以及它們之間依賴關(guān)系的方法。例如,應(yīng)用控制反轉(zhuǎn)(IOC),它可以特定一個(gè)數(shù)據(jù)訪問對(duì)象(DAO)去依賴于某一個(gè)數(shù)據(jù)源。
同時(shí),它允許開發(fā)者實(shí)現(xiàn)接口并在XML 文件中去定義其實(shí)現(xiàn)類。同時(shí)為了避免EJB的高度侵入性,實(shí)現(xiàn)無(wú)侵入性的目標(biāo),Spring 大量引入了JAVA 的Reflection 機(jī)制,通過動(dòng)態(tài)調(diào)用的方式避免硬編碼方式的約束,并在此基礎(chǔ)上建立了其核心組件BeanFactory,以此作為其依賴注入機(jī)制的實(shí)現(xiàn)基礎(chǔ)。
表示層采用基于MVC模式的Struts框架。MVC(模型-視圖-控制)設(shè)計(jì)模式將WEB層分為三類對(duì)象:代表數(shù)據(jù)的模型(Model)對(duì)象,顯示模型的視圖(View)對(duì)象以及響應(yīng)用戶輸入、處理業(yè)務(wù)流程的控制器(Controller)對(duì)象。
整個(gè)系統(tǒng)處理流程如下:
(1)當(dāng)系統(tǒng)第一次啟動(dòng)時(shí),應(yīng)用會(huì)根據(jù)部署描述文件Web.xml指向的applicationContext.xml中定義的內(nèi)容初始化數(shù)據(jù)庫(kù)連接池、進(jìn)行O-R Mapping映射、根據(jù)IoC實(shí)例化業(yè)務(wù)邏輯類。
(2)操作員登陸時(shí),進(jìn)行相應(yīng)的權(quán)限驗(yàn)證,如果驗(yàn)證通過,則初始化單例對(duì)象(InitSingleton),該對(duì)象保存了一些全局實(shí)例,用戶信息、角色信息、權(quán)限信息等。
(3)操作員通過系統(tǒng)界面(JSP)提交業(yè)務(wù)請(qǐng)求(業(yè)務(wù)信息保存在FormBean中),并通過struts-config.xml中的描述定位到控制器(Action),業(yè)務(wù)請(qǐng)求包括:業(yè)務(wù)編號(hào)、當(dāng)前步驟、執(zhí)行動(dòng)作等。
(4)控制器接收用戶請(qǐng)求,將FormBean中的信息傳遞到BO中,同時(shí)調(diào)用權(quán)限驗(yàn)證模塊(RightControl)進(jìn)行操作員權(quán)限驗(yàn)證。權(quán)限驗(yàn)證接口判斷當(dāng)前用戶對(duì)于請(qǐng)求的業(yè)務(wù)是否具有權(quán)限(只讀、可寫),將結(jié)果反饋給控制器。
(5)如果驗(yàn)證通過,控制器將根據(jù)用戶請(qǐng)求信息,調(diào)用系統(tǒng)啟動(dòng)時(shí)實(shí)例化的業(yè)務(wù)邏輯類進(jìn)行相應(yīng)業(yè)務(wù)處理。
(6)業(yè)務(wù)處理邏輯對(duì)象處理特定業(yè)務(wù)邏輯,當(dāng)需要CRUD(即Create、Read、Update、Delete)時(shí),會(huì)根據(jù)appli-cationContext.xml中通過set方法注入的DAO實(shí)例,執(zhí)行相應(yīng)的CRUD操作。
(7)業(yè)務(wù)處理完成后,控制器根據(jù)返回結(jié)果,將用戶頁(yè)面導(dǎo)向特定JSP,如果有需要,將返回的結(jié)果封裝成FormBean(與用戶界面相對(duì)應(yīng)的JavaBean,其屬性與用戶界面元素相對(duì)應(yīng))一并返回特定JSP.
3 結(jié)語(yǔ)
課題根據(jù)目前國(guó)內(nèi)外數(shù)據(jù)集成工具暴露出的問題,及目前醫(yī)生診療數(shù)據(jù)挖掘的現(xiàn)狀、技術(shù)及特點(diǎn)提出了ARFDW 自適應(yīng)模型框架的概念。該框架使用JAVA語(yǔ)言、對(duì)象持久化技術(shù)和XML技術(shù)構(gòu)建出跨平臺(tái)、多線程并發(fā)運(yùn)行、支持增量數(shù)據(jù)更新、靈活的數(shù)據(jù)挖掘系統(tǒng)架構(gòu)模型,并給出了設(shè)計(jì)和實(shí)現(xiàn)方案。