岳根霞,劉金花,劉 峰
(山西醫科大學汾陽學院,山西 汾陽 032200)
醫學界面臨著海量、非結構化數據處理的嚴峻挑戰,如何處理醫療海量數據成為研究熱點。醫療大數據中涵蓋了各類疾病的發病原因、發病歷程、患病癥狀、治療方案、實際案例等大量數據。由于醫療行業正在逐漸發展,醫療技術也在不斷提高,因此治療方案以及治療結果產生的數據都不盡相同,而醫療大數據是按照時間順序存儲的,未經過整合處理的醫療大數據需要消耗大量的時間調取,為此提出醫療大數據的分類方法。醫療大數據分類方法的運行建立在數據完整的基礎上,當醫療大數據不完整時極易出現數據分類偏差的情況,導致數據的分類結果混亂,失去了醫療大數據分類的意義。數據挖掘與處理的首要問題是數據缺失,數據集的完整是數據挖掘的成功與否的關鍵,通過填補缺失數據,得到一個完整的數據集。
在數據填補完成的基礎上,利用數據分類方法處理大量混亂而復雜的醫療數據,可以提升數據的邏輯性,方便數據的查找。在數據分類計數發展歷程中,使用范圍較廣的幾個計數包括神經網絡下的分類方法[1]和遺傳算法下的分類方法[2]。在醫療大數據的分類過程中分別使用不同的技術可以針對不同的分類需求得到更加符合數據特點的分類結果,然而經過長時間的應用研究發現,現階段使用的分類方法均存在迭代時間長的問題。為了解決上述問題,提出在決策樹算法下的醫療大數據分類處理方法。這種算法通過構建決策樹,利用已知各種情況的發生概率來求取凈現值在有效范圍內的期望值的概率,最后判斷分類的可行性。決策樹算法具有更高的分類精確度,因此將該技術應用到醫療數據的分類中,使其更好地服務于醫療大數據的處理,從患者數據中挖掘出有用的信息輔助醫生為病人診斷。
醫療大數據填補與分類方法的設計目的是為了給醫療人員和醫療行業提供完整且準確的醫療數據,通過數據的分類可以實現指定數據的快速查找[3]。醫療大數據的填補與分類方法的實現,需要建立在大量的醫療數據的基礎上,因此首先在醫療管理系統中挖掘需要的醫療數據,數據挖掘的具體流程如圖1所示。

圖1 數據挖掘流程圖
圖1的數據挖掘流程表明,數據挖掘的基本步驟是通過以下幾個迭代組成的,其中包括數據的清理、數據集成、數據選擇、數據變化、挖掘實現、模式評估以及知識表示。其中數據清洗的目的是過濾掉海量數據中的無效值和差異值,通過數據集成將不同來源、不同格式的數據整合,數據選擇主要是按照數據的處理要求,選擇數據挖掘范圍與數據類型,知識表示是利用可視化技術將數據挖掘的結果顯示到屏幕上[4]。另外數據挖掘的實現是在特定的挖掘算法和挖掘規則下進行的,在此次醫療大數據填補及分類方法設計中,為了保證分類結果的應用價值建立適用于醫療大數據的挖掘關聯規則,選擇適配度更強的數據挖掘方式。
從海量的不完備醫療數據中檢索滿足最低支持度的項目數據集,定義初始海量醫療數據集為Dmis,定義任意一個項目數據集為Ijk[5]。項目數據集Ijk下搜索到的滿足最低置信度要求的規則集表示為
Rj={Rj1,Rj2,…,Rjk,}
(1)
并記錄相應的置信度C(Rj)。利用置信度建立關聯規則,可以通過式(2)表示

(2)
式(2)中A(Rj)和B(Rj)分別表示的是A和B兩個數據包對應關聯規則所包含的項目,變量Support_count(A(Rj))為海量數據項集中包含A的項數。那么假設T為醫療大數據的初始海量數據集,則可以得到關聯規則的具體表達式為

(3)
式(3)中σai表示醫療大數據集的標準差,γmin為最小置信度[6]。上述三個變量的計算方法如式(4)所示

