陳洞天 單 杰 周文丹
心血管疾病是一種嚴(yán)重威脅人類,特別是50歲以上中老年人健康的常見病,具有高患病率、高致殘率和高死亡率的特點(diǎn),即使應(yīng)用目前最先進(jìn)、完善的治療手段,仍有相當(dāng)比例的心血管意外幸存者生活不能完全自理,全世界每年死于心腦血管疾病的人數(shù)居各種疾病死因的首位。隨著國民生活方式的轉(zhuǎn)變以及我國人口老齡化進(jìn)程的加速,中國心血管病危險因素流行趨勢明顯,導(dǎo)致以心血管疾病為代表的慢性病發(fā)病人數(shù)持續(xù)增加,發(fā)病年齡不斷前移[1]。面對心血管病的發(fā)病風(fēng)險不斷提高,提高防治水平仍是最有效的方向。
現(xiàn)階段臨床常用的心血管風(fēng)險評估工具都是基于回歸模型制作的風(fēng)險評估量表,例如在Framingham[2]心血管風(fēng)險評分量表和GRACE危險評分量表[3]。這些傳統(tǒng)的量表雖然具有較好的預(yù)測評估效果,但是也存在模型相對固化的問題:①指標(biāo)固定,無法納入新的指標(biāo);②很多指標(biāo)在不同地域與時代表達(dá)出不同的影響效果,量表難以及時更新。與傳統(tǒng)的回歸模型量表相比,機(jī)器學(xué)習(xí)算法可以支持新指標(biāo)的引入,并根據(jù)當(dāng)?shù)刈钚虏±龜?shù)據(jù)進(jìn)行模型訓(xùn)練,從而得到相對更為精準(zhǔn)的預(yù)測模型。此外,通過可解釋性研究,可以發(fā)掘各指標(biāo)的影響規(guī)律,為臨床診療提供知識支撐。
選取診斷為冠心病、心肌梗塞等心血管疾病的的病例和未診斷為心血管疾病的患者,合計1 000病例數(shù)據(jù)患者作為研究對象。其中包含507名確診病例,493名未確診病例。對于所有病例,選取3類共計11個指標(biāo)作為數(shù)據(jù)集特征,見表1。
表1 指標(biāo)列表
數(shù)據(jù)探索和預(yù)處理是拿到實(shí)驗(yàn)數(shù)據(jù)集的第一個環(huán)節(jié),也是影響后續(xù)實(shí)驗(yàn)效果最重要的一個環(huán)節(jié)。其中,數(shù)據(jù)預(yù)處理能改善數(shù)據(jù)集的完整性,降低冗余性和相關(guān)性,有效提升算法模型質(zhì)量[4],應(yīng)格外重視。本研究采用pandas[5]數(shù)據(jù)模型工具對數(shù)據(jù)集進(jìn)行結(jié)構(gòu)化處理。部分樣本數(shù)據(jù)見表2。
表2 部分樣本數(shù)據(jù)
1.3.1 模型訓(xùn)練方法 XGBoost[6]是一種改進(jìn)的梯度提升算法,它采用二階導(dǎo)數(shù)優(yōu)化目標(biāo)函數(shù),將多個弱分類器進(jìn)行融合從而演化成強(qiáng)分類器。XGBoost具有計算復(fù)雜度低,運(yùn)行速度快、準(zhǔn)確度高的優(yōu)點(diǎn)。按照表3對XGBoost算法進(jìn)行配置:將數(shù)據(jù)集按照4 ∶1的比例分割為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集,即800名病例的指標(biāo)數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)集,200名患者的指標(biāo)數(shù)據(jù)作為測試數(shù)據(jù)集。在訓(xùn)練數(shù)據(jù)集上完成模型訓(xùn)練后,使用該模型在測試數(shù)據(jù)集上進(jìn)行測試,驗(yàn)證模型的性能指標(biāo)。
表3 XGBoost主要參數(shù)配置
1.3.2 指標(biāo)分析方法 除了獲得一個具有較好性能的預(yù)測模型之外,我們還希望能了解其內(nèi)部工作機(jī)制,從而為臨床診療提供經(jīng)驗(yàn)知識。通過算法訓(xùn)練出的模型往往被看作成黑盒子,嚴(yán)重阻礙了機(jī)器學(xué)習(xí)在某些特定領(lǐng)域的使用,譬如醫(yī)學(xué)、金融等領(lǐng)域[7]。為了能了解各個指標(biāo)在模型中的重要程度,我們采用SHAP值[8]方法對該模型進(jìn)行解釋。
SHAP值方法是博弈論中解決多人合作博弈成本分?jǐn)偦蚶娣峙涞姆椒?,該方法通過考慮聯(lián)盟成員對聯(lián)盟的邊際貢獻(xiàn)將利益或成本進(jìn)行合理分配[9]。Shap值體現(xiàn)了每個數(shù)據(jù)點(diǎn)的每個特征參數(shù)的對于總體收益的貢獻(xiàn)值,SHAP值的符號代表該特征的影響方向,絕對值大小代表該特征的影響大小。
SHAP值的原理可以描述為:假設(shè)第i個樣本為xi,第i個樣本的第j個特征為xij,模型對該樣本的預(yù)測值為yi,整個模型的基線(通常是所有樣本的目標(biāo)變量的均值)為ybase,那么SHAP值服從以下等式:
yi=ybase+f(xi1)+f(xi2)+…+(xik)
其中f(xij)為(xij)的SHAP值。直觀上看,f(xi1)就是第i個樣本中第1個特征對最終預(yù)測值yi的貢獻(xiàn)值,當(dāng)f(xi1)>0,說明該特征提升了預(yù)測值,也正向作用;反之,說明該特征使得預(yù)測值降低,有反作用。
本文使用Python的shap[10]工具包對上文所述的心血管疾病風(fēng)險預(yù)測模型中各指標(biāo)的影響力進(jìn)行分析,該工具包是Scott Lundberg對SHAP值法的Python實(shí)現(xiàn),是一種模型無關(guān)(model-agnostic)的機(jī)器學(xué)習(xí)可解釋性方法,兼容所有主流的機(jī)器學(xué)習(xí)模型?;赟HAP值法,我們對訓(xùn)練集中的患者的樣本數(shù)據(jù)進(jìn)行計算,得到每名患者的所有指標(biāo)的SHAP值數(shù)據(jù)。
在測試數(shù)據(jù)集上進(jìn)行驗(yàn)證的結(jié)果見表4??梢?,該模型的整體準(zhǔn)確率(Accuracy)為76.50%,并且在精度(Precision)、敏感度(Sensitivity)、特異度(Specificity)、準(zhǔn)確率(Accuracy)四個指標(biāo)均表現(xiàn)尚可,可以認(rèn)為該模型的性能能夠有效地通過患者常規(guī)檢驗(yàn)指標(biāo)預(yù)測其罹患心血管疾病的風(fēng)險。
表4 模型驗(yàn)證結(jié)果(混淆矩陣)
完成SHAP值的計算后,隨機(jī)輸出其中一例患者的SHAP值,結(jié)果見圖1。該患者的模型預(yù)測結(jié)果為陽性,實(shí)際結(jié)果為確診,與預(yù)測結(jié)果一致。圖1中,Base value為模型基準(zhǔn)值,即樣本整體平均值。模型輸出值(Model output value)為4.13,是該患者各項(xiàng)指標(biāo)輸入模型后得到的最終結(jié)果,高于0.5則會預(yù)測為陽性。模型的輸出結(jié)果和基準(zhǔn)值之間存在差異,這個差異是各個特征參數(shù)的共同作用導(dǎo)致的,而每個特征的SHAP值大小就是該特征參數(shù)對這個差異的貢獻(xiàn)大小。
圖1 某患者的Shap值結(jié)果
圖中紅色部分為對預(yù)測結(jié)果產(chǎn)生正向影響的指標(biāo),藍(lán)色部分為產(chǎn)生負(fù)向影響的指標(biāo)。其中影響力最大的3個指標(biāo)分別為ap_hi(收縮壓)=170 mmHg,cholesterol(膽固醇)=嚴(yán)重偏高,BMI=28.04。可以看出:該患者收縮壓遠(yuǎn)高于健康范圍(<120 mmHg)導(dǎo)致心血管疾病風(fēng)險大大增加;其次是膽固醇嚴(yán)重偏高和BMI過高,都導(dǎo)致心血管疾病風(fēng)險激增。
SHAP值的絕對值代表該特征的重要性。對各特征的SHAP值重要性數(shù)據(jù)進(jìn)行匯總,輸出排名前20的特征,結(jié)果見圖2。其中前面3個最重要的指標(biāo)分別為:收縮壓、年齡和BMI。將每個樣本數(shù)據(jù)點(diǎn)的SHAP值按照指標(biāo)進(jìn)行統(tǒng)計,可以輸出SHAP值相對于指標(biāo)值的變化趨勢。以收縮壓和年齡為例,其SHAP值的變化趨勢見圖3~4。
圖2 基于Shap值的模型特征重要性(前20)
圖3 收縮壓的SHAP值趨勢圖
分析收縮壓和年齡的SHAP值趨勢圖,可以總結(jié)如下經(jīng)驗(yàn)規(guī)律:①收縮壓在135 mmHg以下時,心血管疾病風(fēng)險降低,并且收縮壓越低風(fēng)險越低;超過136 mmHg時,心血管疾病風(fēng)險急劇上升;②年齡在46歲以下時,心血管疾病風(fēng)險降低,并且年齡越低風(fēng)險越低;超過46歲開始出現(xiàn)心血管疾病風(fēng)險,但是并不規(guī)律,可能需要綜合性別等因素綜合考慮。這一點(diǎn)與Framingham量表的年齡指標(biāo)評分標(biāo)準(zhǔn)接近:年齡在44歲以下時,心血管疾病風(fēng)險降低,并且年齡越低風(fēng)險越低。
以2014年為例,我國居民死因構(gòu)成顯示,城市和農(nóng)村的心血管疾病病死率均超過40%,平均為43%,居疾病死亡構(gòu)或首位[11],并且圍手術(shù)期死亡率較高[12],如能早期發(fā)現(xiàn)則可以有效提高患者生存率。并且,隨著醫(yī)院信息化程度提高和業(yè)務(wù)數(shù)據(jù)越來越多,需要有效利用這些數(shù)據(jù)為臨床醫(yī)護(hù)人員日常工作提供有力支持[13]。利用信息系統(tǒng)的一些常規(guī)指標(biāo)數(shù)據(jù),進(jìn)行基于Xgboost機(jī)器學(xué)習(xí)算法訓(xùn)練,可以獲得具有參考價值的疾病風(fēng)險預(yù)測模型;完成模型訓(xùn)練后,通過可解釋性方法對模型指標(biāo)進(jìn)行量化分析,可以總結(jié)歸納各指標(biāo)的影響規(guī)律。此外,通用風(fēng)險評估工具可能由于心血管疾病譜、危險因素流行情況等的差異,無法適應(yīng)本地人群,因此基于本地人群的臨床數(shù)據(jù)構(gòu)建定制化的風(fēng)險預(yù)測模型有重要的現(xiàn)實(shí)意義和應(yīng)用價值[14]。
可以預(yù)見,隨著機(jī)器學(xué)習(xí)技術(shù)發(fā)展的深入和引用的普及,各類基于機(jī)器學(xué)習(xí)使用臨床數(shù)據(jù)訓(xùn)練得到的疾病風(fēng)險預(yù)測模型將越來越常見。機(jī)器學(xué)習(xí)模型的可解釋性可以使預(yù)測模型透明化并發(fā)掘其中經(jīng)驗(yàn)規(guī)律和臨床知識[15],從而有力推動人工智能領(lǐng)域研究的發(fā)展并應(yīng)用到各個傳統(tǒng)領(lǐng)域中。
圖4 年齡的SHAP值趨勢圖