楊欣怡,侯凌燕,楊大利,崔麗艷
(1.北京信息科技大學(xué)計(jì)算機(jī)學(xué)院,北京 100101;2.北京大學(xué)第三醫(yī)院,北京 100191)
腎移植排斥反應(yīng)是移植腎和受者產(chǎn)生免疫病理反應(yīng)所致病癥[1]。由于被移植者和移植者在生理上存在差異,腎移植可能會(huì)受到抗體的排異形成排斥反應(yīng)[2]。術(shù)后護(hù)理就成為了一個(gè)特別重要的階段,于是便產(chǎn)生了對(duì)腎移植的排斥反應(yīng)預(yù)測(cè)的需求[3]。在之前,大多數(shù)預(yù)測(cè)使用人工篩選的方法,但手工錄入信息繪制圖表的方法耗時(shí)長(zhǎng),對(duì)病人來(lái)說(shuō),可能隨時(shí)面臨著風(fēng)險(xiǎn)。
現(xiàn)今,疾病預(yù)測(cè)中常用的幾種數(shù)學(xué)模型的方法有時(shí)間序列預(yù)測(cè)法(Time Series Prediction Method)、灰色預(yù)測(cè)法、Markov預(yù)測(cè)法、人工神經(jīng)網(wǎng)絡(luò)法等[4]?,F(xiàn)今機(jī)器學(xué)習(xí)方法在疾病預(yù)測(cè)中運(yùn)用逐漸變得廣泛。
腎移植排斥反應(yīng)預(yù)測(cè)的難度,在于排斥反應(yīng)在越早的時(shí)間段發(fā)現(xiàn),對(duì)于病人的風(fēng)險(xiǎn)也就越小[5]。利用機(jī)器學(xué)習(xí)方法進(jìn)行腎移植排斥反應(yīng)的難點(diǎn)在于:
1)樣本量不足,這是由于真實(shí)進(jìn)行腎移植手術(shù)的病人不多且數(shù)據(jù)難獲取,腎移植手術(shù)數(shù)據(jù)樣本數(shù)量不足,給研究造成難度。
2)手術(shù)前對(duì)病人進(jìn)行周密的調(diào)查,排除一些手術(shù)風(fēng)險(xiǎn)高的病人,因此有無(wú)排斥反應(yīng)的病人樣本數(shù)量不均衡。
3)病患的排斥反應(yīng)數(shù)據(jù)存在時(shí)序性,為了從數(shù)據(jù)中更好地提煉預(yù)測(cè)信號(hào),必須對(duì)數(shù)據(jù)的時(shí)間序列信息進(jìn)行分析挖掘,對(duì)疾病進(jìn)行早期的干涉。
針對(duì)這3個(gè)問(wèn)題,本文采取如下措施:
1)將數(shù)據(jù)的分布進(jìn)行改變。本文使用SMOTE算法,將腎移植排斥反應(yīng)的樣本數(shù)據(jù)進(jìn)行上采樣,實(shí)現(xiàn)樣本數(shù)量的均衡。
2)選取恰當(dāng)?shù)念A(yù)測(cè)算法,進(jìn)行參數(shù)的調(diào)整和算法的優(yōu)化。本文選取RNN算法并進(jìn)行參數(shù)的調(diào)整優(yōu)化。
3)選取合適的算法評(píng)價(jià)準(zhǔn)則。不只考慮機(jī)器學(xué)習(xí)算法的角度,還從醫(yī)學(xué)的角度去選取評(píng)價(jià)準(zhǔn)則,從特異性、靈敏度、準(zhǔn)確率去衡量[6]。
圍繞腎移植后從病人提取的指標(biāo),在前期的調(diào)研中發(fā)現(xiàn)與腎損傷有重要關(guān)聯(lián)的指標(biāo)如表1所示。
表1 與腎損傷有重要關(guān)聯(lián)的指標(biāo)
依據(jù)這些指標(biāo),可以建立排斥反應(yīng)預(yù)測(cè)模型。本文從患者的各項(xiàng)指標(biāo)中選取8維指標(biāo),并利用指標(biāo)的5維時(shí)間維度:8 h、16 h、24 h、48 h、72 h的指標(biāo)數(shù)據(jù)組成向量作為循環(huán)神經(jīng)網(wǎng)絡(luò)的輸入向量對(duì)腎移植排斥反應(yīng)進(jìn)行預(yù)測(cè)。
圖1 SMOTE算法的原理
本文使用算法的結(jié)構(gòu)是N-to-one的RNN結(jié)構(gòu),這種結(jié)構(gòu)通常使用于序列分類問(wèn)題,每個(gè)隱藏層都有作為輸入,每一個(gè)xt是同一時(shí)間下指標(biāo)數(shù)據(jù)融合而成的向量[11]。N-to-one結(jié)構(gòu)的RNN算法結(jié)構(gòu)如圖2所示。
圖2 N-to-one的RNN結(jié)構(gòu)
圖2中,X={x1,x2,…,xt}代表輸入的樣本集合,也就是輸入層;W代表輸入層與隱藏層間權(quán)重;H={h0,h1,…,ht}代表t時(shí)刻的隱藏層的輸入;U代表上一時(shí)刻和此時(shí)刻的隱藏層的權(quán)重;V代表輸出層與隱藏層間的權(quán)重;最終,Y代表輸出層的結(jié)果。
在當(dāng)前問(wèn)題下,RNN的結(jié)構(gòu)可使用公式表達(dá)如下[12]:
ht=f(Uxt+Wht-1+b)
Y=Softmax(Vht+c)
公式中的b和c是常數(shù),表示偏置。每次只對(duì)最后一個(gè)隱藏層狀態(tài)ht做計(jì)算,因此和普通的RNN方法有所區(qū)別。每個(gè)隱藏層存在神經(jīng)元,它們會(huì)對(duì)上一時(shí)刻輸入的向量做線性變換,隨后使用激活函數(shù)進(jìn)行激活[13]。
以E作為交叉熵誤差,lr作為網(wǎng)絡(luò)的學(xué)習(xí)率(learning rate),以下是權(quán)值的更新方法:
圖3為在RNN網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)的結(jié)構(gòu)。
圖3 每個(gè)節(jié)點(diǎn)的運(yùn)算結(jié)構(gòu)
圖3中,St-1是t時(shí)刻隱藏層的輸入,nett=St-1W+XtU,則經(jīng)過(guò)nett計(jì)算后得到t+1時(shí)刻隱藏層的輸入St與t時(shí)刻輸出標(biāo)簽Ot。
在使用SMOTE-RNN算法時(shí),具體算法結(jié)構(gòu)如下:
1)依據(jù)SMOTE上采樣算法計(jì)算樣本間距離,取臨近樣本合成負(fù)類樣本,使樣本比例達(dá)成1∶1,計(jì)算公式為:
2)處理輸入層n維數(shù)據(jù)在m個(gè)時(shí)間段的時(shí)間向量,其中訓(xùn)練集中加入SMOTE算法合成的數(shù)據(jù),形成x的形狀包含數(shù)據(jù)編號(hào)、輸入最大長(zhǎng)度以及輸入數(shù)據(jù)。
3)在隱藏層中保存上一時(shí)間的隱藏變量,對(duì)隱藏層進(jìn)行Softmax激活。計(jì)算公式為:
這一步的目的是將向量轉(zhuǎn)換為概率,t時(shí)刻的隱藏層變量由當(dāng)前時(shí)間步的輸入和上一時(shí)間步的隱藏變量共同決定。
4)激活后的輸出向量和樣本的實(shí)際標(biāo)簽做一個(gè)交叉熵,計(jì)算公式為:
HY′(y)=-∑iy′ilog(yi)
其中,y′i表示實(shí)際的第i個(gè)的值,就是激活后的輸出向量{y1,y2,y3…}中第i個(gè)元素的值[14]。
5)輸出的結(jié)構(gòu)為數(shù)據(jù)編號(hào)與預(yù)測(cè)得到的分類組成的數(shù)組。
其中,激活函數(shù)的時(shí)間復(fù)雜度為O(n),則對(duì)n行進(jìn)行激活的時(shí)間復(fù)雜度為O(n2)。N×n與n×d運(yùn)算作為加權(quán)和,得到n×d矩陣,復(fù)雜度為O(n2d)。所以最后RNN網(wǎng)絡(luò)計(jì)算的算法復(fù)雜度是O(n2d)[15]。
本次實(shí)驗(yàn)選取的數(shù)據(jù)樣本由北醫(yī)三院采集獲得,均為腎移植手術(shù)后的真實(shí)數(shù)據(jù),如表2所示。
表2 腎移植排斥反應(yīng)數(shù)據(jù)樣本
實(shí)驗(yàn)選取了所有指標(biāo)中的8種,分別為KIM-1、L-FABP、mAlb/Cr、nag/Cr、cystatin C、b2-MG、ngal、IL-18共8種尿液標(biāo)志物,將每個(gè)病人的5個(gè)時(shí)間維度的數(shù)據(jù)相結(jié)合,組成一個(gè)向量作為訓(xùn)練網(wǎng)絡(luò)的輸入。將輸出分為2類,“-1”表示陰性樣本,“1”表示陽(yáng)性樣本。前期的數(shù)據(jù)處理分為以下幾步:1)去除存在數(shù)據(jù)缺失的數(shù)據(jù);2)對(duì)數(shù)據(jù)分組標(biāo)記;3)對(duì)數(shù)據(jù)進(jìn)行歸一化,保證運(yùn)算時(shí)算法的效率。
本文使用了八折交叉驗(yàn)證的方法來(lái)驗(yàn)證本文算法的效果,因此訓(xùn)練集和測(cè)試集數(shù)據(jù)的比例是7∶1,交叉進(jìn)行8次。
本網(wǎng)絡(luò)中定義了3個(gè)占位符,這為模型提供了輸入輸出數(shù)據(jù):X表示輸入的數(shù)據(jù)集合,Y表示輸出的分類結(jié)果。seqlen表示輸入數(shù)據(jù)的個(gè)數(shù)。
本文使用TensorFlow框架進(jìn)行實(shí)驗(yàn)方案的編寫。首先,定義一個(gè)LSTM_cell[16],它是一個(gè)長(zhǎng)短時(shí)記憶單元的循環(huán)網(wǎng)絡(luò)單元,使用tf.nn.dynamic_rnn進(jìn)行時(shí)間維度的擴(kuò)展。接著,使用函數(shù)dynamic_rnn,它可以用來(lái)實(shí)現(xiàn)遞歸神經(jīng)網(wǎng)絡(luò)(RNN)。輸入數(shù)據(jù)X,然后使用tf.nn.dynamic_rnn運(yùn)行cell,相當(dāng)于調(diào)用max_seq_len次call函數(shù)[17]。由于時(shí)間序列為5個(gè)時(shí)間段,應(yīng)使用第5隱藏層的輸出來(lái)計(jì)算分類。在TensorFlow中,不能直接使用seqlen獲取相應(yīng)位置的輸出,因此需要定義一個(gè)索引變量與tf.gather函數(shù)獲取相應(yīng)位置的輸出值。最后,再利用之前定義的權(quán)值和偏離率(bias)對(duì)輸出值進(jìn)行變換,得到logits進(jìn)行分類,logits表示模型未進(jìn)行縮放前的返回值,也就是進(jìn)入Softmax函數(shù)之前的值。之后,就可以使用它和正確的分類Y來(lái)定義損失和訓(xùn)練[18],此處的Y就是數(shù)據(jù)集中的分類。
RNN參數(shù)值的設(shè)置對(duì)訓(xùn)練效果影響很大,因此在定義時(shí)需要結(jié)合理論知識(shí)及實(shí)驗(yàn)情況進(jìn)行調(diào)整。表3為使用控制變量法得到的實(shí)驗(yàn)準(zhǔn)確率結(jié)果。
表3 使用控制變量法測(cè)試各參數(shù)設(shè)置的實(shí)驗(yàn)效果
經(jīng)過(guò)綜合考慮,此次訓(xùn)練的參數(shù)確定為learning_rate=0.01、training_iters=100000、batch_size=10、display_step=10。
在醫(yī)療評(píng)價(jià)指標(biāo)中,特異性(Specificity, SPE)、靈敏度(Sensitivity, SEN)和準(zhǔn)確度(Accuracy, ACC)是常見的評(píng)價(jià)指標(biāo)[19]。以下是3種評(píng)價(jià)指標(biāo)的計(jì)算公式。
其中,真陰性(TN)代表陰性數(shù)據(jù)的真分類,即為未發(fā)生排斥反應(yīng)的數(shù)據(jù)被劃分正確的數(shù)據(jù)。真陽(yáng)性(TP)代表陽(yáng)性數(shù)據(jù)的真分類,即是發(fā)生排斥反應(yīng)且被劃分正確的數(shù)據(jù)。而FN代表假陰性樣品,最后使用FP代表陰性樣品的假分類。換句話說(shuō),TN、TP、FN和FP分別對(duì)應(yīng)于正確拒絕、正確識(shí)別、不正確拒絕和錯(cuò)誤識(shí)別[20],具體解釋如表4所示。
表4 數(shù)據(jù)集分類混合矩陣
性能指標(biāo)SEN、ACC和SPE可用于生成可靠的結(jié)果估計(jì)。另外,還引入相對(duì)錯(cuò)誤率(Relatively Classified Fault Rate,RCFR)作為評(píng)價(jià)指標(biāo)。
腎移植排斥反應(yīng)樣品分別使用馬爾可夫預(yù)測(cè)法及RNN預(yù)測(cè)法這2種方法進(jìn)行對(duì)比實(shí)驗(yàn),在實(shí)驗(yàn)時(shí),根據(jù)數(shù)據(jù)特點(diǎn)分別增加實(shí)驗(yàn):根據(jù)3個(gè)時(shí)間段的指標(biāo)進(jìn)行預(yù)測(cè)實(shí)驗(yàn)、根據(jù)數(shù)據(jù)變化率的預(yù)測(cè)實(shí)驗(yàn)、根據(jù)數(shù)據(jù)變化量的對(duì)比試驗(yàn)。對(duì)比實(shí)驗(yàn)的加入是為了消除個(gè)體差異[21]。經(jīng)過(guò)幾組實(shí)驗(yàn)后,實(shí)驗(yàn)結(jié)果如表5所示。
表5 各預(yù)測(cè)方法的特異性、靈敏度、準(zhǔn)確度、相對(duì)分類錯(cuò)誤率對(duì)比 單位:%
由實(shí)驗(yàn)結(jié)果可以發(fā)現(xiàn):
1)通過(guò)本文方法得到的預(yù)測(cè)算法的準(zhǔn)確率達(dá)到了75.92%,與馬爾可夫分類模型相比更優(yōu)。
2)數(shù)據(jù)本身的數(shù)據(jù)量不充足且正負(fù)比例不夠均衡,導(dǎo)致其特異性相對(duì)較低,實(shí)際預(yù)測(cè)效果并不是非常理想。
由于在腎移植排斥反應(yīng)預(yù)測(cè)中,對(duì)于陽(yáng)性的病人誤診,很有可能耽誤病情,甚至危及生命,因此需要對(duì)參數(shù)進(jìn)行調(diào)整并增加對(duì)陽(yáng)性樣本的識(shí)別率。使用數(shù)據(jù)變化率進(jìn)行預(yù)測(cè)的準(zhǔn)確率達(dá)到了78.74%,使用數(shù)據(jù)變化量準(zhǔn)確率達(dá)到了80.95%。實(shí)驗(yàn)結(jié)果表明,通過(guò)數(shù)據(jù)變化量的方法進(jìn)行預(yù)測(cè)時(shí),準(zhǔn)確率達(dá)到最大。這可能是由于使用數(shù)據(jù)變化量會(huì)放大數(shù)據(jù)變化的特征,從而使算法的預(yù)測(cè)效果更明顯。
在進(jìn)行SMOTE-RNN實(shí)驗(yàn)預(yù)測(cè)法時(shí),部分會(huì)發(fā)生腎移植排斥反應(yīng)的數(shù)據(jù)在前3個(gè)指標(biāo)便可以順利預(yù)測(cè)出來(lái),于是可以在這之后進(jìn)行拓展方案:前3個(gè)指標(biāo)預(yù)測(cè)為排斥反應(yīng)時(shí),可以將腎移植排斥反應(yīng)判斷為超急性排斥反應(yīng)[22]。5個(gè)指標(biāo)預(yù)測(cè)出排斥反應(yīng)時(shí),可判斷為急性排斥反應(yīng)。按此進(jìn)行分類減少病人因未及時(shí)救治而使病情加重的風(fēng)險(xiǎn)[23]。
從之前的實(shí)驗(yàn)結(jié)果可知,使用數(shù)據(jù)變化量預(yù)測(cè)的準(zhǔn)確率最高,因此使用基于數(shù)據(jù)變化量的SMOTE-RNN預(yù)測(cè)法進(jìn)行3個(gè)時(shí)間段的預(yù)測(cè),結(jié)果如表6所示。
表6 基于3種時(shí)間段數(shù)據(jù)變化量預(yù)測(cè)的特異性、靈敏度、準(zhǔn)確度、相對(duì)分類錯(cuò)誤率對(duì)比 單位:%
由表6可見,在數(shù)據(jù)時(shí)間段分別在24 h/48 h/72 h時(shí),使用RNN進(jìn)行排斥反應(yīng)的分類預(yù)測(cè),特異性、靈敏度、準(zhǔn)確度均有提升。也就是時(shí)間段越多,網(wǎng)絡(luò)對(duì)于腎移植排斥反應(yīng)的預(yù)測(cè)就越準(zhǔn)確[24]。本次驗(yàn)證的74個(gè)樣本中的17個(gè)負(fù)類樣本中,10個(gè)樣本被分類為超急性排斥反應(yīng),還有4個(gè)病例在24 h內(nèi)未檢測(cè)出存在排斥反應(yīng),在24 h后檢測(cè)出排斥反應(yīng),因此被劃分為加速性排斥反應(yīng),結(jié)果如表7所示。
表7 被判定為加速性排斥反應(yīng)的病患
經(jīng)過(guò)分析,該4名病患在24 h內(nèi)身體各指標(biāo)的數(shù)值居高不下,在48 h后有所好轉(zhuǎn),表明該方法可以有效地為病人的排斥反應(yīng)分級(jí),有限篩選出超急性排斥反應(yīng)的病患。
本文針對(duì)腎移植排斥反應(yīng)的數(shù)據(jù)特點(diǎn),提出了一種基于SMOTE和RNN結(jié)合的方法,先使用SMOTE算法,通過(guò)取近鄰的負(fù)類樣本,隨機(jī)合成部分少數(shù)類樣本,降低了正負(fù)樣本間的不平衡度,然后對(duì)RNN網(wǎng)絡(luò)中的激活函數(shù)進(jìn)行了研究,最后對(duì)網(wǎng)絡(luò)的關(guān)鍵參數(shù)的選取進(jìn)行研究和實(shí)驗(yàn),并針對(duì)特異性低的實(shí)驗(yàn)結(jié)果選擇了數(shù)據(jù)增長(zhǎng)率和數(shù)據(jù)增長(zhǎng)量的預(yù)測(cè)實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,當(dāng)使用腎移植排斥反應(yīng)的變化量進(jìn)行RNN算法的預(yù)測(cè)時(shí),準(zhǔn)確率達(dá)到了最高,與傳統(tǒng)的馬爾科夫預(yù)測(cè)法相比,準(zhǔn)確率提高了11.95百分點(diǎn),特異性提高了12.44百分點(diǎn),這表明陽(yáng)性樣本的準(zhǔn)確率有相當(dāng)大的提升,使用機(jī)器學(xué)習(xí)方法可以有效地對(duì)腎移植排斥反應(yīng)進(jìn)行預(yù)測(cè)。