(4)
式(4)中ai表示大數據基本屬性,aik為第k個數據屬性值[7]。當ai在類xi中存在不同于其它類的行為,且具有統一行為時,將式(4)的變量求解結果代入到式(3)當中,便可以得出數據挖掘關聯規則。
在關聯規則的約束下,選擇符合醫療大數據的數據挖掘方式。現階段數據挖掘算法包括Apriori和FP-Growth兩種,通過兩種關聯規則算法來挖掘數據中藥品和疾病、疾病和癥狀的相關對,進而得出醫療數據的挖掘結果。
2.2.1 Apriori算法挖掘數據
Apriori數據挖掘算法的應用原理是基于廣度優先搜索的方式,也就是逐層掃描醫療大數據,通過層層迭代統計出各個候選項集的支持度與最小支持度,再根據建立的關聯規則,找出符合要求的醫療挖掘數據[8]。一般來講Apriori算法的實現分為兩個階段,首先生成待挖掘數據的頻繁項集,并通過不斷的循環迭代確定候選項集的統計數量,進而得出醫療數據挖掘的頻繁項集[9]。接著在關聯規則的約束下分別計算兩個關聯規則之間的支持度和置信度,并根據計算結果調整頻繁項集。
2.2.2 FP-Growth算法挖掘數據
使用FP-Growth算法進行數據挖掘。
過程為:首先遍歷海量醫療數據庫,統計其中所有數據的頻數,選擇符合最小支持度計數的數據項,接著按照遞減的順序排列符合要求的數據項,得到頻繁項列表,即為FList。以空節點為根節點創建FP-tree,按照得出的FList的順序將數據插入到每一個節點上[10]。需要注意的是在數據對應的過程中,要保證FList中的數據項在FP-tree中有且僅有一次出現在節點上。設置數據挖掘的初始值為空,調用FP-Growth算法中搭建完成的FP-tree,便可以獲得對應數據全部挖掘結果。
2.2.3 對比兩種算法挖掘結果
Apriori算法和FP-Growth算法都可以在醫療大數據庫中挖掘到滿足要求的數據。然而Apriori算法需要多次掃描數據庫,因此會花費大量的挖掘時間,導致算法的整體性能降低。而FP-Growth算法在挖掘大規模數據集時會出現無法構造FP-tree的情況,導致數據挖掘失敗。為了解決兩個傳統算法存在的問題,以FP-Growth算法的運行原理為基礎,采用Apriori算法來代替FP-tree的構建與迭代,實現數據挖掘算法的改進優化,同時也獲取到整體性更強的醫療初始數據。
對于一條記錄中包含一個缺失值,可以按照單一缺失值的方式來處理,選擇貢獻度最大的缺失屬性值作為醫療大數據的填補值。提取搭建完成的關聯規則集,求出每一個缺失屬性值di的貢獻度,計算公式為

(5)
式(5)中參量Match(xi,Rjk)表示的是關聯規則的匹配度。最后選擇最大貢獻度的di作為填補值[11]。
決策樹算法是典型的分類算法,在醫療大數據填補完成的基礎上,構建決策樹,并根據決策樹思想采用自頂向下遞歸的方式處理醫療數據訓練集。決策樹算法的基本實現流程如圖2所示。

圖2 決策樹算法基本實現步驟圖
按照圖2中的算法實現流程,以醫療數據填補處理結果為基礎,由數據訓練集及相關類標號生成可讀規則和決策樹。數據訓練集在決策樹的算法下,遞歸成多個較小的子集。由于醫療數據類型復雜且數據量較多,因此在此次數據分類的過程中建立多個決策樹同步實現算法分類,在保證分類結果的同時提高算法的分類速度[12]。一般來講構建決策樹可以分為五個步驟,首先將醫療大數據的處理結果作為采集數據,并平均分為i個組別,形成數據集,用于建立決策樹分類器。以數據記錄作為決策樹節點,分析變量的全部分割方式,確定其中的最優分割點。若確定的樣本數據為同一類別,則該節點為決策樹中的樹葉節點,反之當前決策樹的節點為最優分類能力的屬性。計算屬性增益率,并將最大增益率屬性進行分裂處理。經過屬性的分裂將單一節點分割成了兩個節點,再按照上述步驟繼續分裂和分割,當決策樹的分裂過程滿足停止條件時,則決策樹停止分類。
由于此次醫療數據的分類項目需要處理和分類的數量較為龐大,因此在分類過程中首先建立多個單一的決策樹,融合多個單一決策樹的處理結果,便得出了決策樹算法對醫療數據的處理結果。假設經過數據填補處理后得出的醫療數據結果中包含n個樣本,且樣本中的醫療數據分別屬于x個不同的數據類別。定義屬性F為測試屬性,F具有v個不同的離散值,將E劃分為v個子集,Ei中包括第j類樣本的個數為Pij,則E的信息熵可以用式(6)來計算

(6)
以D為根節點的決策樹信息增益可以表示為
gain(D)=I(E)-E(D)
(7)
式(7)中參量E(D)表示的是屬性D對應的期望信息熵,其計算公式為

