程祉元,張博良,蔡雨晨,馬雨生,邵澤國,劉巧紅
(上海健康醫學院醫療器械學院,上海 201318)
人的循環系統包括心臟、血管以及調節血液循環的神經體液組織,而循環系統疾病(心血管病)包括了上述所有組織器官的疾病,而心臟病在其中最為多見,也常見于內科疾病,會導致患者的勞動力嚴重喪失。 隨著生活水平的提高,人們對自己的生活質量,尤其是身體健康有著更高的要求。 然而,根據《中國心血管健康與疾病報告2020》,心血管疾病約有3.3 億人,包括1 300 萬腦卒中,1 139 萬冠心病,500 萬肺源性心臟病,4 530 萬下肢動脈疾病以及2.45億高血壓[1]。 心血管病給社會帶來的經濟負擔日益加重,已成為重大的公共衛生問題。
研究可知,心臟病因其多樣復雜的發病類型、極高的死亡率,成為了醫學上多年來想要攻克的難題[2]。 現階段心臟疾病的診斷更多依賴于醫生對各類檢查生成的醫學影像的閱片以及患者的生活環境、家族病史、生理指標等因素的綜合診斷。 最終的診斷結果易受到醫生經驗和診斷方式等主觀因素影響,不同醫生的診斷結果常常不一致,甚至出現誤診和漏診等現象[3]。 近年來,隨著人工智能在醫療領域逐步深入的應用,人們發現利用機器學習算法針對醫療健康數據建立模型,輔助醫生對于疾病的診斷,增強評估的客觀性,可以大大提高診斷準確率。同時,還可降低醫生由于自身臨床經驗不足及疲勞工作而導致的誤判風險,提高診斷效率,以及解決現階段普遍存在的醫療診斷滯后性的問題,做到早發現、早干預。 例如,林志遠[2]采用了決策樹算法構建了心臟病預測模型,分析了ID3 和CART 的區別。李嶺海[4]對比SIFT、 SURF、 KAZE,發現深度學習可以提高分類超聲心電圖的準確率,對心臟病的分類效果更好。 石勝源等學者[5]的實驗結果表明,隨機森林算法在心血管疾病預測中準確率為73.55%,具有較大的優勢,并且性能優于其他算法,對心血管疾病的預測研究和早期病人的及時有效治療具有重要意義。 陳洞天等學者[6]利用Xgboost 模型預測心臟病,準確率為76.5%,且利用了指標分析法對預測模型的進行特征分析。 Krithiga 等學者[7]利用貝葉斯分類器應用于冠心病的早期預測,取得了不錯的效果。 王健等學者[8]提出了一種基于特征組合和卷積神經網絡的方法預測心臟病,準確率為89.9%,但缺少該預測方法的可解釋性,即不能說明該算法的內部預測過程及其是否與臨床診斷方法吻合。
本文基于集成學習隨機森林算法,以克利夫蘭心臟病數據集作為研究對象,在對其進行數據預處理、模型訓練、超參數優化、模型性能分析、可解釋性等工作的基礎上,建立了性能優越的預測模型。 本文的主要工作體現在以下2 個方面:
(1)提出使用隨機森林模型預測心臟病,并通過網格搜索技術進行參數優化提高模型性能,采用準確率、查準率、查全率、F1 值、AUC值等5 種指標評價預測效果,混淆矩陣、AUC可視化分析預測效果,與線性邏輯回歸、K -最近鄰、決策樹等模型對比,驗證了本文模型性能的優越性。
(2)在保證隨機森林模型預測性能的基礎上,引入SHAP 可解釋性模型來增強隨機森林模型的可解釋性,對影響心臟病的關鍵因素進行了特征分析,為心臟病的臨床診斷和決策提供了可參考的依據。
隨機森林算法的本質是利用集成理論將多個弱分類器(決策樹)通過訓練之后生成多棵獨立分布的決策樹并將決策樹集成一體,形成強分類器(隨機森林)。 算法有效地解決了單棵決策樹存在的不穩定性、無法保證全局最優及過度擬合等問題。 這是Bootstrap 與決策樹算法的結合,方法是先從原始數據集D中采用Bootstrap 重采樣技術,采用放回式取樣抽取一定數量的訓練樣本集,生成對應數量的決策樹;決策樹訓練過程中,每個節點的特征都是從該決策樹數據集特征中按照特定比例地無放回隨機抽取新的特征子集[9];最后,從新特征子集中選出能使信息增益率最大化的特征,并以其為分割點。信息增益公式如下:
其中,Gain() 表示信息增益;Ent() 表示信息熵;D表示原始數據集;a表示新特征子集中某個特征;v表示使用特征a有v個可能的分支節點。 最終分類結果,由所有獨立決策樹的結果投票決定,公式如下:
其中,H(x)表示對樣本x的包外預測;k表示弱分類器的迭代次數;h() 表示基學習器;Y表示某個樣本特征的標簽;I表示示性函數。 這種方式保證了輸入每棵決策樹的訓練集的隨機性以及每個劃分節點的隨機性。 優勢在于其能夠處理高維度數據集,實現比較簡單,訓練速度快,還可以將不平衡數據集的誤差縮小,并對于存在大量缺失值的數據樣本也能較好地處理。
隨機森林預測模型雖然可以得到較高的準確率,但其“黑盒”性質決定了對結果的解釋力很弱,例如很難解釋為什么算法可以準確預測患者是否罹患特定的疾病。
SHAP (SHapley Additive exPlanation)能夠觀察到某一個樣本的預測中各個特征對預測結果產生的影響,對隨機森林模型的單個預測做出解釋。 SHAP模型的原理是給每個單獨的預測樣本都生成一個預測值,而單個樣本中對應其特征分配的數值表現為SHAP value。假設第i個樣本的第j個特征為xij,模型對該樣本的預測值為yi,模型的基線( 默認所有樣本目標變量的均值為基線) 為ybase,那么SHAP value 服從以下公式:
其中,f(xij) 表示第i個樣本的第j個特征對樣本預測值yi的貢獻度。 當f(xij)>0,表示該特征使得預測值升高,有積極的影響;反之,則說明該特征使得預測值降低,有消極的影響[6]。 SHAP value的優勢在于SHAP 能反映出每一個樣本中各特征的影響力以及影響力的正負性,并且特征本身在模型內部還有交互作用。 本文利用SHAP 來解釋隨機森林算法內部是如何預測結果的。
心臟病分類預測模型的設計思路主要包含數據探索,對數據集的統計分布進行可視化展示,觀察數據的分布情況;特征工程,完成數據預處理,如數據變換、數據標準化等,保證數據的質量;模型構建,構建隨機森林的心臟病預測模型;超參數優化,采用網格搜索技術對隨機森林算法的超參數進行優化調參,提高模型的預測能力;模型訓練,利用十折交叉驗證將數據集隨機地劃分為訓練集和測試集進行驗證,提高模型的泛化能力;可解釋性分析,采用SHAP 對模型中的心臟病的影響因素進行解釋分析,增強模型的可解釋性。 整個基于隨機森林的心臟病風險預測及特征分析模型的構建流程如圖1 所示。

