張力戈,陳芋文,秦小林,易 斌,李雨捷
1.中國科學院 成都計算機應用研究所,成都 610041
2.中國科學院大學,北京 100049
3.中國科學院 重慶綠色智能技術研究院,重慶 400714
4.陸軍軍醫大學 第一附屬醫院,重慶 400038
圍術期患者出現危重癥,不僅會增加患者的醫療費用,影響患者的康復結果[1-2],甚至會導致患者死亡。Khuri等[3]研究表明術后30天內發生嚴重不良事件的患者中位生存時間減少69%。短期手術并發癥的長期后果對患者生命健康和生活質量有深遠的影響[4]。有效預測危重癥風險有助于醫生及時診斷和治療患者,避免藥物過度使用,有利于醫院資源的合理配置,同時降低患者的痛苦和死亡率?;颊叩母鞣N監測指標在危重癥預測中起著重要作用,結合這些指標對患者圍術期危重癥的預測更具有實用性和針對性。
目前,機器學習在醫學領域得到了廣泛的應用。Ramana等[5]利用支持向量機、C4.5決策樹、BP神經網絡等完成基于肝臟文本數據集的診斷分類。Patricio 等[6]使用Logistic 回歸、支持向量機和隨機森林分類算法基于血液樣本數據預測乳腺癌。Aljaaf等[7]提出了一種基于C4.5決策樹的心力衰竭多層次風險評估方法。Otoom等[8]提出了分析監測冠狀動脈的系統,他們的數據集有76 個特征,只有13 個特征被使用。Demsar 等[9]證明少量的特征可以攜帶足夠的信息來建立合理準確的預測模型。Sharma 等[10]使用改進的灰狼算法進行特征選擇和預測患者帕金森風險,估計準確率達到94.83%。Lucini等[11]使用數據挖掘方法結合機器學習算法來預測患者未來的住院和出院情況。由于單一分類器不能對所有疾病進行診斷,Nallur等[12]基于三種進化算法、支持向量機和多層感知器,提出了混合分類參數優化診斷系統,實現了對混合疾病的診斷。以上研究表明,在不降低預測精度的前提下,可以減少用于預測的特征數量。然而,上述選擇特征的方法多為針對特定疾病設計或者依賴醫生經驗直接選擇,通用性較低。對于一系列危重癥,仍然需要一種通用的方法來分析它們與患者術前和術中檢測指標的潛在關聯。
針對上述問題,本文提出基于機器學習的危重癥指標分析模型。模型采用統計方法與斯皮爾曼等級相關系數去除冗余指標,基于XGBoost[13]分析指標與危重癥之間的相關性,并提取危重癥對應的核心指標。
用于危重癥指標選擇的方法可以分為嵌入法與過濾法兩類。嵌入法依賴特定的機器學習模型,使用不同的指標子集訓練模型,選擇預測性能較高的子集作為最優指標子集。過濾法通過預定義的性能度量來選擇指標,這些方法獨立于后續的分類器。過濾法具有較少的計算量,使用更為廣泛。Yu等[14]提出了一種基于條件互信息的特征選擇方法,為后續的支持向量機分類器選擇最有效的心率變化特征。采用該方法選取15個特征的準確率比全部50個特征的準確率高1.21%。Lee等[15]提出了一種基于支持向量機誤差界準則的特征選擇方法提高充血性心力衰竭的識別效率,采用該方法選取17個特征的準確率高于遺傳算法所選特征。Wang等[16]提出了一種改進的信息增益方法來選擇肝硬化特征,該方法結合信息增益和典型分類器來生成最優特征子集。
以上研究重點在最優指標子集的選擇上。Sanchez-Pinto 等[17]分析了目前臨床診斷中使用的8 種不同特征選擇方法。他們的研究結果表明,基于回歸的特征選擇方法在較小的數據集上可以得到更好的臨床預測,而基于樹的方法在較大的數據集上表現更好。Sanchez-Pinto等[17]分析了兩類特征提取算法在臨床預測中的有效性,其工作具有指導意義。與上述研究不同,本文著重分析患者術前術中檢測指標與危重癥的相關性。指標與危重癥的相關性揭示了指標對危重癥預測的影響,本文模型利用指標對危重癥預測的貢獻來衡量二者之間的相關性,并選取貢獻較大的指標作為危重癥對應的關鍵指標。
本文模型由數據預處理、指標相關性分析、指標重要性分析與核心指標選擇四部分組成,整體流程如圖1所示。

