李妍池
關鍵詞:細菌性肺炎;貝葉斯網(wǎng)絡;醫(yī)療診斷;無監(jiān)督學習
1引言
近年來,受環(huán)境污染、汽車尾氣等因素影響,加之飲食衛(wèi)生問題頻出,人們患細菌性肺炎的概率越來越高。這種肺炎主要是由金葡菌、肺炎鏈球菌引起的[1],感染后常常表現(xiàn)出干咳、發(fā)燒、呼吸困難等臨床癥狀,常見于兒童及65歲老人群體,致死率高達60%[2],嚴重時極有可能導致肺癌。目前,大多數(shù)醫(yī)院會對患者進行經(jīng)驗性療法,如使用抗生素,但這種醫(yī)療手段的成本較高。如果抗生素選擇不當,或治療措施不全面,很有可能加大患者死亡的風險。此外,用藥前必須明確病原菌及其耐藥性,這給合理用藥造成了極大的困難[3]。
為了更準確地診斷細菌性肺炎,快速評估病情嚴重程度,降低檢測成本,當前,基于計算機斷層掃描技術的檢測方法受到了廣大醫(yī)療人員的一致歡迎。通常來說,細菌性肺炎患者的肺部具有典型的影像學特征,包括毛玻璃結節(jié)、肺硬化、肺纖維化和多發(fā)性病變等[4]。近年來,有許多基于深度學習的患者肺部CT影像病灶分割的方法應運而生,但深度學習模型必須訓練海量的數(shù)據(jù)集才能在準確率上有所提升,訓練過程漫長。本文規(guī)避了傳統(tǒng)深度學習模型的不足,采用貝葉斯網(wǎng)絡這一概率模型計算患病的概率,根據(jù)概率高低幫助醫(yī)護人員迅速鎖定潛在患者并將之列為重點觀察對象,實施服藥、轉入重癥病房等一系列后續(xù)措施,從而避免盲目進行CT影像檢測,大大減輕醫(yī)療人員的工作壓力。
2貝葉斯網(wǎng)絡理論基礎
2.1貝葉斯網(wǎng)絡結構
貝葉斯網(wǎng)絡(Bayesian
Network)是一種描述基于概率推理的數(shù)學模型,是一個有向無環(huán)圖,它通過不確定性因果關系構建網(wǎng)絡,并且能夠在已知有限的、不確定的以及不完整的環(huán)境下進行模擬推理[5]。貝葉斯網(wǎng)絡因具有強大的數(shù)學性能,近年來越來越受到研究人員的重視,其在知識學習、醫(yī)療診斷、故障診斷、數(shù)據(jù)分析、視頻跟蹤、智能控制等領域被廣泛應用[6]。其結構如圖1所示。
當網(wǎng)絡結構較為復雜時,可結合式(1)(2)的變體,計算出網(wǎng)絡中各節(jié)點的條件概率。
2.2貝葉斯網(wǎng)絡的構建
利用貝葉斯網(wǎng)絡進行醫(yī)療診斷時,首先需要構建出結構合理的網(wǎng)絡模型。通常來講,模型構建分為以下步驟。
(1)確定構建網(wǎng)絡所需要的變量以及變量的含義。
(2)進一步確定變量之間的相互關系,根據(jù)約束條件確定變量間是否有依賴關系,從而確定節(jié)點之間的父子層級關系以及連接關系,作出有向無環(huán)圖。
(3)根據(jù)變量關系計算出網(wǎng)絡中每個節(jié)點的條件概率,交叉并反復多次進行上述過程,該步驟需要進行結構學習和參數(shù)學習。
3應用于肺炎診斷的貝葉斯網(wǎng)絡模型建立
3.1變量的選取
本文使用的數(shù)據(jù)集來自飛槳AI studio提供的癥狀檢測器,包含兩張CSV表格,列舉了以下變量。
(1)Country:受訪者的國家列表。
(2)Age:受訪者年齡,分為0~9歲、10~19歲、20~24歲、25~59歲、60歲及以上五個區(qū)間。
(3)Symptom:受訪者的臨床癥狀,具體為發(fā)燒、疲倦、干咳、呼吸困難、喉嚨痛、癥狀疼痛、鼻塞、流涕、腹瀉。
(4)Severity:患病嚴重程度,分為輕度、中度、重度三個等級。
(5)Contact:此人是否與其他確診細菌性肺炎患者接觸過,分為接觸、未接觸兩類。
由于數(shù)據(jù)過多,直接使用上述變量構建貝葉斯網(wǎng)絡會導致計算機負載過大、網(wǎng)絡結構復雜,不利于后續(xù)計算,為了降低模型復雜度,將一些變量合并,得到整合后的表格,如表1所列。
表1中,列表示具體病例,行表示該病例的癥狀、年齡、性別、是否感染等。
3.2變量相關性分析
利用SPSS Statistics對變量相關性進行分析,將原始數(shù)據(jù)表格輸入該軟件,可得表2。
由表2可知,癥狀對于是否感染肺炎具有最大的影響,其中發(fā)燒(Fev)、疲憊(Tir)、喉嚨痛(Sor)、干咳(Dry)、流鼻涕(Run)五個變量對感染肺炎具有最大的影響。另外,受訪者的年齡、性別對患病都有一定的影響。按照各變量對感染肺炎的影響大小排序,可以得出以下節(jié)點順序:1-發(fā)熱,2一呼吸困難,3一疲憊,4一喉嚨痛,5一干咳,6一疼痛,7一腹瀉,8一流鼻涕,9一鼻塞,10-age 0~9,11-age 60+,12-age 10~19,13-age 20~24,14-age 25~59,15-男性,16-女性。
利用K2搜索算法[7]構建網(wǎng)絡模型,在定義評分函數(shù)后,該算法可確定出各節(jié)點之間的父子關系,評分函數(shù)值高的為父節(jié)點,反之則為子節(jié)點,從而自動學習出最優(yōu)的網(wǎng)絡結構。
3.3貝葉斯網(wǎng)絡結構學習
明確節(jié)點的父子層級關系和順序后,利用Matlab中自帶的full-BNT工具箱構建貝葉斯網(wǎng)絡。網(wǎng)絡結構的生成是基于貪心算法的,即以某一個網(wǎng)絡結構為初始模型,每次學習調整一條邊,計算評分函數(shù),直到函數(shù)值不再減小。輸入節(jié)點名稱后,軟件自動生成的網(wǎng)絡結構如圖2所示。
圖2中,節(jié)點1~16為按照K2算法計算出的順序排列的癥狀、年齡及性別,節(jié)點17為感染肺炎。該結構圖直觀地反映出節(jié)點之間的關聯(lián)。由圖2可知,各種癥狀之間存在相互依賴關系,受訪者是否感染肺炎受多種因素影響,除表現(xiàn)出的臨床癥狀外,受訪者的年齡、性別都會影響最終結果。例如,老年人因身體機能衰退、抵抗力變差,患病的概率大于年輕人。若受訪者表現(xiàn)出疲憊的癥狀,則其發(fā)熱的概率就會增大。該網(wǎng)絡結構可以反映出節(jié)點之間的條件約束關系。
3.4貝葉斯網(wǎng)絡參數(shù)學習
構建完整的貝葉斯網(wǎng)絡最關鍵的一步是利用樣本數(shù)據(jù)集學習每一個節(jié)點對應的條件概率,概率值越準確,后續(xù)的診斷結果就越精確.因此需要進行貝葉斯網(wǎng)絡的參數(shù)學習。在原始數(shù)據(jù)集較為完整、沒有缺失值的情況下,通常采用最大似然法進行參數(shù)學習。計算各節(jié)點的條件概率時,先根據(jù)專家經(jīng)驗粗略地計算出先驗概率分布,再對數(shù)據(jù)集進行分析學習,計算出后驗概率分布,以此計算出每個節(jié)點的條件概率分布表。
4貝葉斯網(wǎng)絡診斷結果分析
貝葉斯網(wǎng)絡訓練好之后即可進行診斷,診斷的過程即通過一些屬性或變量的觀測值推導出待查詢的屬性與變量的取值。例如,對于一個60歲男性受訪者,觀測到此人表現(xiàn)出了發(fā)熱、流涕、干咳等癥狀,通過其性別、年齡、臨床癥狀等信息計算出網(wǎng)絡中節(jié)點17(感染肺炎)對應的聯(lián)合概率分布表,根據(jù)計算值判斷此受訪者感染肺炎的概率,從而確定是否需要將此人列為重點觀察對象,并采取用藥、CT觀測等后續(xù)一系列醫(yī)療措施。
在Matlab自帶的Full-BNT工具箱中,提供了功能強大的推理引擎。使用聯(lián)合樹推理引擎jtree_inf_engine(),將原始數(shù)據(jù)集中的1000條樣本輸入圖2網(wǎng)絡模型中,每一輪訓練都增加1000條樣本,直到將10000條樣本全部訓練完。模型訓練完成后,將測試集輸入模型中,即輸入受訪者的癥狀、年齡、性別等信息,輸出該受訪者患病的概率。輸人數(shù)據(jù)的格式為:datal=[1;1;1;1;1;1;1;1;2;2;2;1;2;2;1;2;1],即一個1x17的向量,若表現(xiàn)出某種臨床癥狀,則相應位置用1表示,若無此癥狀用2表示。上述示例中的datal表示一位臨床表現(xiàn)為發(fā)熱、呼吸困難、疲憊、喉嚨痛、干咳、疼痛、腹瀉、流鼻涕的10~19歲的男性,根據(jù)后續(xù)的肺部CT檢測結果綜合判斷為確診病例,而網(wǎng)絡給出的診斷結果也是患病,說明網(wǎng)絡很好地判斷出了該患者的患病情況。
對模型準確率進行測試時,在10000條樣本中,模型診斷出的感染肺炎病例數(shù)量為7533條,診斷準確率為73.8385%。
當輸入新的測試數(shù)據(jù)時,模型給出的預測結果如表3所列。
表3中,感染概率<50%為低風險,50%~70%為中風險,高于70%為高風險。對于中低風險人群,可采取自行去醫(yī)院取藥等措施,而高風險人群則需要后續(xù)進行CT影像檢測,根據(jù)檢測結果進一步確定是否確診。在后續(xù)的測試過程中,對100條受訪者的樣本進行了測試,將網(wǎng)絡給出的測試結果與受訪者真實的患病情況進行對比后,發(fā)現(xiàn)患病概率為70%以上的受訪者的診斷結果最接近真實數(shù)據(jù),即處在這一概率區(qū)間的受訪者的診斷準確率最高。這一結果對于醫(yī)療人員快速辨別潛在患者具有一定的指導意義。
5結束語
本文提出一種基于貝葉斯網(wǎng)絡的診斷模型,貝葉斯網(wǎng)絡是一種有向無環(huán)圖,可以詳細地刻畫變量之間的依賴關系,并使用條件概率來描述變量的聯(lián)合概率分布,非常適合應用于醫(yī)療診斷領域。本文首先使用Matlab中的Full-BNT工具箱,結合K2搜索算法得到網(wǎng)絡的最優(yōu)結構,再利用聯(lián)合樹推理引擎得到各節(jié)點的條件概率分布,求出最終模型,最后選取了多條樣本數(shù)據(jù)進行測試,將網(wǎng)絡計算出的患病概率與患者真實的患病情況進行對比,可以幫助醫(yī)療人員快速排查出需要重點觀察以及進一步檢測的人員,從而避免了大規(guī)模CT影像檢測造成的資源浪費。
本文提出的模型適用于處理沒有缺失值的樣本,但在實際生活中受到數(shù)據(jù)搜集技術手段、患者瞞報信息等因素影響,搜集到的數(shù)據(jù)往往有較多缺失值。未來應著重研究如何優(yōu)化模型的結構,從而更好地應用在缺失值的處理上。同時,該模型對于數(shù)據(jù)集較大的情況還不能很好地應對。為了未來能將該模型應用于各大醫(yī)院,需要增強模型的健壯性和魯棒性。將K2搜索算法、D一分離算法等算法結合,探索出一種更高效、性能更優(yōu)的結構學習算法是一種行之有效的措施,未來應著力研究如何進一步優(yōu)化網(wǎng)絡結構,提升模型的算力,助力醫(yī)療人員快速鎖定患者,減輕工作壓力。