圖1 心臟病風險預測及特征分析模型流程圖Fig. 1 Flow chart of heart disease risk prediction and characteristic analysis model
本研究采用kaggle 平臺提供的數據集,其來源于University of California,Irvine(UCI)機器學習數據庫中的the Cleveland database 數據集,此數據庫包含76 個屬性,但所有已發布的實驗都引用并使用其中14 個屬性的子集,即克利夫蘭心臟病數據集。
該數據集中一共有303 個樣本,每個樣本有14個特征,其中13 個特征為自變量,描述樣本的基本患病信息,最后1 個特征“Target”為因變量,表示患者是否患有心臟病,所有的特征及其含義見表1。

表1 克利夫蘭心臟病數據集的基本特征Tab. 1 Basic characteristics of the Cleveland heart disease data set
通過對數據質量的探索和數據特征的分析,觀察數據樣本和特征的數量、數據類型及數據概率分布等信息,用于指導預測模型建立。 根據對心臟病原始數據的描述性統計分析發現,未患病人群中男性所占比例遠超女性,而患病人群中男性占比仍多于女性。 將年齡對患病情況的影響繪制出的柱狀統計分布如圖2 所示。 由圖2 可知,中年患病幾率較大。

圖2 根據年齡分析患病情況Fig. 2 Analysis of prevalence by age
圖3 是心臟病數據集中14 個特征的單變量分布密度圖,從圖3 中可以看出每個特征的數據類型及取值分布,其中age、trestbps、chol、thalach和oldpeak五個特征為連續型特征,sex、cp、fbs、restecg、exang、slope、ca、thal和target九個特征為非連續型特征,需要進行數據預處理操作。