圖1 模型流程圖Fig.1 Flow chart of model
2.1.1 數據提取與合并
為同時分析患者術前術中指標,本文模型將患者術前檢測指標與檢測指標進行提取與合并。對于患者術前檢測指標數據,由于不同患者每次進行術前檢查的指標不同,因此術前檢測指標數據集中存在一定的缺失值。模型以14天為閾值,通過公式(1)填充每個患者的指標缺失值,式中ei,j、ek,j表示第i和k時刻指標j的檢測值,閾值設定為14 天是與醫生討論后的結果。然后,根據患者的病歷號與手術時間,合并患者各類術前檢測指標?;颊咝g中檢測指標數據為時序類型,為將這些指標與術前檢測指標合并,模型計算患者術中各類監測指標的均值(mean)、方差(variance,var)、標準差(standard deviation,std)、最大值(max)、最小值(min)、峰度(kurtosis,kurt)、偏度(skewness,skew),統計各類指標術中異常時間,并以這些統計值代表術中各類監測指標。

提取術前和術中檢測指標數據后,模型結合病歷號和患者手術時間,將兩種指標數據合并生成術前術中指標數據集。
2.1.2 指標缺失值與單一值處理
雖然模型在提取指標數據集時已填充了術前檢驗指標的缺失值,但是由于指標記錄不完整以及患者之間的檢測指標存在差異,數據集中仍存在大量缺失值,含缺失值較多的指標在危重癥預測中無實際作用,屬于冗余指標。本文模型首先通過公式(2)計算每個指標所含缺失值比例,式中li表示指標i所含缺失值比例,ui為指標i中缺失值的數量,n表示指標i整體維度,即所提數據集的樣本量,圖2 展示了肝衰樣本缺失值統計結果。然后設置閾值MT,將缺失值比例高于MT的指標作為冗余指標并移除。

圖2 指標缺失值統計結果Fig.2 Statistical results for missing values of indicators

除缺失值外,指標數據集中存在單一值現象,即數據集中某些指標僅包含一種值。造成這一問題的原因是數據集中所有患者的一些指標檢測值相同,例如數據集中所有患者均沒有使用過某種藥物。無論患者是發生危重癥,這些指標的檢測值都相同。因此,這些指標對危重癥預測無實際意義,屬于冗余指標。本文模型通過統計數據集中各類指標不同檢測值的數量確定單一值指標,并將這些指標移除。
由于數據集中指標種類繁多,不同指標之間可能存在一定的相關性。同時,具有高共線性的指標在危重癥預測中的作用相同。為進一步提升危重癥的預測效率,本文模型通過斯皮爾曼等級相關系數分析患者檢測指標間的相關性,并移除相關性高的指標。
首先將選中的兩個指標a、b的檢測值分別排序,記a、b中檢測值的排名向量為ra、rb,根據公式(3)計算ra、rb的插值da,b,式中rai、rbi為ra、rb在位置i處的值,n表示指標維度,即指標數據集的樣本量。然后,通過公式(4)得到a、b間的相關性ρa,b。

基于上述步驟,根據公式(5)構造數據集中所有指標的相關性矩陣T并提取其上三角矩陣U,式中ρi,j表示第i個指標與第j個指標間的相關性,ti,j與ui,j分別為T與U在位置(i,j)處的值。圖3展示了肝衰樣本指標相關性矩陣部分結果,圖中色彩深度代表了相關性高低。最后設置相關性閾值CT并逐列與U中元素比較,若U中第i列存在大于CT的元素,則將第i個指標作為冗余指標并移除。

圖3 指標相關性分析部分結果Fig.3 Collinear processing results of indicators

分析指標與危重癥相關性的關鍵部分是估計各指標在危重癥預測中的重要性,指標的重要性代表了該指標對危重癥預測的貢獻程度。
盡管模型已經在前期預處理中填充了部分空值并移除了含有大量空值的指標,但指標數據集中仍存在缺失值。為更好地處理缺失值,本文模型采用基于分類與回歸樹(Classification and Regression Trees,CART)結構的XGBoost算法作為危重癥預測分類器,分析各類指標對危重癥預測的貢獻度。XGBoost 是梯度提升決策樹(Gradient Boosting Decision Tree,GBDT)的一種改進算法,通過結合二階導數并加入正則項來優化目標函數,同時在訓練過程中加入樣本抽樣與特征抽樣來降低算法過擬合風險,提升算法的泛化能力。模型通過公式(6)進行危重癥預測,式中xi為患者i的檢測指標向量,表示患者i危重癥預測值,F為針對患者危重癥風險預測的CART決策樹空間,fk為第k次迭代的CART決策樹,k表示模型最終迭代次數。模型針對危重癥預測的目標函數如公式(7)所示,yi為患者i的真實標簽,L()為損失函數,∑kΩ(fk)為正則化項。

