李佳思
(上海工程技術大學 數理與統計學院,上海 201620)
糖尿病是一種常見的慢性疾病,過去30 年來,中國糖尿病的發病率急劇增加,國際糖尿病聯盟協會(IDF)統計顯示,2019 年中國糖尿病患者達到1.16億,位于世界第一位,成為威脅人們身體健康的一大問題[1-2]。糖尿病的典型癥狀為多食、多飲、多尿、體重減輕,根據病因不同可以分為1 型糖尿病、2型糖尿病、妊娠糖尿病和其它特殊類型糖尿病。其中,以2 型糖尿病最為常見,約占糖尿病患者的90%,主要由于遺傳、環境等因素,使得胰島素調節血糖能力下降[3]。糖尿病具有高達100 多種并發癥,如糖尿病心血管并發癥、糖尿病足、神經等病變[4-5]。目前,糖尿病仍以飲食控制和藥物治療為主,給人們的生活帶來極大不便,早發現早治療可以減少由糖尿病并發癥引起的死亡率。因此,尋找一種更加高效、準確的診斷方法具有重要意義。
隨著互聯網技術的快速發展與計算機性能的不斷提升,機器學習和人工智能逐漸應用于各個領域,將機器學習方法與疾病診斷相結合,為醫生提供輔助決策,建立智能化的疾病診斷系統成為熱點研究方向。如今,機器學習已經形成成熟的理論體系,發展出許多算法模型,如:經典的決策樹(Decision Tree)、邏輯回歸(Logistic Regression)、支持向量機(Support Vector Machine)和K-近 鄰(K-nearest Neighbor)等單學習器,以及隨機森林(Random Forest)、AdaBoost 和XGBoost 等集成學習算法,在模式識別、文本分類、醫療診斷等方面均得到了廣泛應用。
目前,許多學者將機器學習算法應用于糖尿病的診斷。侯偉[6]等提出一種基于一維卷積神經網絡的DPN 糖尿病預測方法,使用天津醫科大學代謝病醫院的898 個患者數據進行模型驗證,分別建立了1D-CNN 模型、支持向量機和BP 神經網絡預測模型。實驗結果顯示,1D-CNN 模型的效果最好,準確率達到98.3%。喬瀚[7]等將基于多特征屬性患者相似性的方法用于糖尿病診斷,通過聚類方法,分析了不同特征的相似性并進行分組,使用隨機森林對分組結果進行擬合得到疾病預測結果。實驗結果顯示,所提方法相比其它方法更具有效性,預測準確率得到提升。章權[8]等將Stacking 集成學習方法應用于糖尿病的診斷,在UCI 數據庫中的皮馬印第安人糖尿病數據集中使用支持向量機、隨機森林和人工神經網絡作為基學習器進行Stacking 集成。結果表明,融合后的模型比單個模型具有更好的分類效果,分類準確率為92.2%。Sarwar[9]等將支持向量機、K-近鄰、邏輯回歸、隨機森林等機器學習算法應用于糖尿病預測,實驗使用UCI 數據庫中的皮馬印第安人糖尿病數據集。結果顯示,支持向量機和K-近鄰的分類準確率為77%,優于其它分類算法,血糖濃度、體重指數和年齡是糖尿病預測的重要影響因素。于建宇[10]為了提升對妊娠期糖尿病的預測準確率,分別使用了Xgboost、Lightgbm 和Catboost 等集成學習算法,對天池比賽中的糖尿病數據進行預測,實驗中使用交叉驗證與網格搜索,確定模型的最佳參數。結果顯示,Catboost 算法的預測準確率最高,達到了76.5%。
機器學習算法在疾病預測方面的應用可以提升診斷效率和準確率,但是醫療數據通常具有大規模、高維度和異構性等特點,模型的預測準確率會受到多種因素的影響,同一模型在不同數據集中的表現也具有很大差異。雖然當前具有許多機器學習算法,但大多數算法都是黑箱模型,可解釋性不強。針對于此,本文使用單分類模型(決策樹、邏輯回歸、支持向量機、K-近鄰和樸素貝葉斯)和集成學習算法(隨機森林、AdaBoost 和XGBoost)用于糖尿病預測,對UCI 數據庫中的皮馬印第安人糖尿病數據集進行建模,通過5 折交叉驗證和網格搜索獲得模型的最佳參數,并使用5 折交叉驗證準確率和AUC 值選出最佳預測模型,然后引入SHAP 方法進行特征分析,找出影響糖尿病的主要因素。
由于大多數機器學習算法的可解釋性較差,無法分析各個特征如何影響模型的預測結果,而這對于疾病診斷來說非常重要。因此,本文采用SHAP方法對模型中的糖尿病影響因素進行分析。
沙普利可加性模型解釋方法(SHapley Additive exPlanation,SHAP)是Lundberg 和Lee[11]在2017 年提出的,其基本思想是通過計算每個特征加入模型時的邊際貢獻達到解釋模型的目的,可用于解釋各種黑箱模型。該方法首先計算出每個特征的貢獻值,可能為正向貢獻,也可能為負向貢獻,然后將所有特征的貢獻值累加得到最終預測結果[12-14]。
假設第i個樣本為xi,第i個樣本的第j個特征為xij,模型對該樣本的預測值為yi,整個模型的基線(即模型對所有樣本預測值的均值)為ybase,則SHAP 值服從以下等式:

式中,f(xij) 表示第i個樣本中第j個特征對模型預測結果yi的貢獻值。當f(xij)>0 時,表示該特征對模型預測結果具有正向影響,反之,該特征對模型預測結果具有負向影響[15-16]。SHAP 方法示意如圖1所示。

圖1 SHAP 示意圖Fig.1 Schematic diagram of SHAP
模型需要依靠合適的評價指標進行評估,對于二分類問題,常常使用混淆矩陣對模型的分類效果進行評價,混淆矩陣可以直觀地反應出模型的分類結果,由混淆矩陣可以得到準確率(Accuracy)、精準率(Precision)、召回率(Recall)和F1值,對模型性能進行全面評估。其中,準確率是分類正確的樣本數量與總樣本數量的比值;精準率表示預測為糖尿病的樣本中實際也為糖尿病患者的比例;召回率表示真實為糖尿病的樣本中,被預測為糖尿病的比例;F1 值為精準率與召回率的調和平均值。各評價指標的計算公式如下:


其中,TP表示真實為糖尿病同時也被預測為患糖尿病;TN表示真實為未患糖尿病同時也被預測為未患病;FN表示真實為患糖尿病而被預測為未患病;FP表示真實未患病而被預測為患糖尿病。
受 試 者 工 作 特 征(Receiver Operating Characteristic,ROC)曲線,表示了模型在不同閾值下真正率(True Positive Rate,TPR)和假正率(False Positive Rate,FPR)之間的關系。TPR和FPR的計算公式如下:

分別計算出不同閾值下的真正率和假正率,以假正率為橫軸,真正率為縱軸,將各點在平面直角坐標系中繪制出來并進行連接得到ROC曲線(如圖2所示),ROC曲線越靠近左上角,表示模型效果越好。AUC 值是ROC曲線下的面積大小,其值越接近于1,表示模型預測效果越好。本文通過5 折交叉驗證準確率和AUC 值對各個模型的性能進行評價。

圖2 ROC 曲線示意圖Fig.2 ROC curve diagram
本文實驗過程主要包括數據預處理、建立預測模型、模型性能評估和影響因素分析4 部分,實驗流程如圖3 所示。實驗使用UCI 數據庫中的皮馬印第安人糖尿病數據集,該數據集共有768 個樣本,其中,500 例未患糖尿病,268 例患有糖尿病。數據集含有8 個特征,各個特征的含義見表1,其中,Outcome 為標簽列,表示是否患有糖尿病。

圖3 實驗流程Fig.3 Experimental steps

表1 糖尿病數據集特征描述Tab.1 Feature description of diabetes dataset
在數據預處理前通常需要對數據進行可視化分析,其有利于分析數據自身特性,幫助提升模型的分類效果。通過Python 中Pandas 庫的describe 函數,對原始數據進行描述性統計,可知各特征間的均值和方差存在較大差異。特征Glucose、BloodPressure、SkinThickness、Insulin 和BMI 5 個特征存在不同程度的缺失情況,其中Insulin 的缺失比例達到48.7%。由于缺失數據較多,若直接刪除含有缺失值的樣本,將會導致模型擬合能力下降,因此,對于上述5 個特征使用中位數進行缺失值填充。然后,使用數字異常值方法處理異常值,計算各列特征的四分位數間距IQR,將低于Q1-1.5IQR的值或高于Q3+1.5IQR的值作為異常值。其中,Q1為下四分位數,Q3為上四分位數,IQR為上四分位數與下四分位數之差。最后,將數據進行標準化處理以消除特征之間的量綱差異。
本文對UCI 數據庫中的皮馬印第安人糖尿病數據進行缺失值、異常值處理并進行標準化后,分別使用決策樹、邏輯回歸、支持向量機、K-近鄰、樸素貝葉斯5 種單分類器,以及隨機森林、AdaBoost 和XGBoost3 種集成學習算法對預處理后的數據集進行擬合。實驗過程中,使用70%的數據作為訓練集,30%的數據作為測試集,采用網格搜索和交叉驗證尋找各個模型的最優參數,將5 折交叉驗證準確率作為確定模型最優參數的評估指標。將建立好的模型在測試集中進行測試,以5 折交叉驗證準確率和AUC 值作為模型優劣的評價標準,各模型的預測結果,見表2。

