李 芳,劉懷進(jìn),田 慶
(1.肇慶學(xué)院 計(jì)算機(jī)科學(xué)與軟件學(xué)院,廣東 肇慶 526061;2.華僑大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,福建 廈門 361021)
丙型肝炎病毒(HCV)感染在全球范圍內(nèi)影響超過(guò)1億7 千萬(wàn)人[1].中國(guó)是世界上丙型肝炎患病率最高的國(guó)家之一,其患病率達(dá)到13%~15%.HCV感染的特點(diǎn)是具有持續(xù)性和向慢性肝炎發(fā)展的高趨勢(shì)性,并在部分患者中發(fā)展為肝硬化或肝癌.迄今為止,尚無(wú)指標(biāo)或可靠的標(biāo)準(zhǔn)來(lái)確定纖維化的進(jìn)展速度,以及何時(shí)會(huì)發(fā)展為肝硬化.HCV的治療中連續(xù)肝活檢通常是診斷肝纖維化進(jìn)展的“金標(biāo)準(zhǔn)”.肝活檢是侵入性的,伴有嚴(yán)重的并發(fā)癥,給患者帶來(lái)諸多困難且治療費(fèi)用相當(dāng)昂貴[2].最近機(jī)器學(xué)習(xí)技術(shù)在醫(yī)療領(lǐng)域的發(fā)展給肝纖維化預(yù)測(cè)帶來(lái)了前景,其目標(biāo)是開發(fā)、評(píng)估和驗(yàn)證一種替代侵入性技術(shù)的預(yù)測(cè)模型,并將預(yù)測(cè)模型作為預(yù)測(cè)肝纖維化進(jìn)展的一種測(cè)量方法.首先采用ARIMA模型對(duì)全國(guó)2005年到2013年丙型肝炎進(jìn)行建模,為今后丙型肝炎疾病的預(yù)防和控制提供了理論支持[3].基于隨機(jī)森林的丙型肝纖維化預(yù)測(cè)的分類模型,對(duì)123 例丙型肝炎的血清學(xué)指標(biāo)進(jìn)行分析預(yù)測(cè)得到的分類正確率為68.29%[4].基于K近鄰的肝炎預(yù)測(cè)模型對(duì)數(shù)據(jù)進(jìn)行歸一化的分類正確率為79%[5].使用C4.5決策樹對(duì)3 719 例埃及慢性丙型肝炎患者的治療結(jié)果預(yù)測(cè)進(jìn)行數(shù)據(jù)挖掘評(píng)估的分類準(zhǔn)確性為73%[6].線性優(yōu)化最優(yōu)解(LP)和Bayesian 網(wǎng)絡(luò)分類法(BN)被用來(lái)評(píng)估和識(shí)別HCV序列與纖維化進(jìn)展率(RFP)之間的關(guān)系,其最大分類準(zhǔn)確率達(dá)到了85%[7].針對(duì)39 567名慢性丙型肝炎患者建立了預(yù)測(cè)纖維化風(fēng)險(xiǎn)的決策樹、遺傳算法、粒子群優(yōu)化和多線性回歸模型,對(duì)多種機(jī)器學(xué)習(xí)方法建模的分類準(zhǔn)確度在66.3%~84.4%之間[8].通過(guò)減少錯(cuò)誤技術(shù)構(gòu)建的決策樹對(duì)427例丙型肝炎患者在預(yù)測(cè)晚期纖維化方面的準(zhǔn)確率為88%[9].一種基于非侵入性方法的新模型對(duì)401 例慢性肝炎患者的預(yù)測(cè)分類準(zhǔn)確率為85.9%[10].慢性丙型肝炎病毒(HCV)感染為發(fā)生肝纖維化及肝硬化的主要原因,但由于肝纖維化具有可逆性,若能及時(shí)干預(yù)對(duì)患者具有積極意義[11].大量研究表明,由于機(jī)器學(xué)習(xí)技術(shù)能夠從醫(yī)學(xué)數(shù)據(jù)庫(kù)中發(fā)現(xiàn)隱藏的預(yù)測(cè)模式,因此它是預(yù)測(cè)肝纖維化的強(qiáng)大工具.因此對(duì)HCV感染肝纖維化的準(zhǔn)確評(píng)估,不僅有助于指導(dǎo)臨床醫(yī)師及時(shí)制定合理的治療方案,而且對(duì)改善患者病情具有重要的意義.
丙型肝炎由丙型肝炎病毒(HCV)感染所致,主要由血液和體液傳播.丙型肝炎是一種全球性傳染病,可導(dǎo)致慢性炎癥肝壞死和肝纖維化,最后發(fā)展為肝硬化甚至是肝癌.肝纖維化對(duì)丙型肝炎患者而言是一項(xiàng)重要的影響預(yù)后因素,肝活組織病理學(xué)檢查一直被認(rèn)為是肝纖維化診斷的“金標(biāo)準(zhǔn)”,它可提供肝纖維化分期的重要信息[12].病理科醫(yī)師通過(guò)閱片進(jìn)行肝纖維化程度劃分,分期標(biāo)準(zhǔn)參照肝纖維化分期法[13],共分為5 期(F0~F4),F(xiàn)0為無(wú)纖維化,F(xiàn)1為匯管區(qū)有纖維化但無(wú)纖維間隔形成,F(xiàn)2為匯管區(qū)纖維化伴少量纖維間隔形成,F(xiàn)3為大量纖維間隔形成,F(xiàn)4為肝硬化.
本研究展示的HCV肝纖維化數(shù)據(jù)集.數(shù)據(jù)中包括了1 741 名接受治療的丙型肝炎患者的數(shù)據(jù).患者的數(shù)據(jù)由埃及艾因沙姆斯大學(xué)醫(yī)學(xué)院在埃爾德梅爾達(dá)什醫(yī)院收集[14].患者接受干擾素-阿爾法和利巴韋林的聯(lián)合治療超過(guò)15 個(gè)月.所收集的數(shù)據(jù)有幾種形式和結(jié)構(gòu).因此,在專家建議的基礎(chǔ)上應(yīng)用了改進(jìn)的預(yù)處理階段.從診斷的角度來(lái)看,HCV 數(shù)據(jù)集包含1 741 條記錄和29 個(gè)數(shù)據(jù)特征屬性(包含28 個(gè)屬性特征和1 個(gè)分類標(biāo)簽),所有的特征屬性都是數(shù)字,如表1所示.“基線組織學(xué)分期”是具有值{F0,F(xiàn)1,F(xiàn)2,F(xiàn)3,F(xiàn)4}的類別標(biāo)簽.這些標(biāo)簽代表了肝纖維化的不同等級(jí),如下所示:無(wú)纖維化(F0)、門靜脈區(qū)纖維化(F1)、少數(shù)纖維間隔(F2)、大量纖維間隔(F3)、肝硬化(F4).
表1 描述數(shù)據(jù)集的特征
審查算法前并不知道哪些非集成分類算法對(duì)HCV問(wèn)題最有效,所以需要通過(guò)一系列實(shí)驗(yàn)進(jìn)行驗(yàn)證,以找到預(yù)測(cè)HCV問(wèn)題最有效的算法.本文將選擇6 種經(jīng)典的非集成分類算法(包括線性和非線性算法)對(duì)HCV問(wèn)題進(jìn)行預(yù)測(cè),通過(guò)分類準(zhǔn)確度(Accuracy)評(píng)估算法的結(jié)果.其中線性分類算法包括邏輯回歸(LR)[15]和線性判別分析(LDA)[16],非線性分類算法包括K近鄰(KNN)[17]、分類與回歸樹(CART)[18]、樸素貝葉斯(NB)[19]和支持向量機(jī)(SVM)[20].
通過(guò)使用10折交叉驗(yàn)證評(píng)估模型的預(yù)測(cè)性能,采用6種分類算法對(duì)原始數(shù)據(jù)進(jìn)行建模,算法性能評(píng)估主要通過(guò)分類準(zhǔn)確度的平均值和標(biāo)準(zhǔn)方差來(lái)比較.實(shí)驗(yàn)結(jié)果如表2所示,從數(shù)據(jù)可以看出,LR和KNN值得進(jìn)一步的分析和研究.
表2 原始數(shù)據(jù)的分類準(zhǔn)確度的平均值和標(biāo)準(zhǔn)方差
為了更加準(zhǔn)確分類算法,通常還需要查看所有算法每次得出的數(shù)據(jù)結(jié)果分布狀況.這里使用箱線圖來(lái)表示所有數(shù)據(jù)結(jié)果的分布情況,如圖1所示.
圖1 非集成算法對(duì)原始數(shù)據(jù)預(yù)測(cè)結(jié)果分布狀況
從圖1可以看出,KNN的執(zhí)行結(jié)果比較緊湊,說(shuō)明算法對(duì)數(shù)據(jù)的處理比較準(zhǔn)確.為了使原始數(shù)據(jù)分布均勻,我們對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,然后重新評(píng)估算法.表3為正態(tài)化數(shù)據(jù)處理后的算法比較結(jié)果.
表3 正態(tài)化數(shù)據(jù)的分類準(zhǔn)確度的平均值和標(biāo)準(zhǔn)方差
從表3可以看出,KNN依然有較好的執(zhí)行結(jié)果,同時(shí)SVM的結(jié)果也有了極大的改善.我們?cè)偻ㄟ^(guò)箱線圖來(lái)看一下所有算法每次執(zhí)行結(jié)果的分布情況,如圖2所示.
圖2 非集成算法對(duì)正態(tài)化數(shù)據(jù)預(yù)測(cè)結(jié)果分布狀況
從圖2可以看出,KNN和SVM的數(shù)據(jù)分布也是比較緊湊的.
通過(guò)對(duì)6種算法的評(píng)估發(fā)現(xiàn)KNN和SVM值得進(jìn)一步研究.如圖3所示.
圖3 集群分類增強(qiáng)過(guò)程的可視化說(shuō)明
圖3中(a)為初始化的樣本集,(b)和(c)為在初始化樣本在目標(biāo)集群下進(jìn)行的搜索分類.通過(guò)遍歷計(jì)算未知點(diǎn)x與已知群集中點(diǎn)的歐指距離判斷是否屬于群集T1的類型,其中,T1={(x1,y1),(x2,y2),……(xn,yn)}.
KNN的原理是,若一個(gè)樣本與數(shù)據(jù)集中的k個(gè)樣本最相似,且這k個(gè)樣本中的大多數(shù)屬于某一個(gè)類別,則該樣本也屬于這個(gè)類別.在判斷兩個(gè)樣本相似性時(shí),一般使用的歐式距離,如公式(1)所示.
綜上所述,對(duì)未知類型屬性的數(shù)據(jù)集中的每個(gè)點(diǎn)依次執(zhí)行以下操作:
(1)計(jì)算已知類別數(shù)據(jù)集中的點(diǎn)與當(dāng)前點(diǎn)之間的距離;
(2)按照距離增序排序;
(3)選取與當(dāng)前點(diǎn)距離最近的k個(gè)點(diǎn);
(4)決定這k個(gè)點(diǎn)所屬類別的出現(xiàn)頻率;
(5)返回前k個(gè)點(diǎn)出現(xiàn)頻率最高的類別作為當(dāng)前點(diǎn)的預(yù)測(cè)分類.
SVM是一種二類分類模型,如圖4(a)所示,其基本模型定義為特征空間上的間隔最大的線性分類器,其中,紅色集群為I1,藍(lán)色集群為I2,通過(guò)計(jì)算樣本的正負(fù)性判斷集群種類.然而,對(duì)某個(gè)實(shí)際問(wèn)題函數(shù)來(lái)尋找一個(gè)二分類是非常困難的,因此使用合適的核函數(shù)對(duì)空間進(jìn)行映射是非常有效的方法,如圖4(b)所示.
圖4 SVM模型的說(shuō)明
SVM的工作流程主要有2種:第一種為線性可分SVM超平面:y=wx+b,通過(guò)非線性最優(yōu)化求使幾何間隔最大的分離超平面.第二種為線性不可分SVM超平面:將樣本映射到特征空間得到y(tǒng)k=wkx+b,通過(guò)非線性最優(yōu)化求使幾何間隔最大的分離超平面.
下面分別對(duì)KNN 和SVM 算法進(jìn)行調(diào)參,以進(jìn)一步優(yōu)化算法模型.KNN 默認(rèn)的鄰近點(diǎn)的個(gè)數(shù)(n_neighbors)是5,我們對(duì)n_neighbors從1到20的奇數(shù)進(jìn)行網(wǎng)格搜索優(yōu)化參數(shù),以確定KNN算法的最優(yōu)參數(shù).執(zhí)行結(jié)果如表4所示,從執(zhí)行結(jié)果來(lái)看,最優(yōu)的n_neighbors數(shù)是1,準(zhǔn)確度達(dá)到0.85.
表4 KNN參數(shù)遍歷結(jié)果
接下來(lái)對(duì)SVM進(jìn)行調(diào)參,SVM有兩個(gè)重要的參數(shù)分別是懲罰系數(shù)(C)和核函數(shù)(kernel),C參數(shù)默認(rèn)的值是1,kernel 參數(shù)默認(rèn)的值是rbf.我們同樣采用網(wǎng)格搜索算法遍歷參數(shù)C={0.1,0.3,…,1.7,2.0}和kernel={‘linear’ ,‘poly’ ,‘rbf’ ,‘sigmoid’ },以確定SVM 算法的最優(yōu)解.執(zhí)行結(jié)果如表5 所示,從執(zhí)行結(jié)果來(lái)看,最優(yōu)的C數(shù)是1.5,kernel數(shù)是rbf,準(zhǔn)確度達(dá)到0.87.
表5 SVM算法參數(shù)遍歷結(jié)果
在機(jī)器學(xué)習(xí)中,除了算法調(diào)參提高分類準(zhǔn)確度以外,還可以通過(guò)集成算法提高分類準(zhǔn)確度.我們采用四種經(jīng)典集成算法進(jìn)行預(yù)測(cè),分別是隨機(jī)森林(RF)[21]、極端隨機(jī)樹(ET)[22]、AdaBoost(AB)[23]和梯度提升機(jī)(GBM)[24].依然正態(tài)化數(shù)據(jù)和采用10折交叉驗(yàn)證分離評(píng)估算法,執(zhí)行結(jié)果如表6所示.
表6 集成算法分類準(zhǔn)確度的平均值和標(biāo)準(zhǔn)方差
通過(guò)箱線圖來(lái)查看集成算法預(yù)測(cè)數(shù)據(jù)結(jié)果的分布情況,如圖5 所示.從圖5 可以看出,GBM具有最高的準(zhǔn)確度,且數(shù)據(jù)結(jié)果分布比較緊湊.GBM 默認(rèn)的弱學(xué)習(xí)器的數(shù)量(n_estimators)是100,為了優(yōu)化模型,通過(guò)網(wǎng)格搜索算法對(duì)參數(shù)n_estimators 從10 到900 間隔為50 進(jìn)行遍歷.最后執(zhí)行結(jié)果顯示n_estimators=500 時(shí),GBM 達(dá)到最大準(zhǔn)確度0.86.
圖5 集成算法對(duì)正態(tài)化數(shù)據(jù)預(yù)測(cè)結(jié)果分布狀況
綜合前面一系列的算法評(píng)估,我們最終得到非集成算法SVM對(duì)HCV預(yù)測(cè)具有最大的準(zhǔn)確度.所以我們采用SVM 算法對(duì)訓(xùn)練集進(jìn)行建模,采用測(cè)試集來(lái)評(píng)估模型.在訓(xùn)練模型過(guò)程中,對(duì)數(shù)據(jù)進(jìn)行正態(tài)化處理,并設(shè)置SVM 的參數(shù)C=1,5和kernel=‘rbf’ .從執(zhí)行結(jié)果來(lái)看,優(yōu)化后的SVM模型對(duì)HCV分類準(zhǔn)確度為87%.
由于傳統(tǒng)的機(jī)器學(xué)習(xí)算法對(duì)HCV數(shù)據(jù)進(jìn)行訓(xùn)練預(yù)測(cè)并未達(dá)到期望的分類效果,本節(jié)將采用深度學(xué)習(xí)算法對(duì)HCV進(jìn)行建模預(yù)測(cè).由于卷積神經(jīng)網(wǎng)絡(luò)適用于圖像分類,所以我們只選擇了多層感知機(jī)網(wǎng)絡(luò)(MLP)[25]和長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LSTM)[26]進(jìn)行建模預(yù)測(cè).
首先我們構(gòu)建一個(gè)4層的MLP,它包括一個(gè)輸入層、兩個(gè)隱藏層和一個(gè)輸出層,隱藏層使用Relu激活函數(shù),輸出層使用softmax激活函數(shù).基于MLP的HCV預(yù)測(cè)模型的網(wǎng)絡(luò)結(jié)構(gòu)定義代碼如表7所示.
在搭建LSTM網(wǎng)絡(luò)模型訓(xùn)練HCV數(shù)據(jù)時(shí),需要先處理一下原始的特征數(shù)據(jù)維度.我們將原來(lái)的二維特征數(shù)據(jù)(samples,n_features)變成了三維數(shù)據(jù)(samples,seq_steps,n_features),序列步長(zhǎng)seq_steps設(shè)置為1,標(biāo)簽數(shù)據(jù)維度保持不變.然后構(gòu)建了一個(gè)3層的循環(huán)神經(jīng)網(wǎng)絡(luò)(LSTM),它包括一個(gè)輸入層、一個(gè)隱藏層和一個(gè)輸出層,隱藏層使用sigmoid和tanh激活函數(shù),輸出層使用softmax激活函數(shù).基于LSTM的丙型肝炎預(yù)測(cè)模型的網(wǎng)絡(luò)結(jié)構(gòu)的定義代碼如表7所示.
表7 網(wǎng)絡(luò)模型結(jié)構(gòu)定義
除了自定義的MLP 網(wǎng)絡(luò)結(jié)構(gòu)外,MLP 模型設(shè)置的具體網(wǎng)絡(luò)參數(shù)如表8所示,其中隱藏層神經(jīng)元個(gè)數(shù)和學(xué)習(xí)速率是通過(guò)經(jīng)驗(yàn)和實(shí)驗(yàn)調(diào)參相結(jié)合確定的最優(yōu)值.
除了定義的LSTM網(wǎng)絡(luò)結(jié)構(gòu)外,LSTM模型設(shè)置的具體網(wǎng)絡(luò)參數(shù)和MPL模型設(shè)置的網(wǎng)絡(luò)參數(shù)基本一樣,具體參考表8所示.
表8 模型參數(shù)
在定義好網(wǎng)絡(luò)模型之后,我們對(duì)HCV數(shù)據(jù)進(jìn)行訓(xùn)練和測(cè)試.從圖6的實(shí)驗(yàn)結(jié)果對(duì)比來(lái)看,我們發(fā)現(xiàn)在隱藏層神經(jīng)元個(gè)數(shù)為30,學(xué)習(xí)速率為0.01時(shí),隨著迭代次數(shù)epoch的不斷增加,MLP模型在測(cè)試集上的分類精確度達(dá)到89.10%,LSTM模型在測(cè)試集上的分類精確度達(dá)到了90.48%.
在深入研究LSTM 算法的過(guò)程中,我們發(fā)現(xiàn)反向傳播算法可以進(jìn)行優(yōu)化改進(jìn).如圖6 所示,在描述LSTM 反向傳播優(yōu)化算法之前,我們先簡(jiǎn)單介紹一下LSTM 算法原理.LSTM 主要有細(xì)胞狀態(tài)、隱藏狀態(tài)和三個(gè)門控組成,門控包括遺忘門、輸入門和輸出門.LSTM 算法主要分為前向傳播算法和反向傳播算法,具體原理和算法請(qǐng)參考文獻(xiàn)[26].
圖6 MLP和LSTM模型對(duì)HCV數(shù)據(jù)訓(xùn)練過(guò)程
在LSTM反向傳播算法過(guò)程中,通過(guò)梯度下降法更新算法參數(shù)的關(guān)鍵是計(jì)算出隱藏狀態(tài)的損失梯度誤差δth和細(xì)胞狀態(tài)的損失梯度誤差δtc.為了方便找到梯度的遞推模式,我們根據(jù)前向傳播算法簡(jiǎn)單畫出了LSTM的數(shù)據(jù)前向流動(dòng)示意圖,如圖7所示.
圖7 LSMT數(shù)據(jù)流動(dòng)示意圖
其中,f(t)代表了遺忘上一層隱藏細(xì)胞狀態(tài)的概率,輸入門由兩部分組成,第一部分使用了sigmoid激活函數(shù),輸出為i(t),第二部分使用了tanh激活函數(shù),輸出a(t).如公式(5)所示,細(xì)胞狀態(tài)C(t)由兩部分組成,第一部分是C(t—1)和遺忘門輸出f(t)的乘積,第二部分是輸入門的i(t)和的乘積,其中°是Hadamard積:
對(duì)于隱藏層h(t),它的更新由兩部分組成,第一部分是o(t),它由上一序列的隱藏狀態(tài)h(t—1)和本序列數(shù)據(jù)x(t),以及激活函數(shù)sigmoid得到,第二部分由隱藏狀態(tài)C(t)和tanh激活函數(shù)組成,即:
由于δth的梯度誤差由本層的梯度誤差和下一層的梯度誤差共同決定,我們根據(jù)鏈?zhǔn)椒▌t和全微分方程可以求出隱藏狀態(tài)的損失梯度誤差δth和細(xì)胞狀態(tài)的損失梯度誤差δtc,如公式(8)和(9)所示.
對(duì)比文獻(xiàn)[26]求隱藏狀態(tài)的損失梯度誤差δth和細(xì)胞狀態(tài)的損失梯度誤差δtc,這里給出公式如(10)和(11)所示,明顯我們的反向傳播算法更加簡(jiǎn)潔,計(jì)算復(fù)雜度更低.
本文采用多種機(jī)器學(xué)習(xí)和深度學(xué)習(xí)分類算法對(duì)病人數(shù)據(jù)進(jìn)行肝纖維化預(yù)測(cè),以尋求優(yōu)質(zhì)的算法模型運(yùn)用到丙型肝炎預(yù)測(cè)中.經(jīng)過(guò)正態(tài)化數(shù)據(jù)處理、交叉驗(yàn)證調(diào)參優(yōu)化和網(wǎng)絡(luò)模型結(jié)構(gòu)搭建之后,得到如下結(jié)論:
(1)基于機(jī)器學(xué)習(xí)算法的非集成算法模型SVM和集成算法模型GBM,相對(duì)于其他傳統(tǒng)的機(jī)器學(xué)習(xí)算法在應(yīng)用于HCV預(yù)測(cè)具有較好的分類性能,不過(guò)分類準(zhǔn)確度并沒(méi)有達(dá)到預(yù)期效果.
(2)基于深度學(xué)習(xí)算法的MLP和LSTM模型的分類預(yù)測(cè)效果要優(yōu)于傳統(tǒng)的機(jī)器學(xué)習(xí)算法,同時(shí)LSTM的分類精確度高于MLP模型,更適合HCV的預(yù)測(cè).
(3)通過(guò)對(duì)LSMT前向反向傳播算法分析和遞推,發(fā)現(xiàn)LSTM算法的反向傳播算法可以進(jìn)一步優(yōu)化.通過(guò)數(shù)學(xué)鏈?zhǔn)椒▌t和矩陣向量求導(dǎo)規(guī)則,我們推導(dǎo)的反向傳播算法更加簡(jiǎn)潔,計(jì)算復(fù)雜度更低.