圖3 單變量特征統計分布Fig. 3 Statistical distribution of univariate characteristics
2.3.1 特征相關性
圖4 給出了能夠反映特征之間關系的熱力圖,通過熱力圖來發掘特征之間的關系。 熱力圖表示了2 個數據之間的相關性,數值范圍是-1 到1 之間,大于0 表示2 個數據之間是正相關的,小于0 表示2個數據之間是負相關的,等于0 就是不相關。 由圖4 可知,cp、thalach和slope這3 個特征與target之間正相關且系數大,表明其與是否患病的關系較為密切。

圖4 各項特征之間的相關性熱力圖Fig. 4 Thermodynamic diagram of correlation between features
2.3.2 非連續型數值轉換
經過數據探索和特征相關性分析發現,cp、thal和slope為不連續的多分類特征,該類型的數據不適合作為分類器輸入,因此,首先將cp、thal和slop三個特性轉換成獨熱編碼的形式參與模型訓練。 原始特征cp轉換為4 個代表不同取值的特征cp_0、cp_1、cp_2 和cp_3,原始特征thal轉換為4 個代表不同取值的特征thal_0、thal_1、thal_2 和thal_3,原始特征slope轉換為3 個代表不同取值的特征slope_0、slope_1 和slope_2,并將原始特征刪除。 經過數據轉換處理后的特征維度由原始數據的14 增加到了22。
2.3.3 數據歸一化
為了消除數據之間的量綱影響,減小數據集中數據的差異性,對數據進行了歸一化處理,將數據統一歸一化到[-1,1]之間。 原始數據經過數據標準化處理后,處于同一數量級,能夠有效地提升模型精度和收斂速度。
隨機森林模型涉及到多個參數選擇,參數值的選擇影響到模型的性能。 具體的參數取值見表2。對于表2 中的6 個核心參數,本文采用了網格搜索技術進行調參。 網格搜索在規定的參數取值范圍內逐步調整參數,用調整后的參數對隨機森林模型進行訓練,使得模型性能最優的參數確定為最佳參數。

表2 隨機森林算法參數意義及取值Tab. 2 Meaning and value of random forest algorithm parameters
為了客觀評價該算法的有效性,采用了F1 值、準確率、查準率、查全率和AUC值這5 種評價指標對模型性能進行度量。
(1)準確率(Accuracy)。 表示所有樣本中被預測正確的樣本的比率。 可由如下公式計算求值:
(2)查準率(Precision)。 表示預測樣本中預測為真陽性的概率。 可由如下公式計算求值:
(3)查全率(Recall),真陽性率(True Positive Rate,TPR),靈敏度(Sensitivity)。 表示陽性樣本被預測為真陽性的概率。 可由如下公式計算求值:
(4)F1 值(F1-score)。 用來衡量二分類模型精確度的一種指標,可以看作是模型查準率和查全率的一種加權平均。 該指標同時兼顧了分類模型的查準率和查全率,最大值是1,最小值是0。 可由如下公式計算求值:
其中,真陽性(True Positive,TP) 表示樣本中正確識別的數量;假陽性(False Positive,FP) 表示樣本中錯誤識別的數量;真陰性(True Negative,TN)表示正確識別為錯誤的樣本數;假陰性(False Negative,FN) 表示錯誤識別為正確的樣本數。 除了上述指標之外,還使用了ROC曲線和AUC值。
3.2.1 模型對比
為驗證本文的隨機森林模型的有效性,與邏輯回歸、K-最近鄰、決策樹等常用模型進行比較分析。為了提高模型之間對比的公平性及可靠性,實驗中采用了十折交叉驗證方法進行性能評估。 各種模型在準確率、查準率、查全率、F1 值和AUC值這5 項指標上的對比結果見表3,各種模型的ROC曲線對比如圖5 所示。 從表3 和圖5 的實驗結果可以看出,本文的集成學習模型隨機森林的預測準確率為86%,查準率為85%,查全率為83%,F1 值為84%,AUC值為0.89,均高于其它對比的方法。 隨機森林模型的ROC曲線(紅色)下方面積比邏輯回歸模型、K-最近鄰模型、決策樹模型的面積大,由ROC曲線的性質可知,曲線下方面積(AUC) 越大、準確率越高,體現了本文模型的優越性。

