劉志雄,潘媛媛,2
(1.皖南醫(yī)學院醫(yī)學信息學院,安徽蕪湖 241002;2.皖南醫(yī)學院健康大數(shù)據(jù)挖掘與應用研究中心,安徽蕪湖 241002)
心肌梗死(AMI)是冠狀動脈急性、持續(xù)性缺血缺氧所引起的心肌壞死。約半數(shù)以上的急性心肌梗死患者,在起病前1—2天或1—2周有前驅癥狀,其前驅癥狀需要得到患者以及家屬重視,最常見的是原有的心絞痛加重,心絞痛發(fā)作時間延長,或患者對硝酸甘油效果變差;或一些繼往無心絞痛者,突然出現(xiàn)長時間心絞痛或出現(xiàn)不規(guī)律的頻繁心絞痛癥狀。心肌梗死可并發(fā)心律失常、導致患者休克或心力衰竭,其癥狀嚴重,常可危及生命?;颊咭坏┐_診心肌梗死,病情難以控制或無法預測其發(fā)病時間,導致患者傷亡高。中國近年來心絞痛患者人數(shù)呈明顯上升趨勢,且40歲以下中年人群發(fā)病率呈逐年上升趨勢,每年新發(fā)至少50萬,現(xiàn)有患者至少200萬,心肌梗死作為老年人常見病,其發(fā)病率高,發(fā)病后會對患者造成不可逆的傷害。
關于疾病發(fā)生預測的研究一直是各領域研究的熱點,目前國內(nèi)的心肌梗死疾病預測大多數(shù)針對預后治療和疾病死亡率,2020年有學者通過Logistic回歸分析急性ST段抬高型心肌梗死患者(STEMI)PCI術后6月發(fā)生不良心血管事件(MACE)的危險因素[2];在心肌梗死領域,學者通過獲取Holter文件、心率變異SDNN及超聲心動圖檢測的左室射血分數(shù)、左室舒張末期直徑的參數(shù),對患者進行隨訪,采用變量回歸分析得到室性早搏后竇性心律震蕩現(xiàn)象的減弱或消失是急性心肌梗死后患者死亡的獨立預測指標[3];在疾病預測領域也有學者采用回顧性分析,探討SYNTAX積分和Gensini評分對急性ST段抬高心肌梗死(STEMI)患者遠期預后的預測價值[4].
基于深度學習的模型正在革命性地改變部分領域,它能夠解決涉及大量快速變化的高維數(shù)據(jù)[5]。深度學習模型的搭建也成為熱門應用。神經(jīng)網(wǎng)絡與預測臨床事件的遞歸神經(jīng)網(wǎng)絡(RNN)模型被發(fā)現(xiàn)相對于其他傳統(tǒng)的方法更準確,但不容易解釋。長短時記憶網(wǎng)絡(LSTM)是近年來應用于臨床數(shù)據(jù)的一種遞歸神經(jīng)網(wǎng)絡,用于學習醫(yī)學概念的低維表示,并對特定臨床措施活動的時間序列進行分類處理,LSTM對于時間序列的處理準確度高,模型更易被大眾接受,因此,LSTM現(xiàn)在被廣泛應用于時間序列分析預測。相比較RNN而言,LSTM可以保存數(shù)據(jù)更久,其時間梯度損失較慢,LSTM使得計算機對語言的處理不再停留在簡單的字面匹配層面,而是進一步深入到語義理解的層面。
心肌梗死涵蓋人體系統(tǒng)范圍廣、病因復雜,因此,針對心肌梗死的研究進展一直比較緩慢,并且心肌梗死的研究主要集中于病理學、臨床醫(yī)學、生物化學和分子生物學等醫(yī)學或生命學領域,計算機科學領域的研究相較不多。本項目將基于LSTM算法,關注在未確診病情狀況下,通過對患者出現(xiàn)心肌梗死早期癥狀進行研究,預測患者患有心肌梗死的概率。
長短期記憶網(wǎng)絡(Long—Short Term Memory,LSTM)在1997年提出的。LSTM模型是RNN模型的一種。LSTM由于其設計特點,適合對時間序列進行建模預測,如文本數(shù)據(jù)、圖片數(shù)據(jù)、時間序列數(shù)據(jù)。RNN模型在處理長期記憶時[6],存在嚴重的梯度消失問題,因此RNN模型很難處理長序列的數(shù)據(jù)或RNN模型在處理長序列的數(shù)據(jù)時準確度斷崖式下降。為了解決這一問題,從RNN模型上衍生出了LSTM模型,它解決了常規(guī)RNN模型的梯度消失問題,使得模型在進行長序列數(shù)據(jù)預測時,能夠表現(xiàn)出更好的效果,因此LSTM模型受到了廣泛的應用。
LSTM模型的結構相對于RNN較為復雜,LSTM模型的細胞結構是隊列結構,LSTM模型是若干個細胞串聯(lián)而成,在進行模型訓練或數(shù)據(jù)預測時,數(shù)據(jù)從第一個細胞進入,在細胞內(nèi)存在激活函數(shù),遺忘門等細胞內(nèi)容,數(shù)據(jù)被當前細胞處理之后,將得到一個輸出結果并將輸出結果傳遞至下一個細胞,下一個細胞將對傳入的數(shù)據(jù)進行同樣的處理,直至最后一個細胞將最終結果輸出。在訓練LSTM模型的過程中,數(shù)據(jù)通過細胞后,得出最終結果,LSTM模型會將該結果與真實結果進行比對,同時LSTM會通過比對的結果,對細胞內(nèi)部的參數(shù)進行調(diào)整、優(yōu)化,使LSTM模型下一次輸出的結果與真實結果更加相近。但訓練過程中,為了防止出現(xiàn)結果過擬合,LSTM模型會在每次訓練時,會使用正則化防止過擬合。LSTM模型細胞結構如圖1所示。
1)細胞狀態(tài)
LSTM模型每個細胞都擁有自己的細胞狀態(tài),細胞狀態(tài)為LSTM訓練過程中,該細胞輸出的值,在數(shù)據(jù)完整地通過一次所有細胞,細胞狀態(tài)會根據(jù)此次結果進行更新優(yōu)化,細胞狀態(tài)的優(yōu)化調(diào)整直至訓練結束或細胞狀態(tài)達到最佳。
2)遺忘門
遺忘門是控制是否遺忘信息的“決策機構”。遺忘門為當前細胞輸入內(nèi)容,即為上一細胞的輸出結果。細胞并不能直接處理上一個細胞的輸出結果,在實際的模型中,細胞的輸入以及細胞的輸出具有很大的差異,遺忘門會對上一細胞的輸出結果進行函數(shù)變換,將上一個細胞的結果轉化成可用的細胞輸入。遺忘門的公式如式(1)所示。ht,xt為兩個向量合并,Wf為函數(shù)的權重,σ是細胞的激活函數(shù)(sigmoid函數(shù)),bf是函數(shù)偏置量。
3)輸入門
輸入門由兩個部分組成,第一部分使用了sigmoid激活函數(shù),輸出為it。第二部分為使用了tanh激活函數(shù),輸出為at。輸出門的公式如式(2)與式(3)所示。
公式中Wi,Ui,Ua,Wa為權重,bf為函數(shù)的偏置量。
4)細胞狀態(tài)更新
細胞狀態(tài)更新是輸出門之前重要的一環(huán),遺忘門與輸入門的結果都會作用于細胞狀態(tài),細胞狀態(tài)的更新將決定該模型的優(yōu)劣,當訓練結束后,細胞狀態(tài)停止更新。細胞狀態(tài)更新公式如式(4)與式(5)所示。?為Hadamard積,Ct-1為前一時刻細胞狀態(tài),Ct為當前時刻細胞狀態(tài)。
5)輸出門
輸出門分為兩個部分,第一部分如式(6)所示,第二部分如式(7)所示。輸出門最終結果為當前時刻的輸出。
Keras是基于TensorFlow框架和Theano的深度學習庫,是由Python語言編寫而成的神經(jīng)網(wǎng)絡API,Keras具有很多優(yōu)勢:原型快速且簡易,對初學者友好;模塊化結構,Keras內(nèi)模型獨立,損失函數(shù),優(yōu)化函數(shù),激活函數(shù)模塊可根據(jù)需求直接進行調(diào)用,數(shù)據(jù)處理效果理想;模型擴展性好,添加新模塊容易,只需要仿照現(xiàn)有的模塊編寫新的類或函數(shù);模型與Python協(xié)作性好,Keras無需單獨的模型配置文件,模型內(nèi)容在代碼可以直接體現(xiàn),因此模型調(diào)試擴展很方便。
利用LSTM模型實現(xiàn)對心肌梗死的發(fā)病預測,將數(shù)據(jù)集劃分為訓練集與測試集,通過訓練集訓練LSTM模型,多次訓練得出最優(yōu)的訓練模型,再用測試集測試訓練出的LSTM模型,得出模型對心肌梗死患者發(fā)病預測的準確率,選擇準確度最高的模型,模型準確率是判斷模型優(yōu)劣的重要指標。
該數(shù)據(jù)集包括Age,Sex,Cp等等14個標簽,該標簽內(nèi)容呈時間序列,時間間隔為3個月。數(shù)據(jù)部分如表1所示,數(shù)據(jù)部分標簽的意義如下。
表1 數(shù)據(jù)集(部分)
Cp:經(jīng)歷過的胸痛類型(值1:典型心絞痛,值2:非典型性心絞痛,值3:非心絞痛,值4:無癥狀)。
Trestbps:患者的靜息血壓(入院時的毫米汞柱)。
Chol:患者的膽固醇測量值,單位:mg/dl。
對各項標簽進行相關性分析,可以得出各個標簽對最終結果的相關性,以此為依據(jù),可以排除部分無相關性的數(shù)據(jù),這種做法可以提高模型的準確性,分析結果如圖2所示,其中1代表該標簽與患者患病完全正相關,-1代表該標簽與患者患病完全負相關。
圖2 相關性分析
由圖2知:是否患病和Cp、Thalach、Slope等標簽正相關,和Eang、Oldpeak、Ca、Thal等標簽負相關。選取與患病相關性較高標簽進行下一步處理,同時去掉與患病相關性較低的標簽。進一步處理相關性最較高的標簽與患者患病的關系,Thalach(靜息血壓)與Target關系,如圖3所示。Cp(胸痛類型)與Target關系,如圖4所示。
圖3 Thalach相關性
從圖3中橙色點分布情況可知,Thalach越大,患病的人數(shù)更多。而在運動中產(chǎn)生胸痛的人中(Target值為1),該類人群存在許多胸痛現(xiàn)象,該類人群心率比較高,大部分集中在120~150之間,對于并沒有心臟病的人群,該人群僅僅心率較高,并未產(chǎn)生胸痛。由圖4知,胸痛類型1、2、3患病概率更大[7]。
圖4 Cp相關性
使用Keras建立LSTM模型包括數(shù)據(jù)預處理、定義模型、訓練模型、評估模型以及使用模型進行預測。數(shù)據(jù)預處理階段,提取數(shù)據(jù)集中相關性較高的若干特征標簽,為該數(shù)據(jù)集生成DataFrame類型數(shù)據(jù),作為序列索引,提取出Target用作Y標簽,即結果標簽。對提取出的數(shù)據(jù)進行非空處理,填補缺失的數(shù)據(jù),并對其中Trestbps、Chol等特征標簽歸一化處理,將數(shù)據(jù)映射至(0,1)范圍內(nèi),如果不對數(shù)據(jù)進行歸一化處理,模型的LOSS將會很大,模型訓練效果也會很不理想。將處理后的數(shù)據(jù)劃分數(shù)據(jù)集,設置標志dataFlag=0.7,標志前數(shù)據(jù)為訓練集,標志后為測試集。xtrain={x1,x2,x3,...x0.8*len}和xtest={x0.8*len+1,...xlen-1xlen}。數(shù)據(jù)處理完成后,定義、構建LSTM神經(jīng)網(wǎng)絡,本次實驗采用了Keras中Sequential層次模型,采用層層線性疊加構架激活函數(shù)為relu函數(shù),評估函數(shù)為MSE(均方誤差)。輸入處理好的訓練集數(shù)據(jù)進入模型,訓練迭代128次,若訓練損失函數(shù)較低,將提前結束訓練。訓練結束后,對模型進行測試,輸入測試集數(shù)據(jù)進入模型,分析測試結果,得出結果參數(shù)。
本次使用采用了對比實驗,選取卷積神經(jīng)網(wǎng)絡RNN是深度學習常用算法之一,屬于多層前饋網(wǎng)絡,使用訓練完成的LSTM神經(jīng)網(wǎng)絡模型與RNN卷積神經(jīng)網(wǎng)絡模型對同一組數(shù)據(jù)進行預測,對比預測結果。
1)評估標準
使用均方誤差(MSE),檢測模型預測值與真實值之間的差異,MSE公式如式(8)所示。
損失函數(shù)(LOSS),損失函數(shù)可以用來評估模型的預測值和真實值不一致程度,LOSS函數(shù)可以很好地反映該模型訓練結果是否準確。LOSS公式如式(9)所示。
2)實驗結果分析
本節(jié)將通過MSE與LOSS兩種評估方法,去對比LSTM模型與RNN模型對本數(shù)據(jù)集的處理效果。在LSTM模型中,一共訓練了100次,BitchSize為訓練集的長度,優(yōu)化器為Adam。
LSTM模型的MSE為0.332,RNN模型的MSE為0.711。LSTM模型的LOSS為0.0604,RNN模型的MSE為0.351。
表2 實驗結果比對
從實驗評估標準看,LSTM模型的預測精度更高。
本文基于LSTM模型,通過對心肌梗死患者在不同時間的生命體征數(shù)據(jù)進行相關性分析,擇取與心肌梗死發(fā)病相關性較高的若干項標簽數(shù)據(jù)進行訓練。利用LSTM模型對處理后的數(shù)據(jù)進行訓練并對實現(xiàn)心肌梗死發(fā)病預測,得到發(fā)病預測結果。將上述結果與RNN模型預測結果進行對比,對比結果顯示:LSTM模型對心肌梗死發(fā)病預測結果準確更高,模型擬合性更優(yōu),LSTM模型可用于心肌梗死發(fā)病率預測。