(8)
將式(6)、式(7)和式(8)聯立求解,得出單個決策樹信息的增益率函數為

(9)
并測試最大信息增益率的屬性。
構建適應度函數的目的分為兩個方面,一個是可以將創建的單個決策樹與醫療大數據結合在一起,保證創建的決策樹可以適用于處理醫療數據,另一個方面就是利用適應度函數來衡量決策樹的分類性能,保證分類結果的精度。適應度函數的具體表達式如式(10)所示

(10)
式(10)中變量N為測試醫療數據集上的用例總數,NMi和Mi分別表示的決策樹正確分類測試用例的總數和正確分類數量與總分類數量的比值。
在適應度函數的控制約束下,分別利用ID3和C4.5的交叉變異運算合并多個決策樹。ID3算法通過一系列測試將數據訓練集迭代劃分為多個子集,并盡量使每個子集中為同一類別的對象。而C4.5算法在ID3的基礎上使連續型屬性、屬性值空缺的處理更加完善,同時也對單一決策樹進行剪枝處理,實現信息量的分割,總而得到醫療數據的分類結果。融合ID3算法與C4.5算法,并使用交叉變異的運算方法將創建的多個單一決策樹合并在一起,保證多個決策樹可以協同運行。最終合并決策樹在醫療大數據的分類處理中的應用運行原理如圖3所示。

圖3 決策樹工作原理圖
運用決策樹算法及其工作原理,遵循醫療大數據的分類方法與關聯規范,實現數據的合理分類。
為了驗證基于決策樹算法的醫療大數據填補及分類方法的性能,并比較決策樹算法在醫療大數據處理方面的應用效果,將算法應用到一個醫療實例中,構造一個基于大數據的醫療決策模型,并對其進行分析。
在開始實驗之前首先搭建并配置仿真環境,為了給設計的填補與分類方法提供充足的醫療數據,選擇醫療大數據平臺作為仿真環境,將基于決策樹算法的醫療大數據填補及分類方法對應的程序代碼輸入到仿真環境的主控計算機中,并與醫療大數據平臺形成后臺鏈路,保證大數據平臺采集到的數據可以實時傳輸到醫療決策模型當中。此外,為了驗證決策樹算法在處理醫療大數據的有效性,設置神經網絡算法作為仿真的對比方法,以相對獨立的方式在相同的實驗環境下運行,以保證實驗結果的真實性。
選擇醫療大數據平臺中的腦卒中相關案例作為仿真數據。從數據平臺中提取相關診治完整數據共計5000條記錄。其中案例初始數據包括性別,現病史,既往史,入院查體,輔助檢查,入院診斷,治療用藥等屬性。每一個案例對應的數據量約為49MB,其中部分案例存在數據缺失的狀況。
1)醫療大數據的填補效果
在醫療大數據的處理過程中,為了保證處理效果的完整性和連續性,必須對全部數據進行缺失填補,實驗選擇對基于神經網絡算法和基于決策樹算法的醫療大數據填補效果進行對比分析。以填補后的容量大小與案例原始容量大小做對比,分析其填補效果差異。
2)醫療大數據的分類效果
醫療大數據的填補是為了更有效的進行分類,分類方法的精準度也是醫療大數據處理的一個重要的指標,分析分類精準度以判斷分類方法的合理性,其計算公式為

(11)
式(11)中VA表示經過分類處理的類別頻數。V0表示未經處理的類別數量。
4.4.1 醫療大數據填補效果對比
通過對案例數據進行填補處理,不同方法下其填補率對比如表1所示。

表1 填補效果對比/MB
初始測試樣本的初始數據量為190MB。經過基于神經網絡算法和決策樹的醫療大數據填補及分類方法的填補,樣本數據量填補至217MB、221MB和244MB,即填補量分別為14%、16%和28%,本文方法將缺失數據全部補充完整,比另兩種方法提高了50%左右。
4.4.2 醫療大數據分類精度對比
將原始數據使用三種方法進行重新分類,得出分類精度,三種分類精度對比情況如圖4。傳統數據處理方法的平均分類精度為83.92%、80.52%,而設計方法的平均分類精度為95.32%,相比之下提高了11.40%、14.80%,本文方法的分類精度最高。

圖4 三種分類精度對比圖
通過本文的設計方法,可以從醫院現有的病人數據中挖掘出有用的信息輔助醫生為病人診斷。綜合來看,提出的決策樹算法在處理醫療大數據中具有較好的填補效果,可根據不同的數據選擇不同設置來提高填補正確率,在數據的分類方面也具有較高的應用性能。