引用本文: 徐鋮斌, 徐平, 葛茂軍, 劉曉慶. 基于機器學習的結直腸手術部位感染預測模型建立. 華西醫學, 2020, 35(7): 827-832. doi: 10.7507/1002-0179.202002027 復制
手術部位感染(surgical site infection,SSI)是最常見的醫院獲得性感染(healthcare-associated infection,HAI)之一,占所有 HAI 的 30%[1-2]。SSI 造成住院時間長達 10 d,生活質量顯著下降,與 SSI 相關的再入院費用最高可達每次 2.7 萬美元[3]。外科患者的 SSI 發生率在 2%~4%[4-5],而結直腸手術后 SSI 風險可在 15%~30% 不等[6]。監測是醫院感染防控質量改進的基礎。傳統的手工核查醫療記錄監測 SSI 既費時又費力,也會遺漏感染病例。雖然已有多項研究利用切口照片、臨床病歷關鍵詞、醫療保險數據和血液分析結果等非常規監測數據通過機器學習建立預測模型成功診斷、識別 SSI 而實現電子化監測[7-12],但機器學習的成果與訓練數據集密切相關,一方面現實中難以套用其他數據集訓練的模型進行研判,另一方面也難以準備大量非傳統監測數據建立預測模型。現實中最方便利用的數據是傳統監測數據。本研究針對 SSI 風險較高的結直腸手術,利用傳統監測數據,通過機器學習建立適合該數據集的結直腸 SSI 預測模型,用于電子化監測系統識別感染病例,減少傳統監測的不足。
1 資料與方法
1.1 數據來源
本研究采用杜克大學外部感染控制監測網收集的 2015 年 1 月 15 日—2016 年 6 月 16 日的結直腸手術信息,該工作網包含 43 家非教學醫療機構,參加機構按照美國疾病預防控制中心結直腸手術監測標準上報數據,上報時已去除患者個人敏感信息。該數據集特征參見 Ge 等[13]描述。
1.2 數據集變量
本數據集有 12 個變量,包括醫院床位數、醫院年結直腸手術量、患者年齡、患者性別、體質量指數(body mass index,BMI)、糖尿病、手術時間、美國麻醉醫師協會(American Society of Anesthesiologists,ASA)評分、切口類型、風險指數、是否使用腔鏡、是否急診手術。將感染與否作為結果標簽。
1.3 數據集的劃分和使用
遵循分層隨機采樣原則進行數據集劃分,將全部數據集的 80% 作為訓練數據集,20% 作為測試數據集,用于測試模型性能。在訓練模型時,采用十折交叉驗證(使用訓練數據集中的 90% 作為訓練數據,10% 作為驗證數據)確定模型超參數,之后再使用全部訓練數據集訓練模型參數(超參數不變),并通過測試數據集測試模型的預測能力。通過上述數據集劃分方式,對多種模型進行模型訓練、測試后,選定一種預測性能最優的模型。鑒于最優模型在測試數據集上的預測性能仍不夠理想,原因在于訓練數據集數據量不足。為了證明用于訓練模型的數據集增多對本模型性能的影響,進行延伸實驗,重新劃分數據集,采用全部數據集的 90% 作為訓練數據集,10% 作為測試數據集,在訓練過程中依然使用十折交叉驗證訓練模型超參數,再使用全部訓練數據集訓練模型參數,并用測試數據集測試模型性能。
1.4 模型選擇
分別使用決策樹、隨機森林、支持向量機、logistic 回歸、樸素貝葉斯模型等數據分析工具建模,從中篩選最優工具進行建模、訓練和預測。
1.5 模型評價指標
模型預測的感染和非感染例數與實際感染和非感染結果進行四格表比較,計算預測模型的靈敏度、特異度、陽性預測值和陰性預測值,以受試者工作特征(receiver operating characteristic,ROC)曲線的曲線下面積(area under curve,AUC)最大化時的參數作為模型參數,該參數綜合考慮了模型的誤診率和漏診率,值越大,模型的預測性能越接近準確。采用比值比(odds ratio,OR)及其 95% 置信區間(confidence interval,CI)進行檢驗效度判定,檢驗水準 α=0.05。
1.6 模型建立方法
使用 Python 3.7 語言進行機器學習訓練測試。通過調節各分類器參數,訓練各模型超參數使得其對于訓練數據集進行十折交叉驗證的平均性能最好,再使用訓練數據集訓練模型參數,最后通過測試數據集測試各模型的泛化性能,比較各模型測試性能,選擇測試性能最佳的分類模型。為解決本數據集中感染類和未感染類樣本不平衡問題,可以通過過采樣或欠采樣方式平衡樣本數量,也可以通過設置 class_weight 和 sample_weight 為不同類樣本進行加權。在建模過程中,通過實驗為各模型確定解決樣本不平衡的最優方案。
在進行決策樹模型訓練的過程中,通過調節特征選擇標準(criterion)、特征劃分標準(splitter)、決策樹最大深度(max_depth)、節點劃分最小不純度(min_impurity_decrease)、內部分裂所需最小樣本數(min_samples_split)等參數,使得模型十折交叉驗證的平均性能最好;在進行支持向量機模型訓練的過程中,嘗試使用高斯核函數、多項式核函數等多種核函數,調節懲罰因子 C 和各核函數超參數,找到模型十折交叉驗證平均性能最好時的核函數和對應核函數超參數值;在進行樸素貝葉斯模型訓練時,分別嘗試 BernoulliNB 和 GaussianNB 兩種分類算法,比較十折交叉驗證的平均性能;在進行 logistic 回歸模型訓練的過程中,通過調節正則化函數(penalty)和正則化程度(C)、優化算法(solver)等超參數,獲得十折交叉驗證平均性能最好時的各超參數值;在進行隨機森林模型訓練的過程中,通過調節分裂條件(criterion)、隨機森林里決策樹的數量(n_estimators)、分割節點時考慮的特征的隨機子集的大小(max_features)、決策樹的最大深度(max_depth)分裂所需最小樣本數”(min_samples_split)等,使得模型十折交叉驗證的平均性能最好。保存各模型及對應超參數,并重新用訓練數據集訓練模型,再用測試數據集進行測試,分析各模型的測試結果。
2 結果
2.1 測試模型方法選擇
該數據集中有患者 7 285 例,其中 234 例發生 SSI,SSI 發生率為 3.21%。該數據集中有 12 個變量,統計發現有 125 種感染組合特征。以全部數據集的 80%(n=5 828)作為訓練數據集訓練,20% 數據集(n=1 457)作為測試的結果顯示隨機森林法建模的 ROC_AUC 最大。見圖 1。

