辛瑞昊,董哲原**,苗馮博**,王甜甜**,李英瑞**,馮 欣
(1.吉林化工學(xué)院 信息與控制工程學(xué)院,吉林 吉林 132022;2.吉林化工學(xué)院 理學(xué)院,吉林 吉林 132022)
世界衛(wèi)生組織(WHO)提供的數(shù)據(jù)顯示,全球近31%的人口死于心臟相關(guān)疾病.據(jù)世界衛(wèi)生組織統(tǒng)計(jì),近1520萬(wàn)人死于心臟相關(guān)疾病或心血管疾病[1].心臟病在全世界造成了巨大的死亡率,并威脅著許多人的健康.早期預(yù)防心臟病可能挽救許多生命,通過常規(guī)的臨床數(shù)據(jù)分析,檢測(cè)心臟病發(fā)作、冠狀動(dòng)脈疾病等心血管疾病是一項(xiàng)艱巨的挑戰(zhàn).機(jī)器學(xué)習(xí)(Machine Learning)可以為決策和準(zhǔn)確預(yù)測(cè)帶來有效的解決方案.在醫(yī)療行業(yè)中,使用機(jī)器學(xué)習(xí)技術(shù)方面取得了巨大的進(jìn)展.
Pahwa K[2]使用支持向量機(jī)遞歸特征消除(SVM-RFS)進(jìn)行特征選擇,利用隨機(jī)森林和樸素貝葉斯應(yīng)用于心臟病的預(yù)測(cè).Shan X[3]采用最佳首次搜索算法(CFS)選擇關(guān)鍵特征以降低特征維度,通過改進(jìn)的隨機(jī)森林算法對(duì)心臟病進(jìn)行預(yù)測(cè),該方法具有很好的預(yù)測(cè)效果.劉宇[4]使用基于聚類和XGboost算法對(duì)心臟病數(shù)據(jù)進(jìn)行預(yù)測(cè),實(shí)驗(yàn)表明該方法能夠有效地提高預(yù)測(cè)的準(zhǔn)確率.已有工作在對(duì)心臟病預(yù)測(cè)的準(zhǔn)確率上仍有很大提升空間,不能達(dá)到心臟病臨床診斷的性能要求.因此,為了進(jìn)一步提高心臟病預(yù)測(cè)模型的準(zhǔn)確率,通過特征選擇、不同機(jī)器學(xué)習(xí)模型對(duì)比、可解釋性分析等方法實(shí)現(xiàn)對(duì)心臟病的準(zhǔn)確預(yù)測(cè),為模型的一線臨床應(yīng)用打下基礎(chǔ).
本實(shí)驗(yàn)驗(yàn)證過程數(shù)據(jù)集選取來源于克利夫蘭數(shù)據(jù)庫(kù)(Cleveland Clinic UCI)所構(gòu)建的開源心臟病例數(shù)據(jù)集.該數(shù)據(jù)集分為心臟病樣本和正常樣本兩類,共計(jì)303個(gè)樣本數(shù)據(jù),其中包括心臟病樣本165個(gè),健康樣本138個(gè),正負(fù)樣本數(shù)目總體上相對(duì)平衡.本實(shí)驗(yàn)以數(shù)據(jù)集中14個(gè)變量作為研究對(duì)象,在14個(gè)變量信息中,13個(gè)指標(biāo)為特征變量,最后一個(gè)作為預(yù)測(cè)變量,其中性別、血糖值、運(yùn)動(dòng)性心絞痛類別和目標(biāo)變量為布爾類型(Boolean),年齡、胸痛類型、血壓值、心電圖、最大心率、運(yùn)動(dòng)ST峰值坡度、血管數(shù)量和心臟缺陷是整數(shù)類型(Int),膽固醇值和運(yùn)動(dòng)ST值是浮點(diǎn)類型(Float),具體如表1所示.
表1 數(shù)據(jù)集特性列表
數(shù)據(jù)探索和預(yù)處理是心臟病數(shù)據(jù)分析的首要環(huán)節(jié),這一環(huán)節(jié)直接影響后續(xù)機(jī)器學(xué)習(xí)模型分類效果.在數(shù)據(jù)分析過程中,符合正態(tài)分布的數(shù)據(jù)可以解決異方差和線性度的問題,有利于統(tǒng)計(jì)推斷和假設(shè)驗(yàn)證.使用的心臟病數(shù)據(jù)直接從UCI網(wǎng)站下載,其中的離散特征數(shù)據(jù)已經(jīng)經(jīng)過數(shù)值編碼,UCI提供的數(shù)據(jù)集是編碼后的數(shù)值矩陣,不需要再進(jìn)行額外的編碼,能夠直接對(duì)該數(shù)據(jù)集進(jìn)行預(yù)處理.本研究python版本為3.8.3上,采用0.22.1版本Sklearn-processing庫(kù)中StandardScaler包對(duì)原始數(shù)據(jù)中所有特征和標(biāo)簽均進(jìn)行標(biāo)準(zhǔn)化預(yù)處理.利用StandardScaler進(jìn)行標(biāo)準(zhǔn)化的原理為計(jì)算每列數(shù)據(jù)間的均值和方差,然后基于計(jì)算出的均值和方差轉(zhuǎn)換數(shù)據(jù),從而使數(shù)據(jù)符合標(biāo)準(zhǔn)正態(tài)分布.對(duì)數(shù)據(jù)標(biāo)準(zhǔn)化后,不僅可以提升機(jī)器學(xué)習(xí)模型的收斂速度,甚至還能提升模型分類效果.
1.3.1 特征選擇算法
數(shù)據(jù)特征被廣泛應(yīng)用于大數(shù)據(jù)挖掘、分析及機(jī)器學(xué)習(xí)等領(lǐng)域中,解決了醫(yī)學(xué)數(shù)據(jù)“少樣本高緯數(shù)”的難題.此外,選擇重要數(shù)據(jù)特征也是識(shí)別疾病生物標(biāo)志物的關(guān)鍵因素.從原始數(shù)據(jù)集中選擇最大相關(guān)、最小冗余的特征子集,能夠提高模型分類準(zhǔn)確性,減小模型時(shí)間復(fù)雜化度,可進(jìn)一步挖掘心臟病潛在性的生物標(biāo)記物.利用T檢驗(yàn)(T-test)和卡方檢驗(yàn)(CHI)進(jìn)行特征選擇,通過P-value值和卡方值挖掘顯著差異性特征,通過該方法能快速找到影響心臟病的關(guān)鍵性特征因素,選擇出最大相關(guān)、最小冗余的特征子集.
1.3.2 機(jī)器學(xué)習(xí)模型
1.3.3 評(píng)價(jià)指標(biāo)選取
對(duì)于心臟病存活性預(yù)測(cè)模型的評(píng)估,使用7個(gè)醫(yī)學(xué)領(lǐng)域廣泛使用的評(píng)價(jià)指標(biāo)對(duì)10種機(jī)器學(xué)習(xí)模型分類效果進(jìn)行評(píng)估[5],其中包括精確率(Precision)、特異性(Specificity)、敏感性(Sensitivity)、馬修系數(shù)(MCC)、準(zhǔn)確率(Accuracy)、F1指標(biāo)(F1-score)和AUC(Area under roc curve).
為了評(píng)估論文提出方法的可行性,分別評(píng)估了精確率、敏感性、特異性和馬修系數(shù).其中,精確率指模型預(yù)測(cè)為正的樣本中實(shí)際也為正的樣本占被預(yù)測(cè)為正的樣本的比例,計(jì)算公式為:
(1)
敏感性指實(shí)際為正的樣本中被預(yù)測(cè)為正的樣本所占實(shí)際為正的樣本的比例.計(jì)算公式為:
(2)
特異性指實(shí)際為負(fù)的樣本中被預(yù)測(cè)為負(fù)的樣本所占實(shí)際為負(fù)的樣本的比例.計(jì)算公式為:
(3)
馬修系數(shù)通常在兩個(gè)類別樣本數(shù)量差異比較大的時(shí)候仍然能夠有效地緩解樣本不均衡帶來的敏感度.其本質(zhì)上是一個(gè)描述實(shí)際分類與預(yù)測(cè)分類之間相關(guān)系數(shù)的指標(biāo),計(jì)算公式為:
(4)
其中,真陰性(TN)是預(yù)測(cè)為健康標(biāo)簽與真實(shí)為健康標(biāo)簽匹配的數(shù)量;真陽(yáng)性(TP)是預(yù)測(cè)為心臟病標(biāo)簽與真實(shí)為心臟病標(biāo)簽匹配的數(shù)量;假陰性(FN)是指心臟病樣本標(biāo)簽被錯(cuò)誤識(shí)別為健康的數(shù)量;假陽(yáng)性(FP)是健康樣本標(biāo)簽被預(yù)測(cè)為心臟病樣本標(biāo)簽的數(shù)量.
準(zhǔn)確率評(píng)估不同機(jī)器學(xué)習(xí)模型的總體分類精度,具體指的是機(jī)器學(xué)習(xí)模型正確預(yù)測(cè)心臟病患者和健康患者能力,計(jì)算公式為:
(5)
其中Npredicted表示預(yù)測(cè)正確的樣本總數(shù);Ntotal表示樣本總數(shù).
F1-score為精確率和召回率的調(diào)和均值,通過計(jì)算F1分?jǐn)?shù)分別衡量心臟病和健康樣本的分類表現(xiàn),計(jì)算公式為:
(6)
AUC(Area under curve)指的是ROC(Receiver operating characteristic curve)曲線所覆蓋的面積.由于ROC很難反映模型之間的差異,AUC作為數(shù)值可以明確地反映出模型之間的差異,其中AUC越接近1,模型的性能越好[6].計(jì)算公式如下:
(7)
其中positiveclass表示類別為正例;xi為第i個(gè)樣本;rank為模型預(yù)測(cè)實(shí)例中屬于正例的概率大小的排序;M是實(shí)際為正例的個(gè)數(shù);N是實(shí)際為負(fù)例的個(gè)數(shù).
1.3.4 特征可解釋性方法
心臟病分析過程中,除了要得到準(zhǔn)確的分類結(jié)果,同時(shí)需要得到重要特征對(duì)模型預(yù)測(cè)結(jié)果的影響,從而為精準(zhǔn)醫(yī)療提供決策支持.通過機(jī)器模型進(jìn)行分類的過程中,模型往往被當(dāng)作黑盒子,不能表現(xiàn)出每個(gè)特征對(duì)分類結(jié)果的貢獻(xiàn)[7].因此,利用SHAP方法對(duì)數(shù)據(jù)集的特征進(jìn)行分析,可視化每個(gè)特征在模型中的重要程度,進(jìn)而表現(xiàn)每個(gè)特征對(duì)分類結(jié)果的影響[8].
為了能夠了解單個(gè)特征在機(jī)器學(xué)習(xí)模型中的貢獻(xiàn),通過利用SHAP對(duì)特征進(jìn)行可解釋性分析.SHAP值的計(jì)算公式如下:
(8)
其中yi為樣本的預(yù)測(cè)值;ybase為整個(gè)模型的基線(通常是所有樣本的目標(biāo)變量的均值);f(xij)表示第i個(gè)樣本中第j個(gè)特征對(duì)最終預(yù)測(cè)值yi的貢獻(xiàn)值,當(dāng)f(xij)>0,表明該特征起正作用,增大預(yù)測(cè)值,反之,說明該特征起反作用,減小預(yù)測(cè)值.
利用Python的SHAP方法對(duì)心臟病預(yù)測(cè)模型中每個(gè)特征的作用進(jìn)行可視化分析,該方法為不依賴于機(jī)器學(xué)習(xí)模型的可解釋性方法,適用于多種機(jī)器學(xué)習(xí)模型.特征可解釋通過對(duì)訓(xùn)練集中的患者的樣本數(shù)據(jù)進(jìn)行計(jì)算,得到每個(gè)特征的SHAP值數(shù)據(jù),進(jìn)而確定單個(gè)特征對(duì)預(yù)測(cè)結(jié)果的作用.
心臟病數(shù)據(jù)集包含13個(gè)特征,所以在篩選差異特征時(shí),T檢驗(yàn)和CHI檢驗(yàn)更有利于高緯特征樣本間的特征篩選.利用T檢驗(yàn)?zāi)P陀?jì)算每個(gè)特征的顯著性水平(P-value),按照P<0.05進(jìn)行篩選,獲得差異表達(dá)的特征.通過卡方檢驗(yàn)計(jì)算每個(gè)特征的卡方值,CHI值越大,特征區(qū)分度越強(qiáng).通過計(jì)算13個(gè)特征P值和CHI值,繪制-Log(P-value)如圖1所示,繪制CHI值柱形圖,如圖2所示,可以觀察到前13特征之間存在顯著差異性.然后,通過P-value值降序排列進(jìn)行特征遞減實(shí)驗(yàn),進(jìn)而得到最優(yōu)特征組合.
特征圖1 T-test特征排序
通過對(duì)13個(gè)特征按照P-value值降序排列進(jìn)行特征遞減實(shí)驗(yàn),選取Bagging作為分類模型,驗(yàn)證1~13個(gè)特征組合下,模型分類的準(zhǔn)確性.特征遞減組合在Bagging模型上ACC曲線如圖3所示.
特征數(shù)圖3 不同特征組合在Bagging模型上ACC曲線
選擇5個(gè)特征組合,在10種機(jī)器學(xué)習(xí)算法上進(jìn)行模型訓(xùn)練,并使用醫(yī)學(xué)上常用的7個(gè)指標(biāo)評(píng)估上,驗(yàn)證模型分類效果,其結(jié)果如表2所示.在10種機(jī)器學(xué)習(xí)模型中,Bagging算法分類結(jié)果最優(yōu),各項(xiàng)評(píng)價(jià)指標(biāo)均為1.
表2 10種機(jī)器學(xué)習(xí)模型指標(biāo)對(duì)比結(jié)果
本節(jié)將Bagging模型與已有工作提出的粒子群優(yōu)化支持向量機(jī)(PSO-SVM)、概率神經(jīng)網(wǎng)絡(luò)(PNN)和隨機(jī)森林(RF)進(jìn)行性能對(duì)比,其對(duì)比結(jié)果如表3所示.
表3 與已有工作的對(duì)比結(jié)果
利用T檢驗(yàn)得到5個(gè)特征組合,在Bagging模型上得到各個(gè)評(píng)價(jià)指標(biāo)均為1,其結(jié)果遠(yuǎn)優(yōu)于已有工作的實(shí)驗(yàn)結(jié)果.
特征的可解釋性分析主要通過SHAP方法實(shí)現(xiàn),通過心臟病預(yù)測(cè)模型結(jié)果進(jìn)行解釋性分析,挖掘單個(gè)特征對(duì)心臟病預(yù)測(cè)模型產(chǎn)生的影響.圖4為SHAP特征蜂群圖,該圖反映各個(gè)特征取值的高低對(duì)SHAP取值的影響.圖5為SHAP特征摘要圖,該圖根據(jù)特征重要性對(duì)影響心臟病特征進(jìn)行分析.
SHAP value(impact on model output)圖4 SHAP特征分析
mean(|SHAP value|)(average impact on model ourput magnitude)圖5 特征重要性排名
如圖4和圖5所示,Cp(胸痛類型)、Ca(主動(dòng)脈數(shù)量)、Thal(心臟缺陷)、Oldpeak(運(yùn)動(dòng)ST值)等特征對(duì)模型影響較為顯著.通過韋恩圖可視化T-Test、CHI檢驗(yàn)和SHAP特征圖的前5特征交集如圖6所示,3種特征選擇前5個(gè)特征的交集為CP、CA、Oldpeak.
圖6 3種特征選擇方法前5特征韋恩圖
結(jié)合SHAP圖對(duì)韋恩圖3種特征選擇方法的交集特征進(jìn)行分析,影響心臟病的最重要特征為Cp(胸痛類型),該特征對(duì)心臟病的影響呈現(xiàn)出線性關(guān)系.Ca(主動(dòng)脈數(shù)量)和Oldpeak(運(yùn)動(dòng)ST值)對(duì)心臟病也有著顯著影響,隨著主動(dòng)脈數(shù)量和運(yùn)動(dòng)ST值增大,患心臟病的風(fēng)險(xiǎn)不斷增大.
利用T檢驗(yàn)來挖掘特征之間的顯著差異性,利用10種機(jī)器學(xué)習(xí)模型來預(yù)測(cè)心臟病.采用公開UCI中的心臟病預(yù)測(cè)數(shù)據(jù)集來測(cè)試提出的方法,通過SHAP值對(duì)來挖掘單個(gè)特征對(duì)模型的影響.結(jié)果顯示,與對(duì)比論文結(jié)果相比,利用T檢驗(yàn)與Bagging模型相結(jié)合的方法,在5個(gè)特征組合時(shí),各項(xiàng)評(píng)價(jià)指標(biāo)為1,能夠準(zhǔn)確對(duì)心臟病進(jìn)行預(yù)測(cè).同時(shí)通過SHAP可視化分析方法,表明胸痛類型、主動(dòng)脈數(shù)量與心臟病之間的關(guān)聯(lián),對(duì)心臟病的精準(zhǔn)醫(yī)療有指導(dǎo)意義.