表3 不同分類模型對陽性樣本的預測能力Tab. 3 The predictive ability of different classification models for positive samples

圖5 四種模型的ROC 曲線Fig. 5 ROC curves for the four models
各種模型的訓練時間和測試時間的對比見表4。 隨機森林模型作為一種集成學習算法,模型復雜度本身高于其它幾種對比的方法,同時采用網格搜索技術的參數優化較為耗時,因此在訓練時間上相對較長。 圖6 還給出了本文模型的混淆矩陣,可以看出預測結果中,測試集中非心臟病被預測為非心臟病有27 例,心臟病被預測為心臟病有36 例,非心臟病被預測為心臟病有8 例,心臟病被預測為非心臟病有5 例。 顯而易見的是,隨機森林模型的真陽性和真陰性數量高,而假陽性和假陰性的值較低,因此,本文提出的模型有較好的分類性能。

表4 各模型時間性能比較Tab. 4 Comparison of time performance of each model

圖6 隨機森林的混淆矩陣Fig. 6 Confusion matrix of random forests
3.2.2 相關研究對比
為了進一步驗證本文模型的優越性,與文獻[8]、文獻[10]、文獻[11]和文獻[12]等相關工作進行了對比實驗。 所有文獻都針對克利夫蘭心臟病數據集進行研究,文獻[8]首先采用特征組合增強樣本的屬性關聯,再利用卷積神經網絡模型進行訓練,在準確率上獲得了高達90%的預測精度。 文獻[10]與本文模型相似,但其樣本量在克利夫蘭心臟病數據集的基礎上增加到573 個,且在網絡搜索優化參數上僅優化了n_estimators、max_depth、max -Leaf_nodes三個參數。 文獻[11]使用未優化的隨機森林模型訓練獲得了85%的準確度。 文獻[12]基于聚類和XGBoost 算法進行預測分析,準確率達到83%。
不同方法的準確率比較見表5。 從表5 可以看出,本文模型的預測結果優于文獻[10]、[11]和[12],但略低于文獻[8]。 然而本文與其它文獻的最大區別之處在于,本文在模型訓練后,引入了SHAP 可解釋性模型,對模型進行可解釋增強,識別出臨床實際中影響心臟病的主要因素,為臨床上的診斷和決策提供了有利的參考。

表5 不同方法的準確率比較Tab. 5 Comparison of accuracy of different methods
圖7 是隨機森林模型的特征重要性排序圖。 圖7 中,縱坐標是從上到下按照特征重要性排序的各個特征,橫坐標是平均SHAP值。 圖7 中顯示特征重要性排序前六的特征分別是thal_2(固定缺陷型地中海貧血癥)、cp_0(典型心絞痛)、ca(大血管數量)、thal_3(可逆轉缺陷型地中海貧血癥)、oldpeak(運動高峰的心電圖ST段)、thalach(最大心率),可見這6 個因素是影響是否患有心臟病的最關鍵因素。

圖7 基于SHAP value 的特征重要性排序Fig. 7 Sorts by features importance based on SHAP value
圖8 顯示了SHAP 摘要圖,該圖對影響心臟病患病的因素重要性進行了排序。 圖8 中的一個點表示一個樣本,樣本點的顏色從藍色到紅色表示樣本特征值從小到大,縱坐標的各特征標簽不僅顯示了特征重要性排序,還顯示了各個特征值與SHAP值的關系與分布。 圖8 中繪制了重要性排序前10 的特征對預測結果的影響,其中thal_2(固定缺陷型地中海貧血癥)、thalach(最大心率) 對預測結果有正向貢獻,cp_0( 典型心絞痛)、ca( 大血管數量)、thal_3(可逆轉缺陷型地中海貧血癥)、oldpeak(運動高峰的心電圖ST段) 對模型預測為心臟病的輸出結果有負向貢獻。