a. logistic 回歸模型;b. 樸素貝葉斯模型;c. 決策樹模型;d. 支持向量機模型;e. 隨機森林模型
隨機森林法預測模型的靈敏度為 33.3%,特異度為 78.8%,陽性預測值為 4.5%,陰性預測值為 97.6%,ROC_AUC 為 0.600[OR=1.90,95%CI(1.00,3.57),P=0.06],陽性似然比為 1.572,陰性似然比為 0.846,粗符合率為 77.5%,約登指數為 0.121,kappa 系數為 0.029。其預測結果見表 1。

2.2 數據集優化與模型性能測試
將全數據集的 90% 作為訓練數據,剩余 10% 作為測試數據。采用十折交叉驗證,訓練模型超參數,再用全部訓練數據訓練模型,最后通過測試數據集測試模型泛化性能。模型分析顯示感染風險因素的權重在數據集優化前后發生變化,見表 2。該預測模型的靈敏度為 76.9%,特異度為 59.2%,陽性預測值為 3.3%,陰性預測值為 99.3%,ROC_AUC 為 0.767[OR=4.84,95%CI(1.32,17.74),P=0.02],陽性似然比為 1.886,陰性似然比為 0.390,粗符合率為 59.5%,約登指數為 0.361,kappa 系數為 0.030。見表 3、圖 2。



