岳根霞,劉金花,劉 峰
(山西醫(yī)科大學(xué)汾陽學(xué)院,山西 汾陽 032200)
醫(yī)學(xué)界面臨著海量、非結(jié)構(gòu)化數(shù)據(jù)處理的嚴(yán)峻挑戰(zhàn),如何處理醫(yī)療海量數(shù)據(jù)成為研究熱點(diǎn)。醫(yī)療大數(shù)據(jù)中涵蓋了各類疾病的發(fā)病原因、發(fā)病歷程、患病癥狀、治療方案、實(shí)際案例等大量數(shù)據(jù)。由于醫(yī)療行業(yè)正在逐漸發(fā)展,醫(yī)療技術(shù)也在不斷提高,因此治療方案以及治療結(jié)果產(chǎn)生的數(shù)據(jù)都不盡相同,而醫(yī)療大數(shù)據(jù)是按照時(shí)間順序存儲(chǔ)的,未經(jīng)過整合處理的醫(yī)療大數(shù)據(jù)需要消耗大量的時(shí)間調(diào)取,為此提出醫(yī)療大數(shù)據(jù)的分類方法。醫(yī)療大數(shù)據(jù)分類方法的運(yùn)行建立在數(shù)據(jù)完整的基礎(chǔ)上,當(dāng)醫(yī)療大數(shù)據(jù)不完整時(shí)極易出現(xiàn)數(shù)據(jù)分類偏差的情況,導(dǎo)致數(shù)據(jù)的分類結(jié)果混亂,失去了醫(yī)療大數(shù)據(jù)分類的意義。數(shù)據(jù)挖掘與處理的首要問題是數(shù)據(jù)缺失,數(shù)據(jù)集的完整是數(shù)據(jù)挖掘的成功與否的關(guān)鍵,通過填補(bǔ)缺失數(shù)據(jù),得到一個(gè)完整的數(shù)據(jù)集。
在數(shù)據(jù)填補(bǔ)完成的基礎(chǔ)上,利用數(shù)據(jù)分類方法處理大量混亂而復(fù)雜的醫(yī)療數(shù)據(jù),可以提升數(shù)據(jù)的邏輯性,方便數(shù)據(jù)的查找。在數(shù)據(jù)分類計(jì)數(shù)發(fā)展歷程中,使用范圍較廣的幾個(gè)計(jì)數(shù)包括神經(jīng)網(wǎng)絡(luò)下的分類方法[1]和遺傳算法下的分類方法[2]。在醫(yī)療大數(shù)據(jù)的分類過程中分別使用不同的技術(shù)可以針對(duì)不同的分類需求得到更加符合數(shù)據(jù)特點(diǎn)的分類結(jié)果,然而經(jīng)過長(zhǎng)時(shí)間的應(yīng)用研究發(fā)現(xiàn),現(xiàn)階段使用的分類方法均存在迭代時(shí)間長(zhǎng)的問題。為了解決上述問題,提出在決策樹算法下的醫(yī)療大數(shù)據(jù)分類處理方法。這種算法通過構(gòu)建決策樹,利用已知各種情況的發(fā)生概率來求取凈現(xiàn)值在有效范圍內(nèi)的期望值的概率,最后判斷分類的可行性。決策樹算法具有更高的分類精確度,因此將該技術(shù)應(yīng)用到醫(yī)療數(shù)據(jù)的分類中,使其更好地服務(wù)于醫(yī)療大數(shù)據(jù)的處理,從患者數(shù)據(jù)中挖掘出有用的信息輔助醫(yī)生為病人診斷。
醫(yī)療大數(shù)據(jù)填補(bǔ)與分類方法的設(shè)計(jì)目的是為了給醫(yī)療人員和醫(yī)療行業(yè)提供完整且準(zhǔn)確的醫(yī)療數(shù)據(jù),通過數(shù)據(jù)的分類可以實(shí)現(xiàn)指定數(shù)據(jù)的快速查找[3]。醫(yī)療大數(shù)據(jù)的填補(bǔ)與分類方法的實(shí)現(xiàn),需要建立在大量的醫(yī)療數(shù)據(jù)的基礎(chǔ)上,因此首先在醫(yī)療管理系統(tǒng)中挖掘需要的醫(yī)療數(shù)據(jù),數(shù)據(jù)挖掘的具體流程如圖1所示。
圖1 數(shù)據(jù)挖掘流程圖
圖1的數(shù)據(jù)挖掘流程表明,數(shù)據(jù)挖掘的基本步驟是通過以下幾個(gè)迭代組成的,其中包括數(shù)據(jù)的清理、數(shù)據(jù)集成、數(shù)據(jù)選擇、數(shù)據(jù)變化、挖掘?qū)崿F(xiàn)、模式評(píng)估以及知識(shí)表示。其中數(shù)據(jù)清洗的目的是過濾掉海量數(shù)據(jù)中的無效值和差異值,通過數(shù)據(jù)集成將不同來源、不同格式的數(shù)據(jù)整合,數(shù)據(jù)選擇主要是按照數(shù)據(jù)的處理要求,選擇數(shù)據(jù)挖掘范圍與數(shù)據(jù)類型,知識(shí)表示是利用可視化技術(shù)將數(shù)據(jù)挖掘的結(jié)果顯示到屏幕上[4]。另外數(shù)據(jù)挖掘的實(shí)現(xiàn)是在特定的挖掘算法和挖掘規(guī)則下進(jìn)行的,在此次醫(yī)療大數(shù)據(jù)填補(bǔ)及分類方法設(shè)計(jì)中,為了保證分類結(jié)果的應(yīng)用價(jià)值建立適用于醫(yī)療大數(shù)據(jù)的挖掘關(guān)聯(lián)規(guī)則,選擇適配度更強(qiáng)的數(shù)據(jù)挖掘方式。
從海量的不完備醫(yī)療數(shù)據(jù)中檢索滿足最低支持度的項(xiàng)目數(shù)據(jù)集,定義初始海量醫(yī)療數(shù)據(jù)集為Dmis,定義任意一個(gè)項(xiàng)目數(shù)據(jù)集為Ijk[5]。項(xiàng)目數(shù)據(jù)集Ijk下搜索到的滿足最低置信度要求的規(guī)則集表示為
Rj={Rj1,Rj2,…,Rjk,}
(1)
并記錄相應(yīng)的置信度C(Rj)。利用置信度建立關(guān)聯(lián)規(guī)則,可以通過式(2)表示
(2)
式(2)中A(Rj)和B(Rj)分別表示的是A和B兩個(gè)數(shù)據(jù)包對(duì)應(yīng)關(guān)聯(lián)規(guī)則所包含的項(xiàng)目,變量Support_count(A(Rj))為海量數(shù)據(jù)項(xiàng)集中包含A的項(xiàng)數(shù)。那么假設(shè)T為醫(yī)療大數(shù)據(jù)的初始海量數(shù)據(jù)集,則可以得到關(guān)聯(lián)規(guī)則的具體表達(dá)式為
(3)
式(3)中σai表示醫(yī)療大數(shù)據(jù)集的標(biāo)準(zhǔn)差,γmin為最小置信度[6]。上述三個(gè)變量的計(jì)算方法如式(4)所示
(4)
式(4)中ai表示大數(shù)據(jù)基本屬性,aik為第k個(gè)數(shù)據(jù)屬性值[7]。當(dāng)ai在類xi中存在不同于其它類的行為,且具有統(tǒng)一行為時(shí),將式(4)的變量求解結(jié)果代入到式(3)當(dāng)中,便可以得出數(shù)據(jù)挖掘關(guān)聯(lián)規(guī)則。
在關(guān)聯(lián)規(guī)則的約束下,選擇符合醫(yī)療大數(shù)據(jù)的數(shù)據(jù)挖掘方式?,F(xiàn)階段數(shù)據(jù)挖掘算法包括Apriori和FP-Growth兩種,通過兩種關(guān)聯(lián)規(guī)則算法來挖掘數(shù)據(jù)中藥品和疾病、疾病和癥狀的相關(guān)對(duì),進(jìn)而得出醫(yī)療數(shù)據(jù)的挖掘結(jié)果。
2.2.1 Apriori算法挖掘數(shù)據(jù)
Apriori數(shù)據(jù)挖掘算法的應(yīng)用原理是基于廣度優(yōu)先搜索的方式,也就是逐層掃描醫(yī)療大數(shù)據(jù),通過層層迭代統(tǒng)計(jì)出各個(gè)候選項(xiàng)集的支持度與最小支持度,再根據(jù)建立的關(guān)聯(lián)規(guī)則,找出符合要求的醫(yī)療挖掘數(shù)據(jù)[8]。一般來講Apriori算法的實(shí)現(xiàn)分為兩個(gè)階段,首先生成待挖掘數(shù)據(jù)的頻繁項(xiàng)集,并通過不斷的循環(huán)迭代確定候選項(xiàng)集的統(tǒng)計(jì)數(shù)量,進(jìn)而得出醫(yī)療數(shù)據(jù)挖掘的頻繁項(xiàng)集[9]。接著在關(guān)聯(lián)規(guī)則的約束下分別計(jì)算兩個(gè)關(guān)聯(lián)規(guī)則之間的支持度和置信度,并根據(jù)計(jì)算結(jié)果調(diào)整頻繁項(xiàng)集。
2.2.2 FP-Growth算法挖掘數(shù)據(jù)
使用FP-Growth算法進(jìn)行數(shù)據(jù)挖掘。
過程為:首先遍歷海量醫(yī)療數(shù)據(jù)庫,統(tǒng)計(jì)其中所有數(shù)據(jù)的頻數(shù),選擇符合最小支持度計(jì)數(shù)的數(shù)據(jù)項(xiàng),接著按照遞減的順序排列符合要求的數(shù)據(jù)項(xiàng),得到頻繁項(xiàng)列表,即為FList。以空節(jié)點(diǎn)為根節(jié)點(diǎn)創(chuàng)建FP-tree,按照得出的FList的順序?qū)?shù)據(jù)插入到每一個(gè)節(jié)點(diǎn)上[10]。需要注意的是在數(shù)據(jù)對(duì)應(yīng)的過程中,要保證FList中的數(shù)據(jù)項(xiàng)在FP-tree中有且僅有一次出現(xiàn)在節(jié)點(diǎn)上。設(shè)置數(shù)據(jù)挖掘的初始值為空,調(diào)用FP-Growth算法中搭建完成的FP-tree,便可以獲得對(duì)應(yīng)數(shù)據(jù)全部挖掘結(jié)果。
2.2.3 對(duì)比兩種算法挖掘結(jié)果
Apriori算法和FP-Growth算法都可以在醫(yī)療大數(shù)據(jù)庫中挖掘到滿足要求的數(shù)據(jù)。然而Apriori算法需要多次掃描數(shù)據(jù)庫,因此會(huì)花費(fèi)大量的挖掘時(shí)間,導(dǎo)致算法的整體性能降低。而FP-Growth算法在挖掘大規(guī)模數(shù)據(jù)集時(shí)會(huì)出現(xiàn)無法構(gòu)造FP-tree的情況,導(dǎo)致數(shù)據(jù)挖掘失敗。為了解決兩個(gè)傳統(tǒng)算法存在的問題,以FP-Growth算法的運(yùn)行原理為基礎(chǔ),采用Apriori算法來代替FP-tree的構(gòu)建與迭代,實(shí)現(xiàn)數(shù)據(jù)挖掘算法的改進(jìn)優(yōu)化,同時(shí)也獲取到整體性更強(qiáng)的醫(yī)療初始數(shù)據(jù)。
對(duì)于一條記錄中包含一個(gè)缺失值,可以按照單一缺失值的方式來處理,選擇貢獻(xiàn)度最大的缺失屬性值作為醫(yī)療大數(shù)據(jù)的填補(bǔ)值。提取搭建完成的關(guān)聯(lián)規(guī)則集,求出每一個(gè)缺失屬性值di的貢獻(xiàn)度,計(jì)算公式為
(5)
式(5)中參量Match(xi,Rjk)表示的是關(guān)聯(lián)規(guī)則的匹配度。最后選擇最大貢獻(xiàn)度的di作為填補(bǔ)值[11]。
決策樹算法是典型的分類算法,在醫(yī)療大數(shù)據(jù)填補(bǔ)完成的基礎(chǔ)上,構(gòu)建決策樹,并根據(jù)決策樹思想采用自頂向下遞歸的方式處理醫(yī)療數(shù)據(jù)訓(xùn)練集。決策樹算法的基本實(shí)現(xiàn)流程如圖2所示。
圖2 決策樹算法基本實(shí)現(xiàn)步驟圖
按照?qǐng)D2中的算法實(shí)現(xiàn)流程,以醫(yī)療數(shù)據(jù)填補(bǔ)處理結(jié)果為基礎(chǔ),由數(shù)據(jù)訓(xùn)練集及相關(guān)類標(biāo)號(hào)生成可讀規(guī)則和決策樹。數(shù)據(jù)訓(xùn)練集在決策樹的算法下,遞歸成多個(gè)較小的子集。由于醫(yī)療數(shù)據(jù)類型復(fù)雜且數(shù)據(jù)量較多,因此在此次數(shù)據(jù)分類的過程中建立多個(gè)決策樹同步實(shí)現(xiàn)算法分類,在保證分類結(jié)果的同時(shí)提高算法的分類速度[12]。一般來講構(gòu)建決策樹可以分為五個(gè)步驟,首先將醫(yī)療大數(shù)據(jù)的處理結(jié)果作為采集數(shù)據(jù),并平均分為i個(gè)組別,形成數(shù)據(jù)集,用于建立決策樹分類器。以數(shù)據(jù)記錄作為決策樹節(jié)點(diǎn),分析變量的全部分割方式,確定其中的最優(yōu)分割點(diǎn)。若確定的樣本數(shù)據(jù)為同一類別,則該節(jié)點(diǎn)為決策樹中的樹葉節(jié)點(diǎn),反之當(dāng)前決策樹的節(jié)點(diǎn)為最優(yōu)分類能力的屬性。計(jì)算屬性增益率,并將最大增益率屬性進(jìn)行分裂處理。經(jīng)過屬性的分裂將單一節(jié)點(diǎn)分割成了兩個(gè)節(jié)點(diǎn),再按照上述步驟繼續(xù)分裂和分割,當(dāng)決策樹的分裂過程滿足停止條件時(shí),則決策樹停止分類。
由于此次醫(yī)療數(shù)據(jù)的分類項(xiàng)目需要處理和分類的數(shù)量較為龐大,因此在分類過程中首先建立多個(gè)單一的決策樹,融合多個(gè)單一決策樹的處理結(jié)果,便得出了決策樹算法對(duì)醫(yī)療數(shù)據(jù)的處理結(jié)果。假設(shè)經(jīng)過數(shù)據(jù)填補(bǔ)處理后得出的醫(yī)療數(shù)據(jù)結(jié)果中包含n個(gè)樣本,且樣本中的醫(yī)療數(shù)據(jù)分別屬于x個(gè)不同的數(shù)據(jù)類別。定義屬性F為測(cè)試屬性,F(xiàn)具有v個(gè)不同的離散值,將E劃分為v個(gè)子集,Ei中包括第j類樣本的個(gè)數(shù)為Pij,則E的信息熵可以用式(6)來計(jì)算
(6)
以D為根節(jié)點(diǎn)的決策樹信息增益可以表示為
gain(D)=I(E)-E(D)
(7)
式(7)中參量E(D)表示的是屬性D對(duì)應(yīng)的期望信息熵,其計(jì)算公式為
(8)
將式(6)、式(7)和式(8)聯(lián)立求解,得出單個(gè)決策樹信息的增益率函數(shù)為
(9)
并測(cè)試最大信息增益率的屬性。
構(gòu)建適應(yīng)度函數(shù)的目的分為兩個(gè)方面,一個(gè)是可以將創(chuàng)建的單個(gè)決策樹與醫(yī)療大數(shù)據(jù)結(jié)合在一起,保證創(chuàng)建的決策樹可以適用于處理醫(yī)療數(shù)據(jù),另一個(gè)方面就是利用適應(yīng)度函數(shù)來衡量決策樹的分類性能,保證分類結(jié)果的精度。適應(yīng)度函數(shù)的具體表達(dá)式如式(10)所示
(10)
式(10)中變量N為測(cè)試醫(yī)療數(shù)據(jù)集上的用例總數(shù),NMi和Mi分別表示的決策樹正確分類測(cè)試用例的總數(shù)和正確分類數(shù)量與總分類數(shù)量的比值。
在適應(yīng)度函數(shù)的控制約束下,分別利用ID3和C4.5的交叉變異運(yùn)算合并多個(gè)決策樹。ID3算法通過一系列測(cè)試將數(shù)據(jù)訓(xùn)練集迭代劃分為多個(gè)子集,并盡量使每個(gè)子集中為同一類別的對(duì)象。而C4.5算法在ID3的基礎(chǔ)上使連續(xù)型屬性、屬性值空缺的處理更加完善,同時(shí)也對(duì)單一決策樹進(jìn)行剪枝處理,實(shí)現(xiàn)信息量的分割,總而得到醫(yī)療數(shù)據(jù)的分類結(jié)果。融合ID3算法與C4.5算法,并使用交叉變異的運(yùn)算方法將創(chuàng)建的多個(gè)單一決策樹合并在一起,保證多個(gè)決策樹可以協(xié)同運(yùn)行。最終合并決策樹在醫(yī)療大數(shù)據(jù)的分類處理中的應(yīng)用運(yùn)行原理如圖3所示。
圖3 決策樹工作原理圖
運(yùn)用決策樹算法及其工作原理,遵循醫(yī)療大數(shù)據(jù)的分類方法與關(guān)聯(lián)規(guī)范,實(shí)現(xiàn)數(shù)據(jù)的合理分類。
為了驗(yàn)證基于決策樹算法的醫(yī)療大數(shù)據(jù)填補(bǔ)及分類方法的性能,并比較決策樹算法在醫(yī)療大數(shù)據(jù)處理方面的應(yīng)用效果,將算法應(yīng)用到一個(gè)醫(yī)療實(shí)例中,構(gòu)造一個(gè)基于大數(shù)據(jù)的醫(yī)療決策模型,并對(duì)其進(jìn)行分析。
在開始實(shí)驗(yàn)之前首先搭建并配置仿真環(huán)境,為了給設(shè)計(jì)的填補(bǔ)與分類方法提供充足的醫(yī)療數(shù)據(jù),選擇醫(yī)療大數(shù)據(jù)平臺(tái)作為仿真環(huán)境,將基于決策樹算法的醫(yī)療大數(shù)據(jù)填補(bǔ)及分類方法對(duì)應(yīng)的程序代碼輸入到仿真環(huán)境的主控計(jì)算機(jī)中,并與醫(yī)療大數(shù)據(jù)平臺(tái)形成后臺(tái)鏈路,保證大數(shù)據(jù)平臺(tái)采集到的數(shù)據(jù)可以實(shí)時(shí)傳輸?shù)结t(yī)療決策模型當(dāng)中。此外,為了驗(yàn)證決策樹算法在處理醫(yī)療大數(shù)據(jù)的有效性,設(shè)置神經(jīng)網(wǎng)絡(luò)算法作為仿真的對(duì)比方法,以相對(duì)獨(dú)立的方式在相同的實(shí)驗(yàn)環(huán)境下運(yùn)行,以保證實(shí)驗(yàn)結(jié)果的真實(shí)性。
選擇醫(yī)療大數(shù)據(jù)平臺(tái)中的腦卒中相關(guān)案例作為仿真數(shù)據(jù)。從數(shù)據(jù)平臺(tái)中提取相關(guān)診治完整數(shù)據(jù)共計(jì)5000條記錄。其中案例初始數(shù)據(jù)包括性別,現(xiàn)病史,既往史,入院查體,輔助檢查,入院診斷,治療用藥等屬性。每一個(gè)案例對(duì)應(yīng)的數(shù)據(jù)量約為49MB,其中部分案例存在數(shù)據(jù)缺失的狀況。
1)醫(yī)療大數(shù)據(jù)的填補(bǔ)效果
在醫(yī)療大數(shù)據(jù)的處理過程中,為了保證處理效果的完整性和連續(xù)性,必須對(duì)全部數(shù)據(jù)進(jìn)行缺失填補(bǔ),實(shí)驗(yàn)選擇對(duì)基于神經(jīng)網(wǎng)絡(luò)算法和基于決策樹算法的醫(yī)療大數(shù)據(jù)填補(bǔ)效果進(jìn)行對(duì)比分析。以填補(bǔ)后的容量大小與案例原始容量大小做對(duì)比,分析其填補(bǔ)效果差異。
2)醫(yī)療大數(shù)據(jù)的分類效果
醫(yī)療大數(shù)據(jù)的填補(bǔ)是為了更有效的進(jìn)行分類,分類方法的精準(zhǔn)度也是醫(yī)療大數(shù)據(jù)處理的一個(gè)重要的指標(biāo),分析分類精準(zhǔn)度以判斷分類方法的合理性,其計(jì)算公式為
(11)
式(11)中VA表示經(jīng)過分類處理的類別頻數(shù)。V0表示未經(jīng)處理的類別數(shù)量。
4.4.1 醫(yī)療大數(shù)據(jù)填補(bǔ)效果對(duì)比
通過對(duì)案例數(shù)據(jù)進(jìn)行填補(bǔ)處理,不同方法下其填補(bǔ)率對(duì)比如表1所示。
表1 填補(bǔ)效果對(duì)比/MB
初始測(cè)試樣本的初始數(shù)據(jù)量為190MB。經(jīng)過基于神經(jīng)網(wǎng)絡(luò)算法和決策樹的醫(yī)療大數(shù)據(jù)填補(bǔ)及分類方法的填補(bǔ),樣本數(shù)據(jù)量填補(bǔ)至217MB、221MB和244MB,即填補(bǔ)量分別為14%、16%和28%,本文方法將缺失數(shù)據(jù)全部補(bǔ)充完整,比另兩種方法提高了50%左右。
4.4.2 醫(yī)療大數(shù)據(jù)分類精度對(duì)比
將原始數(shù)據(jù)使用三種方法進(jìn)行重新分類,得出分類精度,三種分類精度對(duì)比情況如圖4。傳統(tǒng)數(shù)據(jù)處理方法的平均分類精度為83.92%、80.52%,而設(shè)計(jì)方法的平均分類精度為95.32%,相比之下提高了11.40%、14.80%,本文方法的分類精度最高。
圖4 三種分類精度對(duì)比圖
通過本文的設(shè)計(jì)方法,可以從醫(yī)院現(xiàn)有的病人數(shù)據(jù)中挖掘出有用的信息輔助醫(yī)生為病人診斷。綜合來看,提出的決策樹算法在處理醫(yī)療大數(shù)據(jù)中具有較好的填補(bǔ)效果,可根據(jù)不同的數(shù)據(jù)選擇不同設(shè)置來提高填補(bǔ)正確率,在數(shù)據(jù)的分類方面也具有較高的應(yīng)用性能。