王 星,劉曉燕
(1.昆明醫科大學第一附屬醫院 昆明 650000;2.昆明理工大學 信息工程于自動化學院,昆明 650000)
醫療診斷是就醫過程中的一個重要環節,除通過儀器的檢驗、檢查外,日常醫療診斷很大程度是一種基于經驗的判定方法,通過長期對病例的癥狀分析和經驗積累,得出常見疾病的診斷方法,再將該方法應用于新的病例中,根據新的病例表現出的既有癥狀信息,得到最初的疾病類型判斷。大數據指無法使用傳統工具或方法進行分析處理的、具有復雜關系的龐大數據集合,需要利用縱向信息對數據進行補充分析[1]。醫療大數據是醫療衛生機構產生的一切與生命科學相關的復雜大數據[2]。醫療大數據領域中運用的淺層機器學習算法模型有回歸分析、決策樹、基于內核的算法、降低維度算法等[3]。在醫療大數據的基礎上,疾病診斷方法可以通過決策樹模型進行表達,并且建模分析,得到數據分類模型,用于預測和判定未知數據的已知類型。
在機器學習理論中,決策樹是一個預測模型,在一定現有數據結論基礎上,基于特征值與對象概率分布規律,構建決策樹對實例進行分類的方法。決策樹模型很自然地還原了做決策的過程,將復雜的決策過程拆分成了一系列簡單的選擇,因而能直觀地解釋決策的整個過程[4]。它是一種常用的樹形結構分析工具,其中各非葉子節點代表一個特征值的判定測試,每個葉子節點表示實例的類別,每個樹形分支表示該類別所有值域上的輸出。使用決策樹進行決策分析時,待分類數據從根節點開始進行特征值判定,并根據判定值選擇分支,一直到葉子節點,最終測試數據的決策類型就是這種節點的類別[5]。
醫療診斷分析中,可同樣使用歷史診斷病例,以此作為數據基礎模型,通過病例中的檢查項目數值作為疾病類型的特征值,對不同特征值的疾病類型概率分布進行分析,建立檢查項目特征與疾病類型的概率預測模型。決策樹在建立時,相關的步驟包括特征選擇、決策樹生成、修剪[6],以下具體論述。
信息論是量化處理信息的分支科學,劃分數據的原則是將無序數據變得更加有序,劃分數據前后信息的變化等同于信息增益。基于各特征進行劃分,確定出的信息增益最大特征就對應于最優判定選擇[7]。所以特征選擇必須先計算每個特征帶來的信息增益,最優特征的信息增益最大。
特征選擇目的在于建立起原始分析數據集,原始數據集包含特征值和分類結果,普通醫療檢驗就是特征選擇的實際執行過程,每個檢驗指標可作為一個特征值,如:體溫、體表癥狀、各類血液檢驗指標等,分類結果就是該病例的最終疾病診斷。當一類疾病在一個特征值上有明顯分布規律時,可直接通過該特征值得到病情分類,該特征值就是區分該類疾病的最優特征。原始數據集數據越大,特征值劃分越精細,得到的決策樹就越茂密,分析結果也就越準確。
信息集合的度量方式稱為香農熵,簡稱熵,可將其看作為信息的期望,如果對象可劃分為很多類,則符號xi的信息熵可描述如下:

其中,p(xi)具體表示選擇該類型的概率。
在進行熵值計算時,需要確定出全部類型所有特征值對應的信息期望值,可通過下面公式得到:

其中n為分類數目,熵值和對象的不確定性存在正相關關系。基于數據估計方法確定出的熵就是經驗熵。若十個數據劃分為兩類:A、B類,A類含四個數據,則數據中A類出現的概率為4/10;另外6個數據屬于B類,則出現B類的概率為6/10,這些概率基于已有數據統計確定出。定義樣本數據中的數據就是訓練集D,此集合的經驗熵表示為H(D),|D|對應于其樣本容量。為方便分析假設存在K個類CK,k=1,2,….K,|Ck|為屬于類Ck的樣本量,則可通過如下表達式計算出經驗熵:

根據歷史診斷病例描述,通過醫療數據選取出主要疾病的特征描述信息,設定數據集D如表1所示。

