沈 海,王黎光
(西京學院計算機學院,西安 710123)
貝葉斯網絡(Bayesian Network)是一種圖形推理技術,用于表達變量之間的因果關系,是為了解決不定性和不完整性問題而提出的數學圖論模型。貝葉斯網絡對于不確定知識的開發具有很大的優勢[1]。在醫學領域中,貝葉斯網絡也常應用于癲癇病[2]、乳腺癌[3]等常見疾病的診治工作中。因此,本文將貝葉斯網絡應用到診治前列腺疾病案例中。
貝葉斯網絡軟件GeNIe2.3為匹茲堡大學決策系統實驗室所開發的貝葉斯網絡建模軟件,其初始界面如圖1所示。貝葉斯網絡的建立包含結構學習及參數訓練兩大板塊,診治前列腺疾病貝葉斯網絡模型建立過程如下。

圖1 貝葉斯網絡軟件GeNIe2.3初始界面
貝葉斯網絡的拓撲結構表示變量之間定性的影響關系。貝葉斯網絡結構學習旨在利用結構學習算法從大量的歷史樣本數據中挖掘一種有向無環圖結構,其能表現變量之間的相關性。針對多變量、多樣本數據,利用結構學習算法進行結構建模容易導致變量的結構變得過于復雜,不利于后續進行分析和診治[4],因此本研究通過咨詢前列腺疾病領域的專家來獲取先驗知識,結合文獻查詢調研,再進一步利用相關結構學習算法,構建診治前列腺疾病貝葉斯網絡的基本模型結構。
利用GeNIe軟件進行結構學習前,首先利用文獻調研及專家經驗確定部分變量之間的獨立關系。本研究所利用的樣本數據中,同類型變量之間保持為條件獨立,不同類型變量可能存在條件相關性。基于獨立關系,將所收集的81個變量、2607個前列腺疾病樣本數據導入GeNIe軟件中,使用軟件中的K2學習算法進行數據挖掘。進行數據挖掘建立結構前,將樣本變量劃分為三大類,分別是疾病類型、誘因和癥狀,如表1和表2所示。其中,可以看出前列腺疾病類型與癥狀、誘因之間存在關聯關系。站在醫學科學的角度講,誘因能導致前列腺疾病的發生,不同的前列腺疾病類型表現為特有的前列腺疾病癥狀。通過上述關系,可以初步確定診治前列腺疾病貝葉斯網絡的初始結構。

表1 前列腺疾病類型與誘因的對應關系

表2 前列腺疾病類型與癥狀的對應關系
在上述基于醫學科學的基礎上,利用所導入的樣本案例數據,結合GeNIe軟件中經典的K2算法進行結構學習。該算法為K2評分函數和爬山搜索算法的融合算法,利用爬山算法搜索可能存在的結構,并利用K2評分函數進行打分,得分最高的結構即是最優結構。該算法的啟動界面如圖2所示,由于貝葉斯網絡中各節點的條件概率表隨著父節點數量的增加而增加,因此設置最大父節點數量為15個,任意節點的父節點數量不超過15個,避免條件概率表大而影響后續建模分析。

圖2 貝葉斯網絡K2結構學習算法初始界面
最終獲得的診治前列腺疾病貝葉斯網絡拓撲圖初始結構如圖3所示。其中,紅色節點為前列腺疾病類型,指向紅色節點的前列腺疾病類型的父節點——誘因,從紅色節點出發指向的節點為前列腺疾病類型的子節點——癥狀。該結構清晰地呈現了前列腺疾病類型、誘因和病癥之間的關系。

圖3 診治前列腺疾病貝葉斯網絡拓撲結構
貝葉斯網絡中的參數主要為非根節點(中間節點和葉節點)的條件概率表(Conditional prob?ability table),進而獲得貝葉斯網絡中各個節點的狀態概率分布。一般而言,在數據樣本量充足的情況下,可以通過機器學習算法進行數據挖掘以確定貝葉斯網絡參數。貝葉斯估計算法、極大似然估計算法、梯度下降算法和極大期望值算法為比較常用的參數學習算法;當數據集合完整可用時,極大似然估計算法能很好地挖掘樣本數據的相關性,有利于得到最優參數。在樣本數據不完整、有缺失時,需采用EM算法進行參數訓練。
鑒于本工作所獲得的前列腺診斷數據樣本完整可用,并未存在缺失,本工作使用了GeNIe軟件中自帶的極大似然估計算法進行參數學習。該算法不斷模擬條件概率表的可能性情況,直到該條件概率表能使得中間節點和葉節點的后驗概率接近樣本數據的實際情況,該算法界面如圖4所示。