3 討論
醫院感染監測是醫院感染防控質量改進的基石。傳統的監測屬于勞動密集型工作,調查人員的努力程度決定醫院感染病例發現的數量[14-15],監測質量主要依賴調查人員發現感染病例的敏感性和特異性[16-17]。未來發展將使用電子化監測提升整體監測效果和質量。電子化監測的核心是根據監測數據識別感染病例,而預測模型是計算機識別感染病例的算法。根據是否有專業人員對最終的結果進行判定,電子化監測又分為半自動監測和全自動監測。理想的半自動監測具有很高的陰性預測值(即可靠地排除沒有 HAI 的患者)[18],而理想的自動化監測系統要有高特異性和陽性預測值以避免假陽性[19]。
選擇何種建模方式是本研究前期的重點考量。雖然機器學習的優點是能發現人類無法識別的數據規律,但機器學習中算法的效果與數據集的質量密切相關,不同數據集訓練結果各不相同,現實中難以套用其他數據集訓練模型進行研判。樸素貝葉斯算法、支持向量機、logistic 回歸、決策樹模型等算法都有成果的案例[8-12],但在本研究數據集的效果不佳。樸素貝葉斯算法基于屬性之間相互獨立這一假設,而在感染病例數據中很難保證;支持向量機算法對缺失數據敏感,最終決策函數只由少數的支持向量所確定,而一旦少數的支持向量數據質量不夠,會使模型性能整體下降;logistic 回歸模型本質上是一個線性分類器,用于解決線性可分的分類問題,所以無法處理特征之間相關關系,且要求各特征都是線性的,當遇到非線性特征后,必須經過復雜的轉換,建模難度大且性能受影響,不能很好地處理大量多類特征或變量;決策樹模型對數據量要求很高,且易出現過擬合;而隨機森林模型是由多個決策樹集成的模型,解決了決策樹模型易于過擬合的問題,通過樣本和變量的雙重隨機采樣,解決了決策樹對樣本量需求大和特征選擇不佳的情況,因而隨機森林模型性能整體優于決策樹模型。隨機森林模型可用于解決線性不可分問題,建模時不需要進行特征處理,既可以處理離散型特征又可以處理連續性特征,既可以處理線性特征,又可以處理非線性特征。
雖然隨機森林法的分析結果優于其他算法模型,ROC_AUC 為 0.600,該模型陰性預測值較高,可用于排除非感染病例,但檢驗效度不理想。為解決隨機森林建模中樣本不均衡分布,本研究采用加權法提高少量樣本的懲罰系數,突出感染病例在模型訓練過程中的重要性。經過優化后的隨機森林模型,在采用 90% 全數據集訓練后,經 10% 數據集測試,ROC_AUC 提升到 0.767。在 10% 測試數據集中,預測的 427 例未感染的病例中有 424 例真實未感染,取得了較好的陰性預測效果(陰性預測值 99.3%)。
與傳統預測模型相比,機器學習類似一種“黑箱”方法,其對預測變量的選擇不透明[20]。本研究使用的數據集是按照傳統監測方式采集,并非針對自動化監測而生成,可能未采集到影響預測模型效果的重要變量。此外,本數據集感染病例較少,數據質量相對不足,不足以證明模型泛化能力,限制了其對其他醫療機構數據集的應用。后續仍需增加數據進行模型優化。目前國內大部分三級甲等醫院均已建立醫院信息系統,可采集 SSI 常規監測數據,但因缺乏成熟算法使用數據,大部分監測結果采用人工回顧性分析,效率較低,缺乏時效性。本研究可為 SSI 監測數據的應用提供思路。
綜上,本研究對傳統監測數據集采用機器學習方法,利用隨機森林法建立了可預測結直腸術后 SSI 的模型,初步驗證了該模型具有結直腸手術 SSI 識別能力,但需要更多數據不斷訓練優化提升模型效果,最終實現可實際應用的自動化監測系統。
志謝:感謝美國 Duke 大學醫院抗生素與感染控制中心(Duke Center of Antimicrobial Stewardship and Infection Control)Deverick Anderson 教授提供模型數據集。
手術部位感染(surgical site infection,SSI)是最常見的醫院獲得性感染(healthcare-associated infection,HAI)之一,占所有 HAI 的 30%[1-2]。SSI 造成住院時間長達 10 d,生活質量顯著下降,與 SSI 相關的再入院費用最高可達每次 2.7 萬美元[3]。外科患者的 SSI 發生率在 2%~4%[4-5],而結直腸手術后 SSI 風險可在 15%~30% 不等[6]。監測是醫院感染防控質量改進的基礎。傳統的手工核查醫療記錄監測 SSI 既費時又費力,也會遺漏感染病例。雖然已有多項研究利用切口照片、臨床病歷關鍵詞、醫療保險數據和血液分析結果等非常規監測數據通過機器學習建立預測模型成功診斷、識別 SSI 而實現電子化監測[7-12],但機器學習的成果與訓練數據集密切相關,一方面現實中難以套用其他數據集訓練的模型進行研判,另一方面也難以準備大量非傳統監測數據建立預測模型。現實中最方便利用的數據是傳統監測數據。本研究針對 SSI 風險較高的結直腸手術,利用傳統監測數據,通過機器學習建立適合該數據集的結直腸 SSI 預測模型,用于電子化監測系統識別感染病例,減少傳統監測的不足。
1 資料與方法
1.1 數據來源
本研究采用杜克大學外部感染控制監測網收集的 2015 年 1 月 15 日—2016 年 6 月 16 日的結直腸手術信息,該工作網包含 43 家非教學醫療機構,參加機構按照美國疾病預防控制中心結直腸手術監測標準上報數據,上報時已去除患者個人敏感信息。該數據集特征參見 Ge 等[13]描述。
1.2 數據集變量
本數據集有 12 個變量,包括醫院床位數、醫院年結直腸手術量、患者年齡、患者性別、體質量指數(body mass index,BMI)、糖尿病、手術時間、美國麻醉醫師協會(American Society of Anesthesiologists,ASA)評分、切口類型、風險指數、是否使用腔鏡、是否急診手術。將感染與否作為結果標簽。
1.3 數據集的劃分和使用
遵循分層隨機采樣原則進行數據集劃分,將全部數據集的 80% 作為訓練數據集,20% 作為測試數據集,用于測試模型性能。在訓練模型時,采用十折交叉驗證(使用訓練數據集中的 90% 作為訓練數據,10% 作為驗證數據)確定模型超參數,之后再使用全部訓練數據集訓練模型參數(超參數不變),并通過測試數據集測試模型的預測能力。通過上述數據集劃分方式,對多種模型進行模型訓練、測試后,選定一種預測性能最優的模型。鑒于最優模型在測試數據集上的預測性能仍不夠理想,原因在于訓練數據集數據量不足。為了證明用于訓練模型的數據集增多對本模型性能的影響,進行延伸實驗,重新劃分數據集,采用全部數據集的 90% 作為訓練數據集,10% 作為測試數據集,在訓練過程中依然使用十折交叉驗證訓練模型超參數,再使用全部訓練數據集訓練模型參數,并用測試數據集測試模型性能。
1.4 模型選擇
分別使用決策樹、隨機森林、支持向量機、logistic 回歸、樸素貝葉斯模型等數據分析工具建模,從中篩選最優工具進行建模、訓練和預測。
1.5 模型評價指標
模型預測的感染和非感染例數與實際感染和非感染結果進行四格表比較,計算預測模型的靈敏度、特異度、陽性預測值和陰性預測值,以受試者工作特征(receiver operating characteristic,ROC)曲線的曲線下面積(area under curve,AUC)最大化時的參數作為模型參數,該參數綜合考慮了模型的誤診率和漏診率,值越大,模型的預測性能越接近準確。采用比值比(odds ratio,OR)及其 95% 置信區間(confidence interval,CI)進行檢驗效度判定,檢驗水準 α=0.05。
1.6 模型建立方法
使用 Python 3.7 語言進行機器學習訓練測試。通過調節各分類器參數,訓練各模型超參數使得其對于訓練數據集進行十折交叉驗證的平均性能最好,再使用訓練數據集訓練模型參數,最后通過測試數據集測試各模型的泛化性能,比較各模型測試性能,選擇測試性能最佳的分類模型。為解決本數據集中感染類和未感染類樣本不平衡問題,可以通過過采樣或欠采樣方式平衡樣本數量,也可以通過設置 class_weight 和 sample_weight 為不同類樣本進行加權。在建模過程中,通過實驗為各模型確定解決樣本不平衡的最優方案。
在進行決策樹模型訓練的過程中,通過調節特征選擇標準(criterion)、特征劃分標準(splitter)、決策樹最大深度(max_depth)、節點劃分最小不純度(min_impurity_decrease)、內部分裂所需最小樣本數(min_samples_split)等參數,使得模型十折交叉驗證的平均性能最好;在進行支持向量機模型訓練的過程中,嘗試使用高斯核函數、多項式核函數等多種核函數,調節懲罰因子 C 和各核函數超參數,找到模型十折交叉驗證平均性能最好時的核函數和對應核函數超參數值;在進行樸素貝葉斯模型訓練時,分別嘗試 BernoulliNB 和 GaussianNB 兩種分類算法,比較十折交叉驗證的平均性能;在進行 logistic 回歸模型訓練的過程中,通過調節正則化函數(penalty)和正則化程度(C)、優化算法(solver)等超參數,獲得十折交叉驗證平均性能最好時的各超參數值;在進行隨機森林模型訓練的過程中,通過調節分裂條件(criterion)、隨機森林里決策樹的數量(n_estimators)、分割節點時考慮的特征的隨機子集的大小(max_features)、決策樹的最大深度(max_depth)分裂所需最小樣本數”(min_samples_split)等,使得模型十折交叉驗證的平均性能最好。保存各模型及對應超參數,并重新用訓練數據集訓練模型,再用測試數據集進行測試,分析各模型的測試結果。
2 結果
2.1 測試模型方法選擇
該數據集中有患者 7 285 例,其中 234 例發生 SSI,SSI 發生率為 3.21%。該數據集中有 12 個變量,統計發現有 125 種感染組合特征。以全部數據集的 80%(n=5 828)作為訓練數據集訓練,20% 數據集(n=1 457)作為測試的結果顯示隨機森林法建模的 ROC_AUC 最大。見圖 1。