圖8 SHAP 特征分析Fig. 8 SHAP feature analysis
臨床上,診斷心臟病的常規檢查主要有常規心電圖(ECG)與動態心電圖(DCG),心電圖異常可提示心肌梗死、心肌缺血、心肌炎、心室肥厚等病癥。相關研究對于各類心臟疾病的診斷有如下常見的標準:
(1)心電圖ST 段趨勢的改變可以作為重要參考依據,指標過高可能是冠心病,指標過低則有可能是心肌缺血等病癥,還用以診斷確定心室是否肥大[13-15]。
(2)心肌缺血在ECG 的診斷標準為在同一導聯上,T波小于R波的十分之一,同時,ST段水平下移0.05 mV及以上;在DCG 的診斷標準為與等電位線比較,ST段下斜或壓低0.1 mV 及以上并持續下移大于1 min[16]。
(3)冠心病、肥厚型心肌病常伴有心絞痛等癥狀,分為典型心絞痛和非典型心絞痛,主要的病因為心肌缺血。
(4)熒光顯色主要血管數目越少(數目與血糖、膽固醇相關)證明血液流動越通暢,血管腔狹窄會使患冠心病的風險大大增加[17-18]。 臨床常選擇冠脈造影這種有創性檢查,作為判斷動脈狹窄程度的“金標準”。
(5)地中海貧血癥是先天性貧血癥影響紅細胞的壽命,易導致紅細胞數量不足,使得體內鐵超載,從而加重心臟負擔,長期的慢性貧血會誘發心絞痛,會造成心力衰竭[19-20]。
本文通過對原始數據集的預處理,構造了一個包括22 個影響心臟病患病可能的特征,并將這些特征作為隨機森林模型的輸入,結合網格搜索技術的調優和十折交叉驗證的模型訓練,取得了高達86%的準確率。 進一步利用SHAP 模型對所有特征進行了事后解釋分析,通過特征分析發現thal(地中海貧血類型)、ca(主要血管數目)、cp(心絞痛)、oldpeak(心電圖ST段趨勢的改變)、thalach(最大心率)、exang(心絞痛型胸痛) 等指標都是影響心臟病患病的重要因素。 對于地中海貧血,綜合觀察thal_2、thal_3,可以看出固定缺陷型地中海貧血與心臟病風險顯著正相關,即會明顯增加風險;而可逆轉缺陷型對風險的增加不明顯。 對于心絞痛,綜合觀察cp_0、cp_2 以及exang,可以看出心絞痛、無論典型心絞痛還是非典型心絞痛,亦或是運動誘發的心絞痛對風險的增加不明顯;而非心絞痛型的胸痛與心臟病風險呈正相關,會明顯增加風險;究竟哪些非心絞痛型的胸痛明顯增加心臟病風險還需進一步探討。 從ca指標可以觀察到,大血管數量越少,心臟病風險系數越高;同樣,oldpeak值(即相對于休息的運動引起的ST值) 越低,心臟病風險系數越高。從thalach指標可以很明顯地看到最大心率值越大,心臟病風險系數越高。 綜合觀察slope_1、slope_2,可見運動高峰ST段的坡度持平與心臟病風險成正相關,ST段的坡度向上傾斜與心臟病風險成負相關,這與心電圖運動試驗陽性診斷標準條件之一“運動中或運動后ST段程水平或下斜型壓低≥0.10 mV”相吻合。
本文基于集成學習的隨機森林算法構建了心臟病預測模型,同時引入了SHAP 對預測模型做進一步增強解釋。 首先針對Kaggle 平臺提供的心臟病數據集進行數據變換、標準化等預處理后,采用網格搜索技術對模型的參數進行優化,并對處理后的數據集進行十折交叉驗證訓練模型;然后,采用查準率、查全率、F1 值、混淆矩陣、AUC值等指標對模型進行評估,與邏輯回歸、K-最近鄰、決策樹等機器學習模型的結果進行對比,驗證了隨機森林具有較強的泛化能力、更好的分類效果;最后,還引入SHAP 模型對隨機森林模型做進一步解釋,識別出影響心臟病患病的主要因素,并解釋這些特征與臨床診斷的關系。 模型增加了可解釋說明,從而提高了模型的分類識別效率,為臨床決策服務,具有重要的實用價值。