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