引用本文: 徐铖斌, 徐平, 葛茂军, 刘晓庆. 基于机器学习的结直肠手术部位感染预测模型建立. 华西医学, 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 教授提供模型数据集。