完成訓練后,本文模型采用指標在XGBoost 分類器中的平均信息增益表示指標對危重癥預測的貢獻程度,即指標的重要性。通過公式(8)進行計算,式中vj為指標j的平均信息增益,Gj、Tj分別表示指標j在XGBoost 分類器所有CART 決策樹中的信息增益和以及作為分裂節點出現的總次數。為提升分析穩定性,本文模型以10次隨機采樣分析結果均值作為最終指標與危重癥的相關性。

核心指標的選擇基于上一步得到的各指標對危重癥預測的重要性。首先對指標重要性進行降序排列。其次,通過公式(9)對指標重要性進行歸一化,式中sj為第j個指標的歸一化重要性,m為數據集中指標數量。然后通過公式(10)計算指標重要性累加和,式中cj表示第j個指標的重要性累加和。最后設置閾值KT,選擇重要性累加和低于KT的指標作為核心指標。

為驗證本文模型有效性,實驗部分采用肝衰與腎衰患者數據進行分析,數據均采集自合作單位真實患者檢測數據。肝衰與腎衰樣本量與原始檢驗指標量如表1所示,兩種危重癥陽性樣本數量明顯少于陰性樣本數量。針對此問題,為保證患者數據的真實有效性,本文模型采用降采樣方法將陰性樣本數量減少至與陽性樣本量一致。

表1 危重癥樣本量Table 1 Number of samples for critical illnesses
本文實驗在Python 3.5環境下完成,實驗平臺CPU為Inter Core i5 2.9 GHz,16 GB RAM。實驗中XGBoost分類器與LightGBM[18]分類器參數如表2、表3所示,訓練時以每個患者的術前術中檢驗指標作為樣本的特征。實驗中采用準確率(Accuracy)、F1 值(F1_score)、AUC(Area Under Curve)、敏感性(Sensitivity)與特異性(Specificity)評價分類結果。

表2 XGBoost參數Table 2 Parameters of XGBoost

表3 LightGBM參數Table 3 Parameters of LightGBM
模型在缺失值處理與指標相關性分析中,采用的閾值MT與CT分別為0.90與0.98。肝衰與腎衰樣本初始指標數量為192 與193,經過模型數據預處理以及指標相關性分析,剩余指標數量為119與73。
圖4 為肝衰與腎衰樣本前20 指標的歸一化重要性。從中可看出,肝衰每個指標的重要性略低于腎衰指標。肝衰與腎衰前20 指標歸一化重要性累加和分別為0.450 與0.498,表明腎衰指標重要性累加和增長快于肝衰,即按照同樣的閾值進行核心指標選擇時,腎衰樣本核心指標數量明顯少于肝衰樣本。因此,實驗中設置腎衰樣本核心指標選擇閾值高于肝衰樣本核心指標選擇閾值,確保腎衰樣本與肝衰樣本選擇的核心指標數量相差不大,分別設置為0.70 與0.55,實際應用中可根據需要設置與

圖4 指標歸一化重要性Fig.4 Normalized importance of indicators
圖5 為肝衰與腎衰樣本的歸一化重要性累加和結果,圖中豎線以為界限,將指標分為兩部分,左邊部分即所選的核心指標。從圖5可看出,肝衰與腎衰樣本所選的核心指標數量分別為31 與36,所選核心指標如表4所示。

表4 兩種危重癥核心指標Table 4 Key indicators of two critical illnesses