a. logistic 回歸模型;b. 樸素貝葉斯模型;c. 決策樹模型;d. 支持向量機模型;e. 隨機森林模型
隨機森林法預測模型的靈敏度為 33.3%,特異度為 78.8%,陽性預測值為 4.5%,陰性預測值為 97.6%,ROC_AUC 為 0.600[OR=1.90,95%CI(1.00,3.57),P=0.06],陽性似然比為 1.572,陰性似然比為 0.846,粗符合率為 77.5%,約登指數為 0.121,kappa 系數為 0.029。其預測結果見表 1。

2.2 數據集優化與模型性能測試
將全數據集的 90% 作為訓練數據,剩余 10% 作為測試數據。采用十折交叉驗證,訓練模型超參數,再用全部訓練數據訓練模型,最后通過測試數據集測試模型泛化性能。模型分析顯示感染風險因素的權重在數據集優化前后發生變化,見表 2。該預測模型的靈敏度為 76.9%,特異度為 59.2%,陽性預測值為 3.3%,陰性預測值為 99.3%,ROC_AUC 為 0.767[OR=4.84,95%CI(1.32,17.74),P=0.02],陽性似然比為 1.886,陰性似然比為 0.390,粗符合率為 59.5%,約登指數為 0.361,kappa 系數為 0.030。見表 3、圖 2。