表1 特征描述信息
樣例中共9個疾病特征,診斷類型有2類,13個病例中,8個診斷為咳嗽病,因此數據中咳嗽病出現的概率為8/13,感冒出現的概率為5/13,根據經驗熵計算公式得到數據集D的經驗熵為:

信息增益含義為特征x的信息確定后,類Y的信息確定性增加的程度。
條件熵H(Y|x)含義為變量x明確情況下,Y的概率值,H(Y|x)對應于x給定后Y的條件概率分布的熵對x的數學期望:

其中,pi=p(x=xi),在基于數據估計確定出熵和條件熵相關概率情況下,以上兩種熵就是經驗熵和經驗條件熵,此時如果有概率為0,則令
信息增益和特征存在相關性,因而特征A對集D的信息增益g(D,A),可看作為此集合的經驗熵H(D)與特征A明確時其經驗條件熵H(D|A)的差值[8],具體表示如下所示:

此差值對應于互信息,而決策樹學習中的信息增益可看作為訓練集中類與特征的互信息。
在實際計算中,依據原始樣本病例得出的經驗熵H(D)=0.9612,我們分別計算每個特征所能得到的信息增益,去掉該特征值后的新數據集H(D|A)的經驗熵,兩者的差異量如表2所示。

表2 差異量
從上表數據可以看到,通過咯痰或咽痛兩個特征進行疾病劃分,能更快區別出病例為咳嗽病或是感冒,因此咯痰或咽痛可作為優先判定的特征值,此特征值判定應當作為決策樹的根判定節點。
信息增益值的大小對于訓練數據集而言,不存在絕對意義,在分類難度很大情況下,相應的信息增益值會偏大,相反情況下則偏小,可通過信息增益比而適當的校正,在特征選擇時一般以此標準進行。
信息增益比:特征A對集D的信息增益比gR(D,A),
可通過益g(D,A)與集D的經驗熵比值確定出,具體表達式如下所示:

在得到原始數據集后,基于最優特征值對數據集進行劃分,由于特征值可能為多個,這樣在劃分時,相應的數據集也可能超過二個。在初次劃分后,需要將數據集傳遞至分叉樹的下一個節點,然后在這一節點上,對數據進行再次劃分,從而基于遞歸模式對數據集進行處理,滿足相關應用要求。
在上一步中,將病例診斷信息分析為特征值集合和分類結果,構建出原始數據集,決策樹的生成過程則是醫療診斷過程,通過醫生對各個檢驗指標進行經驗總結,得到分類結果。
ID3[9]算法生成決策樹,ID3算法的核心是在決策樹各個結點上應用信息增益準則選擇特征,遞歸地構建決策樹[10]。
輸入:訓練集D,特征集A;
輸出:決策樹T。
相應的生成流程如下:
1)若訓練集合D中全部實例都被劃分為類別CK,這種情況下設置T為單節點樹,并將Ck當做此節點的類別,返回T;
2)如果A=Ф,則置T為單節點樹,而此節點的類別對應于D中實例最大的類Ck,然后返回T;
3)相反情況下基于信息增益比表達式確定出A中各特征對D的信息增益比,對所得結果進行對比確定出此值最大的特征Ag;
4)對節點i,以Di為訓練集,以A-Ag為特征集,基于以上方法進行遞歸分析,而確定出子樹Ti,結束后返回Ti。
對全部劃分數據集的屬性進行遍歷后,各分支對應的全部實例相關的分類相同,在全部的實例對應的分類都一致情況下,確定出一個葉子節點或終止塊,任何達到葉子節點的數據必然屬于葉子節點的分類[11]。
決策樹生成算法遞歸確定出決策樹,一直到滿足結束遞歸條件,在此基礎上確定出的樹可更好的進行訓練數據的劃分,所得結果的精度高。不過對未知測試數據的分類所得結果的準確性相對有限,容易產生過擬合現象。這種現象的產生原因為,學習時過于側重提高分類正確性,而導致建立的決策樹過于復雜,處理方法是對建立的決策樹適當的化簡,降低其后的處理難度。
決策樹修剪的意義在于減少需要判定的特征值復雜度,在醫療診斷中,存在著大量的檢查指標,實際情況下對于一個疾病的診斷,并不需要檢驗所有的項目,通常先進行一些基本的檢查,例如:體表表現、常規血液檢驗等,通過這些基礎指標得到疾病的大致分類,再針對該分類下的指標進一步進行其他項目檢驗,直至得出診斷。通過決策樹的剪枝,可以得到常規醫療檢驗的項目指標,減少不必要的檢驗項目和檢驗次數。
剪枝:對得到的決策樹進行修剪,將其中的一些子樹或葉子節點剪去,而新的子節點設置為根節點,這樣可使得分類樹結構簡化。
可基于決策樹的損失函數或代價函數最小來實現。
決策樹學習的損失函數定義為:

其中T對應于此子樹的葉子節點,Nt對應于此葉子相關的訓練樣本數,α對應于懲罰系數,Ht(T)則為第t個葉子熵,其計算公式為:

其中C(T)含義為對訓練數據的預測誤差,可看作為相應的擬合水平;
α表示,α≥0參數控制兩者之間的影響,此參數較大情況下確定出的模型結構更簡單,而相反情況下建立的決策樹更復雜,如果其為零,則對應于單純考慮擬合水平,決策樹的復雜性不需要考慮。
剪枝對應于α確定情況下,得到損失函數最小的子樹。
α確定后,訓練數據的擬合效果和子樹大小存在正相關關系,不過子樹大,則對應的復雜度越高,相反情況下則擬合效果差,損失函數表達了兩者間的平衡度。
決策樹的剪枝對應于從葉子節點進行遞歸,全部子節點回縮后的子樹記為Tb,而沒有回縮的子樹為Tb,如果存在如下關系式:

則可判斷出回縮降低了損失函數,這樣就需要進行回縮處理,進行遞歸一直到不能進一步回縮。這樣就基于貪婪算法進行剪枝處理,而簡化了決策樹。
決策樹建立的目的在于更好的擬合訓練數據,而剪枝操作主要是基于優化損失函數而使決策樹得以簡化,也為其后的分類處理提供支持和便利。
決策樹分類[12,13]是分類算法中的一種應用最廣泛的技術,它通過尋找數據間的聯系,描述數據的關系模型,從而能夠作出預測。在決策樹建立基礎上,可基于其劃分實際數據集合,通過數據分類過程中各屬性值與決策樹節點的數值進行比較,遞歸執行該節點及其子節點,最后到達的葉子節點即為分析預測的該數據分類。
醫療診斷分類的過程,則是根據醫療檢驗得到的項目指標,對各個指標進行判斷,將疾病類型劃分在歷史病例中。
通過對實際醫療診斷過程結合決策樹算法的分析,得出可將決策樹應用于醫療診斷的應用過程,通過以下過程實施,可得到決策樹模型。
在前面的決策樹分析過程中,我們將病例中的檢查項目指標作為特征值,構建分析原始數據集。
計算原始數據集的經驗熵,其輸出結果符合預計計算。

圖1 原始數據集的經驗熵
在第一輪最優特征選擇中,計算得出的經驗熵符合預計結果,選取咯痰作為最優特征。

圖2 最優特征選取
重復上面的最優特征值選擇步驟,直到數據分類完畢或特征判定結束,獲得最終的決策樹。最終得到的決策樹結構。

圖3 最優特征判定結束
基于樣本病例得到的決策樹,判定邏輯如圖4所示。

圖4 最終決策樹結構
決策樹的最終特征值僅有:咯痰和咽痛,與原始數據集中采集的特征值有很大程度的減少,對原始數據的病例診斷結果保持不變,實際應用中,可根據決策樹最終特征值進行檢驗指標進行采集,減少了無用或者與疾病關系不大的指標采集過程,可減少疾病診斷檢驗復雜度。
醫院大數據為分析病情提供了實現基礎,在選取了部分樣例進行實驗過程中,通過算法的描述得到了較簡化的區分感冒和咳嗽病的決策樹模型,使用該模型對其歷史病例進行測試,具有較高的準確率,基本達到診斷要求。通過醫療診斷分析模型的構建,可用于自動疾病初步預測、非醫療人員疾病診斷輔助信息手段、醫療檢驗項目指標制定,具有一定的可行性和指導意義。但是,如何尋找更好的數據預處理方法,如何發掘更好的優化決策樹方法,如何更有效快速地完成決策樹剪枝,如何將決策樹與多種方法交叉結合等多種問題,都需要今后的學習中去研究[14]。