圖5 指標重要性累加和Fig.5 Cumsum for the importance of indicators
目前基于支持向量機、Logistic 回歸、隨機森林、XGBoost與LightGBM等機器學習算法的預測模型已經應用在各類疾病的風險預測中[5-6,19-21]。相對于上述預測模型,本文模型的重點在于分析患者各類檢測指標與危重癥之間的相關性,并提取相關性高的指標輔助醫師診療患者。為驗證模型指標分析結果有效性,本文基于上述預測模型,對比了全部指標與核心指標在肝衰與腎衰預測中的效果,預測模型采用XGBoost 與LightGBM 分類器。預測結果ROC曲線與P-R如圖6、7所示,其中虛線表示使用核心指標的結果,實線表示使用全部指標的結果,紅色表示XGBoost分類器結果,綠色表示LightGBM分類器結果。從圖6、7 可看出,XGBoost 與LightGBM使用腎衰核心指標的ROC 曲線與P-R 曲線與使用全部指標的ROC 曲線與P-R 曲線基本一致,XGBoost 與LightGBM 使用肝衰核心指標的ROC 曲線與P-R 曲線線下面積略大于與使用全部指標的線下面積,即本文所提核心指標的腎衰預測效果與使用全部指標相近,肝衰預測效果略高于全部指標。

圖6 兩種危重癥預測ROC曲線Fig.6 ROC curves of two critical illnesses

圖7 兩種危重癥預測P-R曲線Fig.7 P-R curves of two critical illnesses
進一步驗證模型有效性,本文采用10 折交叉驗證對比了全部指標與核心指標在肝衰與腎衰預測中的效果。將肝衰數據集與腎衰數據集分成10 個不同的子集,子集的樣本量分別為(35,35,34,34,34,34,34,34,34,34)與(51,51,51,51,51,51,50,50,50,50),每次使用其中1 個子集作為測試集,剩余9 個子集作為訓練集,交叉驗證重復10 次。表5 與表6 中預測結果均為10 折交叉驗證均值,采用的分類器分別為XGBoost 與LightGBM。從表5 可看出,肝衰核心指標在XGBoost分類器上的準確率、AUC、F1 值與特異性,較所有指標分別提高了0.011、0.013、0.009 與0.030,敏感性略低于所有指標。腎衰核心指標在XGBoost 分類器上的準確率、F1 值、敏感性與特異性,較所有指標分別提高了0.012、0.012、0.003 與0.019,AUC 略低于所有指標。從表6 可看出,肝衰核心指標在LightGBM 分類器上的準確率、AUC、F1值、敏感性與特異性,較所有指標分別提高了0.021、0.022、0.019、0.001 與0.038。腎衰核心指標在LightGBM 分類器上的準確率、F1 值與敏感性,較所有指標分別提高了0.018、0.022與0.039,AUC與所有指標相等,特異性略低于所有指標。由表5 與表6 結果可知,本文所提核心指標在腎衰與肝衰中的預測效果略高于所有指標,即本文模型提取的核心指標有效。

表5 XGBoost預測結果Table 5 Predictive results of XGBoost

表6 LightGBM預測結果Table 6 Predictive results of LightGBM
由于患者術前術中檢測指標數據存在缺失值情況,實驗中采用了XGBoost 分類器與LightGBM 分類器對所提模型進行驗證。從上述實驗結果可看出,本文模型所提關鍵指標在危重癥預測中可以替代所有指標。對比其他預測模型,周杰斌等[20]使用Logistic 回歸模型預測藥物性肝衰的AUC 與準確率分別為0.917 與0.867,略低于本文模型提取的核心指標在LightGBM 模型中的肝衰預測效果;Vijayarani等[22]使用人工神經網絡預測包括腎衰在內的腎臟疾病的準確率為0.877,與本文模型提取的核心指標在XGBoost 模型中的腎衰預測結果相似。這些結果表明本文模型有效地移除了冗余指標,避免了這些冗余指標對危重癥預測的影響,提取的核心指標能夠有效地用于危重癥風險的預測,即模型能有效分析指標與危重癥之間的相關性。
然而,本文模型仍存在一些不足:為了保證患者樣本的有效性,模型沒有填充患者檢驗指標的缺失值。雖然模型分析了指標缺失值并設置閾值移除了部分缺失值比例較高的指標,但數據集中仍然存在部分缺失值。由于數據缺失等因素影響,一些根據醫生經驗對危重癥應具有重要意義的指標在模型中可能沒有得到應有的重要性。因此,本文模型仍需結合醫生經驗等因素進一步改進,使分析結果更接近指標與危重癥之間的真實相關性。
本文提出了基于XGboost 的危重癥指標分析模型。該模型包括數據預處理、相關性分析、重要性分析和關鍵指標選擇四部分,對指標的缺失值、單值、相關性以及與危重癥之間重要性進行統計與分析,并根據重要性結果選取危重癥對應的核心指標。實驗采用肝衰與腎衰兩種危重癥樣本對模型進行驗證,結果表明本文模型能夠有效地分析患者檢測指標與危重癥之間的相關性。