3 討論
醫院感染監測是醫院感染防控質量改進的基石。傳統的監測屬于勞動密集型工作,調查人員的努力程度決定醫院感染病例發現的數量[14-15],監測質量主要依賴調查人員發現感染病例的敏感性和特異性[16-17]。未來發展將使用電子化監測提升整體監測效果和質量。電子化監測的核心是根據監測數據識別感染病例,而預測模型是計算機識別感染病例的算法。根據是否有專業人員對最終的結果進行判定,電子化監測又分為半自動監測和全自動監測。理想的半自動監測具有很高的陰性預測值(即可靠地排除沒有 HAI 的患者)[18],而理想的自動化監測系統要有高特異性和陽性預測值以避免假陽性[19]。
選擇何種建模方式是本研究前期的重點考量。雖然機器學習的優點是能發現人類無法識別的數據規律,但機器學習中算法的效果與數據集的質量密切相關,不同數據集訓練結果各不相同,現實中難以套用其他數據集訓練模型進行研判。樸素貝葉斯算法、支持向量機、logistic 回歸、決策樹模型等算法都有成果的案例[8-12],但在本研究數據集的效果不佳。樸素貝葉斯算法基于屬性之間相互獨立這一假設,而在感染病例數據中很難保證;支持向量機算法對缺失數據敏感,最終決策函數只由少數的支持向量所確定,而一旦少數的支持向量數據質量不夠,會使模型性能整體下降;logistic 回歸模型本質上是一個線性分類器,用于解決線性可分的分類問題,所以無法處理特征之間相關關系,且要求各特征都是線性的,當遇到非線性特征后,必須經過復雜的轉換,建模難度大且性能受影響,不能很好地處理大量多類特征或變量;決策樹模型對數據量要求很高,且易出現過擬合;而隨機森林模型是由多個決策樹集成的模型,解決了決策樹模型易于過擬合的問題,通過樣本和變量的雙重隨機采樣,解決了決策樹對樣本量需求大和特征選擇不佳的情況,因而隨機森林模型性能整體優于決策樹模型。隨機森林模型可用于解決線性不可分問題,建模時不需要進行特征處理,既可以處理離散型特征又可以處理連續性特征,既可以處理線性特征,又可以處理非線性特征。
雖然隨機森林法的分析結果優于其他算法模型,ROC_AUC 為 0.600,該模型陰性預測值較高,可用于排除非感染病例,但檢驗效度不理想。為解決隨機森林建模中樣本不均衡分布,本研究采用加權法提高少量樣本的懲罰系數,突出感染病例在模型訓練過程中的重要性。經過優化后的隨機森林模型,在采用 90% 全數據集訓練后,經 10% 數據集測試,ROC_AUC 提升到 0.767。在 10% 測試數據集中,預測的 427 例未感染的病例中有 424 例真實未感染,取得了較好的陰性預測效果(陰性預測值 99.3%)。
與傳統預測模型相比,機器學習類似一種“黑箱”方法,其對預測變量的選擇不透明[20]。本研究使用的數據集是按照傳統監測方式采集,并非針對自動化監測而生成,可能未采集到影響預測模型效果的重要變量。此外,本數據集感染病例較少,數據質量相對不足,不足以證明模型泛化能力,限制了其對其他醫療機構數據集的應用。后續仍需增加數據進行模型優化。目前國內大部分三級甲等醫院均已建立醫院信息系統,可采集 SSI 常規監測數據,但因缺乏成熟算法使用數據,大部分監測結果采用人工回顧性分析,效率較低,缺乏時效性。本研究可為 SSI 監測數據的應用提供思路。
綜上,本研究對傳統監測數據集采用機器學習方法,利用隨機森林法建立了可預測結直腸術后 SSI 的模型,初步驗證了該模型具有結直腸手術 SSI 識別能力,但需要更多數據不斷訓練優化提升模型效果,最終實現可實際應用的自動化監測系統。
志謝:感謝美國 Duke 大學醫院抗生素與感染控制中心(Duke Center of Antimicrobial Stewardship and Infection Control)Deverick Anderson 教授提供模型數據集。