表2 不同模型性能比較Tab.2 Performance comparison of different models
由表2 可知,在皮馬印第安人糖尿病數據集中,決策樹模型的預測效果最差,5 折交叉驗證準確率為70.70%,AUC 值為0.706;XGBoost 算法的分類效果最好,5 折交叉驗證準確率達到了77.83%,AUC值為0.822,高于其它分類模型。
為了進一步研究糖尿病的主要影響因素,提升分類模型的可解釋性,引入SHAP 方法對糖尿病數據集進行特征分析。圖4 為糖尿病數據集的特征重要性分析圖。由圖中可知,葡萄糖濃度、身體質量指數和年齡是影響糖尿病的重要因素,這與臨床經驗基本一致。

圖4 特征重要性分析Fig.4 Feature importance analysis
圖5 展示了各特征的SHAP 值分布,從上到下按各個特征的重要性進行排序。橫軸是模型的SHAP 值,點的顏色表示特征值的大小。越接近紅色,表示特征的值越大,越接近藍色表示特征的值越小。SHAP 值為正,表示對模型預測為患糖尿病具有正向貢獻;SHAP 值為負,表示對模型預測為患糖尿病具有負向貢獻。由圖5 可知,Glucose 對模型的預測結果影響最大,且隨著Glucose 的值增大,會增加樣本預測為患糖尿病的概率,即該特征對預測為患糖尿病具有正向影響。BMI 的趨勢與Glucose 類似,隨著BMI 值的增大,樣本被判定為患糖尿病的概率增加,而BMI 值的減小,則會增加模型判定樣本不患糖尿病的概率,這與生活中肥胖患者更易患糖尿病相一致。

圖5 特征分析Fig.5 Feature analysis
SHAP 方法不僅可以在整體層面對預測模型的影響因素進行分析,還可以針對個體進行影響因素分析。分別選取一名被預測為糖尿病患者和一名被預測為非糖尿病患者進行個體影響因素分析。
圖6 為一名被預測為糖尿病患者的SHAP 特征貢獻圖,紅色部分表示對預測為糖尿病有正向影響,藍色表示對預測為患糖尿病有負向影響。由圖6 可以解釋這名患者被預測為患糖尿病的原因是葡萄糖濃度較高、身體質量指數較高、年齡較大等。

圖6 預測為糖尿病患者的SHAP 解釋示例Fig.6 Example of SHAP interpretation for predicting diabetes
圖7 為一名被預測為非糖尿病患者的SHAP 特征貢獻圖。由圖7 可以解釋其被預測為非糖尿病的原因為葡萄糖濃度較低、年齡較小、身體質量指數較低等。

圖7 預測為非糖尿病患者的SHAP 解釋示例Fig.7 Example of SHAP interpretation for predicting Non-diabetes
糖尿病作為中國發病率較高的慢性疾病之一,給患者帶來許多不便和負擔。因此,將機器學習算法應用到糖尿病預測,對提升糖尿病診斷效率和準確率,了解糖尿病的發病機制具有重要意義。本文基于機器學習算法,使用UCI 數據庫中的皮馬印第安人糖尿病數據集構建了糖尿病預測的單分類模型(決策樹、邏輯回歸、支持向量機、K-近鄰和樸素貝葉斯)和集成學習模型(隨機森林、AdaBoost 和XGBoost),通過5 折交叉驗證準確率和AUC 值對各個模型進行性能評估。實驗結果表明,XGBoost 算法的預測效果最好,5 折交叉驗證準確率為77.83%,AUC 值為0.822。然后,引入了SHAP 方法增強模型的可解釋性,得到引起糖尿病的主要因素為葡萄糖濃度、身體質量指數、年齡、懷孕次數等,醫生在進行決策時可以多關注這些特征。在未來,可以將更多與糖尿病相關的因素考慮到模型中,進一步提升糖尿病診斷準確率。