圖4 診治前列腺疾病貝葉斯網絡參數學習界面
將樣本數據與上述模型結構進行匹配,使用極大似然估計算法來捕獲該模型中的條件概率表,最終獲得一個完整的且帶有概率分布的診治前列腺疾病的貝葉斯網絡模型。因為本工作所構建的貝葉斯網絡模型結構較為復雜,條件概率表亦較為龐大,通過參數訓練獲取的條件概率表示例如表3所示,0.8993表示當父節點“前列腺癌”和“前列腺增生”同時處于“State0”(不出現)狀態時,子節點“下肢無力”處于“State0”(不出現)狀態的概率為0.8993,其它以此類推。根據貝葉斯網絡正向推理理論,貝葉斯網絡正向推理計算方法如式(1)和(2)所示:

表3 “下肢無力”及其父節點“前列腺癌”和“前列腺增生”之間的條件概率表

式中:P(U)表示為一組節點U= {B1,B2,…,Bn}的聯合概率分布,Pa(Bi)為貝葉斯網絡中節點Bi的父節點集合,P(Bi)表示目標節點Bi的先驗概率。
運行模型進行正向推理后各節點的狀態概率分布結果如圖5所示。
如圖5可知,病人患上“急性細菌性前列腺炎”“急性非細菌性前列腺炎”“慢性非細菌性前列腺炎”“慢性細菌性前列腺炎”“前列腺癌”和“前列腺增生”的概率依次為26%、18%、10%、19%、23%和32%。可知病人患上“前列腺增生”在前列腺疾病中最為常見。

圖5 診治前列腺疾病貝葉斯網絡模型
貝葉斯網絡模型能否通過案例數據準確預測目標節點的狀態概率分布,是判斷模型有效性和可靠性的重要特征。常用的模型檢驗方法包括樣本黃金分割法、逐一驗證法和K折交叉驗證法[5]。樣本黃金分割法要求提前將數據樣本按照一定的比例分為參數訓練集和驗證集,一般合適的比例為60%訓練集,40%驗證集,但該方法存在一定的偶然性,受到劃分比例和劃分者的主觀影響更大。逐一驗證法要求將n個數據樣本中的n-1個樣本案例作為參數學習集,剩余1個作為驗證案例驗證模型的準確性,該方法能全面覆蓋樣本進行驗證,但對于數據量大的樣本案例,運算速度過慢,不利于進行模型驗證。
本工作使用了K折交叉驗證法構建混淆矩陣,以驗證上述模型的準確性。首先設置K折的數量,由于本工作樣本數據量大,設置K為5促進驗證過程快速運行,即將2607份樣本數據平均分成5份;其次設置驗證節點為“急性細菌性前列腺炎”“急性非細菌性前列腺炎”“慢性非細菌性前列腺炎”“慢性細菌性前列腺炎”“前列腺癌”和“前列腺增生”等5個前列腺疾病節點,將其中4份作為網絡的參數訓練集,剩余1份作為網絡的模型驗證集檢驗模型預測驗證節點的準確性,重復迭代5次,直至5個樣本數據集合均已完全覆蓋完畢。最終獲得混淆矩陣如圖6所示,矩陣對角線中的數值即為預測準確的案例數量。由圖6可知,急性細菌性前列腺炎”“急性非細菌性前列腺炎”“慢性非細菌性前列腺炎”“慢性細菌性前列腺炎”“前列腺癌”和“前列腺增生”等5個前列腺疾病節點的案例驗證準確性依次高達88.34%、91.04%、89.96%、85.61%、94.26%、90.01%,其中,對前列腺癌的預測準確率高達94.26%。可知該模型對于醫院診治前列腺疾病具有極高的有效性和實用性,可用于臨床診治前列腺疾病。

圖6 各驗證節點的準確率
本研究以前列腺疾病為例,構建了診治前列腺疾病的靜態貝葉斯網絡模型,通過參數學習獲取了條件概率表,量化了不同誘因、疾病類型、癥狀之間的影響關系。通過K折交叉驗證法,驗證了模型是否能夠準確識別和預測不同誘因及癥狀情況下的前列腺疾病類型,充分融合了大數據算法和醫學專家經驗的優勢[6]。最終驗證得出模型預測及識別前列腺炎的綜合準確率高達91.7%,說明該模型可用于診治前列腺疾病類型,為醫護人員提供更加符合辯證論治的理念以及臨床實際應用模型,進而為醫護人員提供決策支持。未來,還可以通過引入診療方案的理念搭建診治前列腺疾病的貝葉斯網絡模型,從識別到療養方法著手,不斷推進模型的迭代升級。