吳燎
摘要:疾病的診斷準(zhǔn)確性是中醫(yī)臨床用藥的關(guān)鍵,利用神經(jīng)網(wǎng)絡(luò)診斷中醫(yī)疾病有利于提高疾病診斷的準(zhǔn)確性,有利于中醫(yī)數(shù)字化的發(fā)展。在MATLAB環(huán)境下,利用BP神經(jīng)網(wǎng)絡(luò)技術(shù),通過癥狀預(yù)測糖尿病、高血壓、咳嗽、冠心病、胃病。通過數(shù)據(jù)的整理,并提煉出網(wǎng)絡(luò)模型,臨床驗(yàn)證咳嗽的正確率達(dá)到93%,糖尿病正確率達(dá)到91%,高血壓正確率達(dá)到94%,冠心病正確率達(dá)到97%,胃病的正確率達(dá)到90%,利用人工神經(jīng)網(wǎng)絡(luò)成功實(shí)現(xiàn)了疾病的診斷。
關(guān)鍵詞:中醫(yī);神經(jīng)網(wǎng)絡(luò);預(yù)測;診斷
中圖分類號:G642? ? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2019)22-0200-03
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
1 引言
通過國內(nèi)期刊數(shù)據(jù)庫對BP神經(jīng)網(wǎng)絡(luò)和中醫(yī)臨床診斷檢索了87篇相關(guān)論文,其中關(guān)于神經(jīng)網(wǎng)絡(luò)報(bào)道16篇,BP神經(jīng)網(wǎng)絡(luò)報(bào)道27篇,人工神經(jīng)網(wǎng)絡(luò)報(bào)道10篇,與神經(jīng)網(wǎng)絡(luò)相關(guān)的論文一共43篇。關(guān)于神經(jīng)網(wǎng)絡(luò)應(yīng)用于疾病診斷,關(guān)于中醫(yī)診斷9篇,中醫(yī)證候9篇,中醫(yī)專家系統(tǒng)6篇,高血壓3篇,哮喘2篇,大腸癌2篇,冠心病3篇,糖尿病3篇。在以前疾病的診斷中,一直試想如何提高診斷率是我們一直在努力思考的問題之一,雖然在利用BP神經(jīng)網(wǎng)絡(luò)達(dá)到了90%以上的準(zhǔn)確率,大多數(shù)在92%左右。此研究通過數(shù)據(jù)整理,增加了樣本采集量,準(zhǔn)確率可以達(dá)到98%左右。之前,研究的病歷資源較少,大腸癌癥型分類研究中應(yīng)用數(shù)據(jù)為338例,糖尿病腎病中醫(yī)侯癥中研究數(shù)據(jù)為449個(gè),數(shù)據(jù)量往往只有200至400個(gè)左右。本次增加了樣本采集量,通過1565個(gè)數(shù)據(jù)實(shí)驗(yàn),其中包括不同的疾病,糖尿病,高血壓,冠心病,咳嗽,胃病。使得疾病的類型覆蓋面大大提高,得到各種急病的診斷率有所提高。
2 采集數(shù)據(jù)
采用的數(shù)據(jù)來四川省各個(gè)縣市醫(yī)院的臨床數(shù)據(jù),由于實(shí)際情況臨床的診斷對象表現(xiàn)出不止一種病,可能患其他各種疾病,所以研究又引入了高血壓、咳嗽、冠心病、胃病等疾病一同建立模型,模擬真實(shí)的就醫(yī)環(huán)境。數(shù)據(jù)針對糖尿病、高血壓、咳嗽、冠心病,胃病共1565例。病例包括乏力、便秘、心悸等310個(gè)癥狀,以及Ⅱ型糖尿病、高血壓、咳嗽、冠心病、胃病5個(gè)疾病診斷。
2.1數(shù)據(jù)清洗規(guī)則
數(shù)據(jù)的收集過程中,會產(chǎn)生各種難以避免的錯(cuò)誤和不規(guī)范操作,導(dǎo)致數(shù)據(jù)庫中有噪聲(noise),不完整(missing),不一致(inconsistent)的數(shù)據(jù)[1],要保證數(shù)據(jù)的規(guī)范正確,為此,首先要進(jìn)行數(shù)據(jù)的清洗。對于數(shù)據(jù)的清洗采用:填補(bǔ)遺漏的數(shù)據(jù)值、平滑噪聲數(shù)據(jù)等[2]。對于疾病的描述不準(zhǔn)確、遺漏的數(shù)據(jù)。采取舍去的方法,保證數(shù)據(jù)的完整性。對于癥狀與描述的不統(tǒng)一,疾病的診斷不統(tǒng)一。按照國家中醫(yī)藥管理局發(fā)布的術(shù)語規(guī)范進(jìn)行規(guī)范化降噪,保證數(shù)據(jù)的一致性和真實(shí)性。對于空白,錯(cuò)誤的數(shù)據(jù),一律舍去,保證數(shù)據(jù)的正確和完整。在數(shù)據(jù)清洗之后,將數(shù)據(jù)整理,進(jìn)行數(shù)字化編碼處理。數(shù)字化編碼以0、1編碼[3],0代表不存在,1代表存在。
2.2清洗方法
數(shù)據(jù)預(yù)處理:刪除錯(cuò)誤和空白的數(shù)據(jù),保證數(shù)據(jù)的正確性。替換不規(guī)范的數(shù)據(jù),保證數(shù)規(guī)范統(tǒng)一,得到1020例正確數(shù)據(jù)。其中確診糖尿病590例,確診高血壓61例,確診咳嗽205例,確診冠心病21例,確診胃病143例。
主成分分析:對歸一化處理后的數(shù)據(jù)進(jìn)行主成分分析[4],由于1565條數(shù)據(jù)涵蓋的癥狀有302個(gè)。如果將每一個(gè)癥狀輸入神經(jīng)網(wǎng)絡(luò),會大大增加網(wǎng)絡(luò)復(fù)雜度。所以在不影響診斷的情況下,選擇主成分即可。主成分的選定標(biāo)準(zhǔn)為頻數(shù)大于15的癥狀,經(jīng)過篩選前27個(gè)癥狀的頻數(shù)大于15,輸入癥狀從302個(gè)提煉至27個(gè)。
3 BP神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)
3.1網(wǎng)絡(luò)層數(shù)
BP神經(jīng)網(wǎng)絡(luò)[6]可以包含一個(gè)或者多個(gè)隱含層,理論上已經(jīng)證明,單個(gè)隱含層可以通過適當(dāng)增加神經(jīng)元節(jié)點(diǎn)的個(gè)數(shù)實(shí)現(xiàn)任意非線性映射。對于大多數(shù)應(yīng)用場合,單個(gè)隱含層即可滿足需要。但如果樣本過多,增加一個(gè)隱含層可以明顯減少網(wǎng)絡(luò)規(guī)模。因?yàn)闃颖緮?shù)據(jù)輸入層有27個(gè)輸入節(jié)點(diǎn),所構(gòu)成的網(wǎng)絡(luò)較復(fù)雜,因此采用2個(gè)隱藏層。
3.2輸入層節(jié)點(diǎn)數(shù)
輸入層節(jié)點(diǎn)數(shù)由于輸入向量的維數(shù)決定。此研究輸入27個(gè)癥狀,所以有27個(gè)輸入節(jié)點(diǎn)。
3.3隱含層節(jié)點(diǎn)數(shù)
隱含層節(jié)點(diǎn)數(shù)[7]決定了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。目前對確定隱含層節(jié)點(diǎn)個(gè)數(shù)沒有一個(gè)明確方法,需要參考公式,再結(jié)合實(shí)驗(yàn)調(diào)整節(jié)點(diǎn)個(gè)數(shù),確定最佳的訓(xùn)練效果。經(jīng)過實(shí)驗(yàn)調(diào)整,最終確定了兩個(gè)隱含層個(gè)數(shù)為6和3的訓(xùn)練的時(shí)間最短,網(wǎng)絡(luò)誤差最小,最后的準(zhǔn)確率也較高。
3.4輸出層神經(jīng)元個(gè)數(shù)
輸出層的神經(jīng)元個(gè)數(shù)即為需要預(yù)測的疾病個(gè)數(shù)。本次研究分別有糖尿病、咳嗽、冠心病、高血壓、胃病五個(gè)疾病,所以對應(yīng)有五個(gè)輸出節(jié)點(diǎn)。
3.5隱含層傳輸函數(shù)的選擇
BP網(wǎng)絡(luò)的輸入節(jié)點(diǎn)傳遞函數(shù)[8]有多種。最常見的兩種為Log-sigmoid和Tan-sigmoid。Log-sig型函數(shù)的輸入值可以取任意的值,輸出值一般為(0,1)之間,Tansig函數(shù)的輸入值可以為任意值,輸出值一般在(-1,1)之間。由于本次研究的期望輸出都是(0,1),所以選擇對應(yīng)的Log-sig作為傳遞函數(shù)。輸出節(jié)點(diǎn)轉(zhuǎn)移函數(shù)選用tansig函數(shù)或purelin函數(shù)。對于函數(shù)的選擇,本實(shí)驗(yàn)分別試用了兩個(gè)函數(shù),結(jié)果表明tansig函數(shù)在65次達(dá)到最小梯度,purelin函數(shù)在15次達(dá)到最小梯度。所以采用purelin函數(shù)的訓(xùn)練效果較好。
3.6訓(xùn)練函數(shù)選擇
訓(xùn)練函數(shù)[9]的選擇用trainlm( Levenberg-Marquardt )提供數(shù)非線性最小化的數(shù)值解。此算法能借由執(zhí)行時(shí)修改參數(shù)達(dá)到結(jié)合高斯-牛頓算法以及梯度下降法的優(yōu)點(diǎn),并對兩者之不足作改善。函數(shù)的速度很快,但該函數(shù)運(yùn)行過程會消耗大量的內(nèi)存資源。如果計(jì)算機(jī)內(nèi)存不夠大,采用訓(xùn)練函數(shù)trainbfg或trainrp。雖然這兩個(gè)函數(shù)的運(yùn)行速度比較慢,但它們的共同特點(diǎn)是內(nèi)存占用量小,不至于出現(xiàn)訓(xùn)練過程死機(jī)的情況。
4 BP神經(jīng)網(wǎng)絡(luò)建立
在MATLAB 7.0 環(huán)境下,建立BP 網(wǎng)絡(luò)模型。該網(wǎng)絡(luò)包括一個(gè)輸入層、2個(gè)隱含層和一個(gè)輸出層, 其中輸入層包含27個(gè)輸入神經(jīng)元;2個(gè)隱含層分別有6、3個(gè)神經(jīng)元;輸出層包含4個(gè)輸出神經(jīng)元。2個(gè)隱含層之間通過正切S型傳遞函數(shù)(tansig)連接,隱含層與輸出層之間用對數(shù)s型傳遞函數(shù)(logsig)連接。設(shè)定網(wǎng)絡(luò)的系統(tǒng)誤差為小于0.001,最大迭代次數(shù)為 2000次,最小下降梯度為1*e-7。
4.1 BP網(wǎng)絡(luò)的輸出方式
將具有糖尿病、高血壓、冠心病、咳嗽、胃病5種證型診斷樣本的期望輸出值分別定為(1,0),(1,0),(1,0),(1,0),(1,0)。
4.2 BP網(wǎng)絡(luò)的訓(xùn)練
第1次訓(xùn)練經(jīng)過20次迭代以后,網(wǎng)絡(luò)的誤差低于0.0082363289,訓(xùn)練自動(dòng)停止;第2次訓(xùn)練經(jīng)過 42次迭代后,網(wǎng)絡(luò)的系統(tǒng)誤差降至0.0013009759;上述數(shù)值均小于規(guī)定的最小誤差0.01, 網(wǎng)絡(luò)趨于穩(wěn)定,網(wǎng)絡(luò)性能達(dá)標(biāo),訓(xùn)練自動(dòng)停止。
4.3 BP網(wǎng)絡(luò)的測試
將研究的數(shù)據(jù)分為三份,其中兩份數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),一份數(shù)據(jù)用于檢驗(yàn)。用檢驗(yàn)數(shù)據(jù)對訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)做檢驗(yàn)。并重復(fù)三次實(shí)驗(yàn),測試結(jié)果,保證訓(xùn)練方法的正確性。
4.4結(jié)果與討論
從結(jié)果中可以看到,該網(wǎng)絡(luò)模型對于糖尿病,具有較高的辨識率相對穩(wěn)定可靠。糖尿病、咳嗽和高血壓、胃病準(zhǔn)確率達(dá)90%以上,冠心病準(zhǔn)確率達(dá)97%。每種疾病的準(zhǔn)確率不相同,其中冠心病的準(zhǔn)確率最高,三次測試,達(dá)到了97%,而胃病、糖尿病的準(zhǔn)確率相比之下較低,為92%左右。造成準(zhǔn)確率不同的原因有多種,可能與訓(xùn)練數(shù)據(jù)的量有關(guān),可能與疾病本身的癥狀相關(guān)。此次研究糖尿病的病例最多,糖尿病590例,咳嗽205例,冠心病21例,高血壓61例,胃病143例。冠心病的數(shù)據(jù)量相對較少,但是準(zhǔn)確率也很高,可能和疾病的本身特異性癥狀相關(guān)。高血壓準(zhǔn)比例數(shù)量較多,但確率較低,可能和共有癥狀混淆有關(guān)。我們從臨床上了解到,高血壓和糖尿病常為并發(fā)疾病,糖尿病的患者同時(shí)也容易患高血壓[10],二者的癥狀常常共同出現(xiàn),在1020例數(shù)據(jù)中,同時(shí)患有高血壓和糖尿病的達(dá)55例,所以糖尿病的診斷很可能會影響到高血壓的診斷,對于高血壓的診斷造成一定的誤診。但是此猜想還有待今后的研究進(jìn)一步確認(rèn)。
5 結(jié)論
此實(shí)驗(yàn)基于模擬真實(shí)的就診環(huán)境,利用真實(shí)的電子臨床數(shù)據(jù),結(jié)合matlab軟件,可以輔助預(yù)測了糖尿病,咳嗽,高血壓,冠心病的診斷。說明BP神經(jīng)網(wǎng)絡(luò)不僅可以成功地模擬非線性關(guān)系,從大量的數(shù)據(jù)中學(xué)習(xí),自主的進(jìn)行判斷,從而幾乎完美的逼近真實(shí)的數(shù)據(jù)。而且此網(wǎng)絡(luò)模型成功地預(yù)測了多種疾病。但是,本次實(shí)驗(yàn)還有諸多問題需要改進(jìn)。
5.1 數(shù)據(jù)的量小,質(zhì)量不高
雖然本次處理的數(shù)據(jù)達(dá)到了1565條,但是跟實(shí)際的臨床環(huán)境需要的大量數(shù)據(jù)還是有很大的差距。一個(gè)良好的神經(jīng)網(wǎng)絡(luò)要學(xué)到幾十年中醫(yī)的臨床經(jīng)驗(yàn),其需要的訓(xùn)練量是百萬級別的。所以數(shù)據(jù)量還遠(yuǎn)遠(yuǎn)不夠。而且,本次實(shí)驗(yàn)從1565條數(shù)據(jù)中清理后只剩下了1020條數(shù)據(jù).其中不合格的數(shù)據(jù)量達(dá)到了34.8%,說明電子數(shù)據(jù)的質(zhì)量還有待提高。
5.2 數(shù)據(jù)編碼得不斷優(yōu)化
本次處理數(shù)據(jù)采用二進(jìn)制編碼對癥狀編碼。每一個(gè)癥狀只有0,1兩種輸入選項(xiàng)。所以此方法造成BP神經(jīng)網(wǎng)絡(luò)輸入的節(jié)點(diǎn)數(shù)龐大,而且并沒有涵蓋所有的癥狀。為此,以后的研究中可以通過分類編碼的方式。將所有的癥狀分類,并且在每一個(gè)類別中進(jìn)行編碼。這樣既可以減少輸入節(jié)點(diǎn)的數(shù)量,也可以涵蓋所有的癥狀。最終減少了網(wǎng)絡(luò)的規(guī)模,也保證了數(shù)據(jù)的完整性。
5.3 診斷復(fù)雜度不夠
研究采用的數(shù)據(jù)涵蓋了五個(gè)疾病診斷。包括咳嗽,糖尿病,高血壓,冠心病,胃病。五種疾病在癥狀上的差異較大,正確率很高。以后要研究在癥狀相似的疾病間的診斷,增加復(fù)雜度。這樣才能真正做到模擬中醫(yī)思維,提高疾病的診斷率。
中醫(yī)診斷智能模型從不同的癥狀,共有癥狀之間去辨別,利用癥狀之間的聯(lián)系和差別從而診斷出不同的疾病,成功地模擬了臨床的診斷。此研究在matlab環(huán)境下實(shí)現(xiàn)了神經(jīng)網(wǎng)絡(luò)的疾病診斷,未來人工智能應(yīng)用是醫(yī)療行業(yè)發(fā)展的方向,期待將神經(jīng)網(wǎng)絡(luò)模型應(yīng)用于現(xiàn)實(shí)的醫(yī)院HIS系統(tǒng),進(jìn)一步完善神經(jīng)網(wǎng)絡(luò)在醫(yī)療行業(yè)的應(yīng)用。
參考文獻(xiàn):
[1] 孟祥逢, 魯漢榕, 郭玲. 基于遺傳神經(jīng)網(wǎng)絡(luò)的相似重復(fù)記錄檢測方法[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2010,31(7):1550-1553.
[2] 覃華, 蘇一丹, 李陶深. 基于遺傳神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)清洗方法[J]. 計(jì)算機(jī)工程與應(yīng)用, 2004,40(3):45-46.
[3] 宋擒豹, 沈鈞毅. 神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)挖掘方法中的數(shù)據(jù)準(zhǔn)備問題[J]. 計(jì)算機(jī)工程與應(yīng)用, 2000,36(12):102-104.
[4] 賀昌政, 俞海. BP人工神經(jīng)網(wǎng)絡(luò)主成分分析預(yù)測模型及應(yīng)用[J]. 數(shù)量經(jīng)濟(jì)技術(shù)經(jīng)濟(jì)研究, 2001,18(9):104-106.
[5] 邱龍金, 賀昌政. 神經(jīng)網(wǎng)絡(luò)穩(wěn)定性的交叉驗(yàn)證模型[J]. 計(jì)算機(jī)工程與應(yīng)用, 2010,46(34):43-45.
[6] 陳朝陽, 行小帥, 李玥. 共軛梯度BP算法在Matlab 7.0中的實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù), 2009,32(18):125-127.
[7] 沈花玉, 王兆霞, 高成耀,等. BP神經(jīng)網(wǎng)絡(luò)隱含層單元數(shù)的確定[J]. 天津理工大學(xué)學(xué)報(bào), 2008,24(5):13-15.
[8] 張曉文,楊煜普,許曉鳴. 神經(jīng)網(wǎng)絡(luò)傳遞函數(shù)的功能分析與仿真研究[J]. 計(jì)算機(jī)仿真, 2005,22(10):176-178.
[9] 陳楊,王茹,林輝. Matlab6.0版本中神經(jīng)網(wǎng)絡(luò)工具箱訓(xùn)練算法的使用與比較[J]. 電腦與信息技術(shù), 2002(3):1-6.
[10] 孔德坤, 張曉斌. 糖尿病與高血壓[J]. 中華內(nèi)分泌代謝雜志, 2005,21(5):68-70.
【通聯(lián)編輯:王力】