沈 海,王黎光
(西京學院計算機學院,西安 710123)
貝葉斯網(wǎng)絡(Bayesian Network)是一種圖形推理技術(shù),用于表達變量之間的因果關(guān)系,是為了解決不定性和不完整性問題而提出的數(shù)學圖論模型。貝葉斯網(wǎng)絡對于不確定知識的開發(fā)具有很大的優(yōu)勢[1]。在醫(yī)學領(lǐng)域中,貝葉斯網(wǎng)絡也常應用于癲癇病[2]、乳腺癌[3]等常見疾病的診治工作中。因此,本文將貝葉斯網(wǎng)絡應用到診治前列腺疾病案例中。
貝葉斯網(wǎng)絡軟件GeNIe2.3為匹茲堡大學決策系統(tǒng)實驗室所開發(fā)的貝葉斯網(wǎng)絡建模軟件,其初始界面如圖1所示。貝葉斯網(wǎng)絡的建立包含結(jié)構(gòu)學習及參數(shù)訓練兩大板塊,診治前列腺疾病貝葉斯網(wǎng)絡模型建立過程如下。
圖1 貝葉斯網(wǎng)絡軟件GeNIe2.3初始界面
貝葉斯網(wǎng)絡的拓撲結(jié)構(gòu)表示變量之間定性的影響關(guān)系。貝葉斯網(wǎng)絡結(jié)構(gòu)學習旨在利用結(jié)構(gòu)學習算法從大量的歷史樣本數(shù)據(jù)中挖掘一種有向無環(huán)圖結(jié)構(gòu),其能表現(xiàn)變量之間的相關(guān)性。針對多變量、多樣本數(shù)據(jù),利用結(jié)構(gòu)學習算法進行結(jié)構(gòu)建模容易導致變量的結(jié)構(gòu)變得過于復雜,不利于后續(xù)進行分析和診治[4],因此本研究通過咨詢前列腺疾病領(lǐng)域的專家來獲取先驗知識,結(jié)合文獻查詢調(diào)研,再進一步利用相關(guān)結(jié)構(gòu)學習算法,構(gòu)建診治前列腺疾病貝葉斯網(wǎng)絡的基本模型結(jié)構(gòu)。
利用GeNIe軟件進行結(jié)構(gòu)學習前,首先利用文獻調(diào)研及專家經(jīng)驗確定部分變量之間的獨立關(guān)系。本研究所利用的樣本數(shù)據(jù)中,同類型變量之間保持為條件獨立,不同類型變量可能存在條件相關(guān)性?;讵毩㈥P(guān)系,將所收集的81個變量、2607個前列腺疾病樣本數(shù)據(jù)導入GeNIe軟件中,使用軟件中的K2學習算法進行數(shù)據(jù)挖掘。進行數(shù)據(jù)挖掘建立結(jié)構(gòu)前,將樣本變量劃分為三大類,分別是疾病類型、誘因和癥狀,如表1和表2所示。其中,可以看出前列腺疾病類型與癥狀、誘因之間存在關(guān)聯(lián)關(guān)系。站在醫(yī)學科學的角度講,誘因能導致前列腺疾病的發(fā)生,不同的前列腺疾病類型表現(xiàn)為特有的前列腺疾病癥狀。通過上述關(guān)系,可以初步確定診治前列腺疾病貝葉斯網(wǎng)絡的初始結(jié)構(gòu)。
表1 前列腺疾病類型與誘因的對應關(guān)系
表2 前列腺疾病類型與癥狀的對應關(guān)系
在上述基于醫(yī)學科學的基礎上,利用所導入的樣本案例數(shù)據(jù),結(jié)合GeNIe軟件中經(jīng)典的K2算法進行結(jié)構(gòu)學習。該算法為K2評分函數(shù)和爬山搜索算法的融合算法,利用爬山算法搜索可能存在的結(jié)構(gòu),并利用K2評分函數(shù)進行打分,得分最高的結(jié)構(gòu)即是最優(yōu)結(jié)構(gòu)。該算法的啟動界面如圖2所示,由于貝葉斯網(wǎng)絡中各節(jié)點的條件概率表隨著父節(jié)點數(shù)量的增加而增加,因此設置最大父節(jié)點數(shù)量為15個,任意節(jié)點的父節(jié)點數(shù)量不超過15個,避免條件概率表大而影響后續(xù)建模分析。
圖2 貝葉斯網(wǎng)絡K2結(jié)構(gòu)學習算法初始界面
最終獲得的診治前列腺疾病貝葉斯網(wǎng)絡拓撲圖初始結(jié)構(gòu)如圖3所示。其中,紅色節(jié)點為前列腺疾病類型,指向紅色節(jié)點的前列腺疾病類型的父節(jié)點——誘因,從紅色節(jié)點出發(fā)指向的節(jié)點為前列腺疾病類型的子節(jié)點——癥狀。該結(jié)構(gòu)清晰地呈現(xiàn)了前列腺疾病類型、誘因和病癥之間的關(guān)系。
圖3 診治前列腺疾病貝葉斯網(wǎng)絡拓撲結(jié)構(gòu)
貝葉斯網(wǎng)絡中的參數(shù)主要為非根節(jié)點(中間節(jié)點和葉節(jié)點)的條件概率表(Conditional prob?ability table),進而獲得貝葉斯網(wǎng)絡中各個節(jié)點的狀態(tài)概率分布。一般而言,在數(shù)據(jù)樣本量充足的情況下,可以通過機器學習算法進行數(shù)據(jù)挖掘以確定貝葉斯網(wǎng)絡參數(shù)。貝葉斯估計算法、極大似然估計算法、梯度下降算法和極大期望值算法為比較常用的參數(shù)學習算法;當數(shù)據(jù)集合完整可用時,極大似然估計算法能很好地挖掘樣本數(shù)據(jù)的相關(guān)性,有利于得到最優(yōu)參數(shù)。在樣本數(shù)據(jù)不完整、有缺失時,需采用EM算法進行參數(shù)訓練。
鑒于本工作所獲得的前列腺診斷數(shù)據(jù)樣本完整可用,并未存在缺失,本工作使用了GeNIe軟件中自帶的極大似然估計算法進行參數(shù)學習。該算法不斷模擬條件概率表的可能性情況,直到該條件概率表能使得中間節(jié)點和葉節(jié)點的后驗概率接近樣本數(shù)據(jù)的實際情況,該算法界面如圖4所示。
圖4 診治前列腺疾病貝葉斯網(wǎng)絡參數(shù)學習界面
將樣本數(shù)據(jù)與上述模型結(jié)構(gòu)進行匹配,使用極大似然估計算法來捕獲該模型中的條件概率表,最終獲得一個完整的且?guī)в懈怕史植嫉脑\治前列腺疾病的貝葉斯網(wǎng)絡模型。因為本工作所構(gòu)建的貝葉斯網(wǎng)絡模型結(jié)構(gòu)較為復雜,條件概率表亦較為龐大,通過參數(shù)訓練獲取的條件概率表示例如表3所示,0.8993表示當父節(jié)點“前列腺癌”和“前列腺增生”同時處于“State0”(不出現(xiàn))狀態(tài)時,子節(jié)點“下肢無力”處于“State0”(不出現(xiàn))狀態(tài)的概率為0.8993,其它以此類推。根據(jù)貝葉斯網(wǎng)絡正向推理理論,貝葉斯網(wǎng)絡正向推理計算方法如式(1)和(2)所示:
表3 “下肢無力”及其父節(jié)點“前列腺癌”和“前列腺增生”之間的條件概率表
式中:P(U)表示為一組節(jié)點U= {B1,B2,…,Bn}的聯(lián)合概率分布,Pa(Bi)為貝葉斯網(wǎng)絡中節(jié)點Bi的父節(jié)點集合,P(Bi)表示目標節(jié)點Bi的先驗概率。
運行模型進行正向推理后各節(jié)點的狀態(tài)概率分布結(jié)果如圖5所示。
如圖5可知,病人患上“急性細菌性前列腺炎”“急性非細菌性前列腺炎”“慢性非細菌性前列腺炎”“慢性細菌性前列腺炎”“前列腺癌”和“前列腺增生”的概率依次為26%、18%、10%、19%、23%和32%??芍∪嘶忌稀扒傲邢僭錾痹谇傲邢偌膊≈凶顬槌R?。
圖5 診治前列腺疾病貝葉斯網(wǎng)絡模型
貝葉斯網(wǎng)絡模型能否通過案例數(shù)據(jù)準確預測目標節(jié)點的狀態(tài)概率分布,是判斷模型有效性和可靠性的重要特征。常用的模型檢驗方法包括樣本黃金分割法、逐一驗證法和K折交叉驗證法[5]。樣本黃金分割法要求提前將數(shù)據(jù)樣本按照一定的比例分為參數(shù)訓練集和驗證集,一般合適的比例為60%訓練集,40%驗證集,但該方法存在一定的偶然性,受到劃分比例和劃分者的主觀影響更大。逐一驗證法要求將n個數(shù)據(jù)樣本中的n-1個樣本案例作為參數(shù)學習集,剩余1個作為驗證案例驗證模型的準確性,該方法能全面覆蓋樣本進行驗證,但對于數(shù)據(jù)量大的樣本案例,運算速度過慢,不利于進行模型驗證。
本工作使用了K折交叉驗證法構(gòu)建混淆矩陣,以驗證上述模型的準確性。首先設置K折的數(shù)量,由于本工作樣本數(shù)據(jù)量大,設置K為5促進驗證過程快速運行,即將2607份樣本數(shù)據(jù)平均分成5份;其次設置驗證節(jié)點為“急性細菌性前列腺炎”“急性非細菌性前列腺炎”“慢性非細菌性前列腺炎”“慢性細菌性前列腺炎”“前列腺癌”和“前列腺增生”等5個前列腺疾病節(jié)點,將其中4份作為網(wǎng)絡的參數(shù)訓練集,剩余1份作為網(wǎng)絡的模型驗證集檢驗模型預測驗證節(jié)點的準確性,重復迭代5次,直至5個樣本數(shù)據(jù)集合均已完全覆蓋完畢。最終獲得混淆矩陣如圖6所示,矩陣對角線中的數(shù)值即為預測準確的案例數(shù)量。由圖6可知,急性細菌性前列腺炎”“急性非細菌性前列腺炎”“慢性非細菌性前列腺炎”“慢性細菌性前列腺炎”“前列腺癌”和“前列腺增生”等5個前列腺疾病節(jié)點的案例驗證準確性依次高達88.34%、91.04%、89.96%、85.61%、94.26%、90.01%,其中,對前列腺癌的預測準確率高達94.26%。可知該模型對于醫(yī)院診治前列腺疾病具有極高的有效性和實用性,可用于臨床診治前列腺疾病。
圖6 各驗證節(jié)點的準確率
本研究以前列腺疾病為例,構(gòu)建了診治前列腺疾病的靜態(tài)貝葉斯網(wǎng)絡模型,通過參數(shù)學習獲取了條件概率表,量化了不同誘因、疾病類型、癥狀之間的影響關(guān)系。通過K折交叉驗證法,驗證了模型是否能夠準確識別和預測不同誘因及癥狀情況下的前列腺疾病類型,充分融合了大數(shù)據(jù)算法和醫(yī)學專家經(jīng)驗的優(yōu)勢[6]。最終驗證得出模型預測及識別前列腺炎的綜合準確率高達91.7%,說明該模型可用于診治前列腺疾病類型,為醫(yī)護人員提供更加符合辯證論治的理念以及臨床實際應用模型,進而為醫(yī)護人員提供決策支持。未來,還可以通過引入診療方案的理念搭建診治前列腺疾病的貝葉斯網(wǎng)絡模型,從識別到療養(yǎng)方法著手,不斷推進模型的迭代升級。