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