急性呼吸窘迫综合征(ARDS)是一种严重威胁人类生命健康的疾病,具有起病急、病死率高等特点。目前这种疾病的主要诊断和疾病严重程度分级标准依赖于血气分析结果,从而计算患者的氧合指数(PaO2/FiO2,P/F),但是血气分析是有创操作,且不能连续监测病情的发展。针对以上问题,我们提出了一种新的 ARDS 疾病严重程度的辨识算法。基于患者的多种无创生理参数,结合特征选择技术,对多种生理参数进行重要性排序。利用交叉验证技术评估辨识性能,比较不同特征子集下,使用神经网络、逻辑回归、AdaBoost、Bagging 四种监督学习算法的分类结果。通过不同特征子集下不同算法的敏感性、特异性、准确率、曲线下面积(AUC)来综合选择最优的特征子集和分类算法。我们利用四种监督学习算法,对 ARDS 严重程度进行区分(P/F ≤ 300)。根据 AUC 来评估算法性能,AdaBoost 在使用 20 个特征时,AUC = 0.832 1,准确率为 74.82%,取得了最优的 AUC。根据特征个数来评估算法性能,Bagging 在使用 2 个特征时,AUC = 0.819 4,准确率为 73.01%。该方法相较于传统方法有较大的优势,能够连续监测 ARDS 患者的病情发展,为医务人员提供辅助诊断建议。
引用本文: 杨鹏程, 陈锋, 张广, 余明, 吕蒙, 王春晨, 王春飞, 吴太虎. 基于无创参数辨识急性呼吸窘迫综合征患者疾病严重程度的算法研究. 生物医学工程学杂志, 2019, 36(3): 435-443. doi: 10.7507/1001-5515.201801081 复制
引言
急性呼吸窘迫综合征(acute respiratory distress syndrome,ARDS)是一种严重威胁人类生命健康的临床综合征,主要表现为各种肺内和肺外致病因素所导致的急性弥漫性肺损伤和进而发展的急性呼吸衰竭[1]。引起 ARDS 的原因和危险因素众多,这些因素常常相互重叠,从而导致该病的病死率很高。根据相关流行病学调查研究显示,ARDS 的院内死亡率高达 50% 左右[2–4]。目前,对于 ARDS 疾病的诊断主要依据 2012 年的柏林定义,将氧合指数[动脉血氧分压(PaO2)/吸入氧浓度(FiO2),P/F 值] ≤ 300 作为诊断 ARDS 的标准,同时根据 P/F 值将 ARDS 区分为轻度(200 < P/F ≤ 300)、中度(100 < P/F ≤ 200)、重度 ARDS(P/F ≤ 100)[5]。但是就目前使用血气分析测量 PaO2 从而计算 P/F 值来评估 ARDS 严重程度来看,还存在一些缺陷[6]。首先,P/F 值的计算需要进行血气分析,目前血气分析采用的动脉留置导管日常护理工作较为困难;其次,对于一些特殊患者如新生儿、贫血患者、老年患者等,动脉采血并不容易操作[7];最后,动脉血气分析不是实时监测结果,不能及时反映患者的病情发展,由于缺乏 P/F 结果,不能及时准确地诊断 ARDS,从而使医生无法采取合适的治疗策略,延误患者的诊断和治疗[8]。
近年来,有研究人员针对血气分析存在的诸多问题,探索使用无创参数血氧饱和度(SpO2)/FiO2(S/F)来估测 P/F,从而实现 ARDS 疾病的辨识[9–11]。但是现阶段的研究主要使用 SpO2 单一参数,利用传统的线性回归算法,且对 SpO2 有较多的限制,使得这些方法很难在临床中为医务人员提供准确的指导。而有研究显示,对于 ARDS 患者,其 P/F 发生改变的过程中,患者的多个生理参数如心率、血压、呼吸频率等都会发生不同程度的改变,这为我们的课题提供了思路[12]。
针对以上问题,本研究建立了一种基于多种无创生理参数辨识 ARDS 的算法模型。本模型利用特征选择算法,结合交叉验证技术评估神经网络、逻辑回归、Bagging、AdaBoost 四种算法在不同特征子集下的辨识效果,结合多种评价指标,比较不同算法与特征子集的组合辨识 ARDS 的能力。
1 数据来源
1.1 数据库介绍
MIMIC-III(Medical Information Mart for Intensive Care)是由麻省理工学院和贝斯以色列女执事医疗中心(Beth Israel Deaconess Medical Center,BIDMC)共同开发的一个大型的单中心重症监护医学信息数据库,目前可免费申请使用[13]。截至目前,数据库中包含了 2001 年至 2012 年期间 BIDMC 重症监护病房的 46 476 名患者的相关诊疗信息。
1.2 患者入组条件
本文研究的对象是成年 ARDS 患者。在 MIMIC-III 数据库中,患者的所有疾病诊断信息与 ICD9 编码相对应,疾病诊断表中只有部分患者标注为 ARDS,结合 ICD9 编码选择了疾病为急性肺损伤(acute lung injury,ALI)的患者。为了保证入组患者疾病诊断的准确性,本研究结合 2012 年的 ARDS 柏林诊断标准,对患者进行进一步的核查,制定了相应的患者入组标准:① 患者年龄大于 16 周岁;② 在 ICU 停留时间超过 48 h:如果停留时间太短,这部分患者的病情很难判断,也会对整体数据造成不必要的干扰;③ 只选择第一次进入 ICU 的患者的数据:如果一个患者多次进入 ICU,则有可能是患者病情较为复杂,有可能会对实验结果造成影响,所以在本文中,只使用每个患者第一次进入 ICU 的数据;④ 在 ICU 期间进行过胸部影像学检查;⑤ 在 ICU 期间进行了机械通气的患者:包括有创通气和无创通气患者;⑥ 第一天出现过 P/F 小于 300 的情况:第一天的 P/F 最小值小于 300 就认为符合条件。图 1 所示为筛选患者的流程图,详细记录了数据筛选的过程,最终入组患者人数为 2 952 人,对应的观测值为 75 293 个。
1.3 患者生理参数提取
针对本文的研究目的,我们提取了患者 5 个部分的相关数据:人口统计学信息、临床基本信息、床旁监护数据、呼吸机相关参数数据、血气分析数据。其中人口统计学信息包括:年龄、性别、身高、体重、种族;临床基本信息包括:患者在院内是否死亡、ICU 类型、ICU 停留时间;床旁监护数据包括:心率、SpO2、体温、无创血压收缩压(noninvasive systolic blood pressure,NBPS)、无创舒张压(noninvasive diastolic blood pressure,NBPD)、无创平均压(noninvasive mean blood pressure,NBPM)、有创血压(收缩压、舒张压、平均压);呼吸机相关参数数据包括:呼吸频率、FiO2、潮气量(tidal volume,TV)、分钟通气量(minute ventilation,MV)、呼气末正压(positive end-expiratory pressure,PEEP)、吸气峰压(peak inspiratory pressure,PIP)、气道平台压(airway plateau pressure,PLAP)、平均气道压(mean airway pressure,MAP);血气分析数据包括:PaO2、pH、动脉血氧饱和度(SaO2)。
在进行 ARDS 无创辨识算法设计的过程中,并没有用到以上全部参数,只使用了以下参数:年龄、性别、身体质量指数(body mass index,BMI)、种族、心率、SpO2、体温、NBPS、NBPD、NBPM、呼吸频率、FiO2、TV、MV、PEEP、PIP、PLAP、MAP,以及三个衍生参数 S/F、OSI((MAP × FiO2 × 100)/SpO2)、TV/kg,其中 P/F 作为结局变量。
2 实验方法
2.1 数据预处理
由于 MIMIC-III 数据库中对于不同生理参数采样频率不同,即使在匹配数据的过程中调整了无创生理参数的时间范围或是由于患者的特殊病情,仍然造成部分生理参数不同程度的缺失。在数据提取的过程中,在血气分析的时间点,我们允许一定的时间误差来提取数据,但是对提取数据进行简单的分析,仍然发现了部分生理参数存在大比例的缺失。通过对缺失情况进行汇总,无创血压、PLAP 有较大比例缺失,如果对所有缺失数据都进行直接删除的操作,只能保留 11 378 个观测点,也就是原数据集 14.16% 的信息量,这将直接影响后续的模型建立。
基于此,选择了两种数据缺失处理的方法:多重插补法[14]、直接删除法。研究单个变量之间的相关性程度,对无创血压(NBPS、NBPD、NBPM)、PLAP、PEEP、PIP、MAP 参数采用多重插补法进行插补;对于 TV、体温、体重这三个参数由于其在数据集中与其他变量的相关性不明显,无法使用多重插补法进行插值,如果用均值或者其他方法来补全,反而会引入噪声,再对其缺失比例进行研究,发现其缺失并不严重,鉴于此使用删除法直接删除这些缺失数据。
在进行模型训练之前,对数据进行归一化处理是十分必要的。对数据进行归一化处理可以提高绝大部分有监督学习算法的最优解收敛速度,同时能够提高算法的精度。线性归一化方法不会改变特征值原有的数据分布,完整地保留了数据原有的信息,适用于数值比较集中的情况,而本文中的大部分生理参数都是集中在某一特定范围。
2.2 特征值选择
在数据提取过程中,我们收集了尽可能多的患者基本信息和无创生理参数,但是并不能确定哪些参数对于 ARDS 疾病的辨识有较强相关性,另一方面监督学习算法的性能与输入特征值的数量以及特征值与结局变量的相关性有很大的关系,因此需要进行特征值选择,其目的是与原始特征集相比找到输入特征值的最佳特征子集。特征值选择方法可以分为过滤法(Filter)和封装法(Wrapper)两大类,本文采用 Filter 方法,即独立于后续采用的监督学习算法,可以较快地排除非关键的噪声特征,为现有特征值的重要性进行评分[15]。本文使用两种方法综合评估特征值重要性:皮尔逊相关系数(Pearson correlation coefficient,PCC)、基于随机森林(Random Forest,RF)的特征值评分。之后综合两者的特征值重要性评分,对现有特征值进行重要性排序,逐步研究不同特征值子集的辨识效果。
PCC[16]是反映两个变量之间的线性相关程度的指标,取值范围为[-1,1]。使用 PCC 研究每个特征值(x(j))与 P/F 值(y)之间的线性相关性,PCC 的具体定义如公式(1)所示:
我们对 PCC 取绝对值,便于后续的比较和特征值选择。
RF 是一种集成机器学习方法,利用随机重采样技术和节点随机分裂技术构建多棵随机树,通过投票得到最终分类结果,其次 RF 的变量重要性可以作为高维数据的特征选择工具。
PCC 重点关注的是特征值与结局变量之间的线性关系,而 RF 的特征选择过程更倾向于二者的非线性关系,综合两者的特征选择结果,以此来对特征值重要性进行排序,能更加真实地反映特征值与结局变量之间的关系,克服了单一选择算法造成的偏差[15]。
2.3 辨识算法及性能评估方法
2.3.1 辨识算法
本算法设计将特征值选择与多种机器学习算法相结合,在不同特征值子集下,利用交叉验证方法,训练不同机器学习算法,评估各算法在不同特征子集下的辨识性能,从中选择不同特征值子集与不同机器学习算法的最优组合来辨识患者的 ARDS 严重程度。
前文中,根据特征值的重要性对 21 个特征值进行排序,针对特征值的排序结果,将重要性从大到小逐步添加到训练集数据中去。如图 2 所示,展示了算法设计示意图,利用十折交叉验证来比较神经网络、逻辑回归、Bagging、AdaBoost 四种机器学习算法的效果。将数据集随机分成互斥的 10 等份,选择其中 9 份作为训练集,用于训练 4 种算法,留出 1 份作为验证集,用于验证模型效果,这个过程重复 10 次,每次都有一个不同的块作为验证集,直到每一份都被用作验证集时结束十折交叉验证过程。在每一折的模型训练过程中,都会存储验证集上的性能指标结果,我们汇总了这 10 次迭代的性能指标结果,得出每个算法的平均准确率等信息,作为当前特征子集下的算法效果。由于有 21 个特征值,会有 21 个特征值子集,每一个子集进行一次十折交叉验证,最终汇总 21 个特征子集对应的四种算法的性能评价指标,从中选择最优的特征子集和算法。
2.3.2 评价指标
按照 ARDS 疾病的诊断标准,P/F 值≤ 300 为 ARDS,将样本分为阳性和阴性结果,表 1 描述了真实类别与辨识类别之间的关系。
具体的性能评价指标包括灵敏度(sensitivity,SEN)、特异性(specificity,SPE)、阴性预测值(negative predictive value,NPV)、阳性预测值(positive predictive value,PPV)、准确率(accuracy,ACC)、受试者工作特征(receiver operating characteristic)曲线及曲线下面积(area under curve,AUC),用以上多种指标综合评估辨识算法模型整体效果,具体公式如下:
3 实验结果
MIMIC-III 数据库中共记录了 46 476 名患者的 61 533 次 ICU 就诊记录,根据本课题研究目的制定的入组条件,最终本课题选择了 2 952 名患者的 75 293 个观测值作为数据集。表 2 统计了所有入组患者的基本情况。表 3 反映了阳性样本(P/F ≤ 300)、阴性样本(P/F > 300)以及整体样本的数据分布情况,利用 Wilcoxon 秩和检验来比较阳性样本与阴性样本之间的差异。可以看出,各参数阳性样本和阴性样本之间存在显著差异,但是这里只能说明选择的这些参数与结局变量存在一定的相关性,具体关系还需采用算法进行进一步的验证。
3.1 特征值选择结果
辨识算法中具体使用到的特征值为:年龄、性别、种族、BMI、SpO2、心率、体温、NBPS、NBPD、NBPM、呼吸频率、FiO2、PEEP、MV、TV、PIP、PLAP、MAP、S/F、OSI、TV/kg,使用特征值选择方法为每个特征值重要性进行评分。图 3 上图显示的是使用 PCC 和 RF 算法评估各特征值与结局变量之间的相关性的归一化结果,其重要性评分越接近 1,说明特征值与结局变量的相关性越大,在后续的模型训练中也越重要。从图中也可以看出,这两种方法对于特征值的选择过程基本顺序是一致的,但是也存在一些差异。从 PCC 中我们可以看到,大部分特征值与结局变量都有很好的相关性,除了 TV 和患者的种族信息;对于 RF 算法来说,仅 S/F、SpO2、FiO2、OSI、PEEP、MAP 这 6 个特征值有较高的分数,其余的特征值重要性评分均小于 0.05。其中两种方法评分均较高的参数基本都与 SpO2 有关,可以看出,SpO2 与结局变量 P/F 有明显的相关性。在这里我们将两种方法的重要性评分求均值,并对评分从放大到小排序,得到图 3 下图,为综合两种特征值选择方法后的特征值重要性排序结果。综合考虑特征值与结局变量的线性关系和非线性关系,使得特征值重要性排序更加均衡稳定。
3.2 辨识算法结果
利用特征值排序的结果,将特征值逐次添加到交叉验证模型中,用于训练 4 种算法,并把每一个特征子集在不同算法中的结果存储起来,进行比较分析。如图 4 所示,为 4 种有监督学习算法逐次添加特征值的辨识效果的变化过程,针对每种算法选择了 4 种性能指标(ACC、SEN、SPE、AUC)来评估性能,利用注释箭头“BEST”标注了准确率最大值的位置。通过神经网络使用不同特征子集训练的结果,可以看出,在前 12 个特征子集中,神经网络算法的准确率在逐步提高,但是上升过程中伴随明显的波动,在第 19 个特征值子集处达到最佳;通过 Bagging 使用不同特征子集训练的结果,发现集成学习算法 Bagging 在第 2 个特征子集达到最大准确率后,准确率和 AUC 值都在逐步下降,其敏感性下降更为明显;对于逻辑回归和 AdaBoost 两种算法来说,AdaBoost 的准确率要略优于逻辑回归,但是两个算法对于特征值子集的变化并不敏感。
通过图 4 能大体上观察不同算法、不同特征子集的结果变化趋势,但是无法准确地比较各种组合的优劣。在此基础上,我们对每种算法对应的最优特征子集进行训练,利用交叉验证评估不同特征子集和算法的辨识效果。表 4 中,对每种算法使用十折交叉验证,对 10 次结果求平均值作为评价算法效果的最终训练结果。图 5 绘制了每种算法的 ROC 曲线。可以看出 AdaBoost 算法使用了 20 个特征值,其辨识准确率为 74.82%(AUC = 0.832 1),较其他三种方法略有优势;Bagging 算法只使用 2 个特征值,其准确率也达到了 73.01%(AUC = 0.819 4)。
4 讨论
过去的研究主要集中在利用 S/F 值来预测 P/F 值,从而实现利用无创参数 SpO2 来辨识 ARDS 患者,且大部分的研究都是针对患者在 SpO2<97% 进行的,即限定了使用的范围。本文首次利用多种生理参数来预测 ARDS 患者的严重程度分级,综合考虑患者的多种无创生理参数,如心率、无创血压、呼吸频率、呼吸机相关参数以及患者个人基本信息等,利用机器学习算法实现对 ARDS 的辨识,没有对患者的 SpO2 进行限制,综合考虑了患者的呼吸状况,能够更加全面地评估患者的情况。
本文比较了神经网络、逻辑回归、AdaBoost、Bagging 四种算法对 21 个特征值的敏感程度,利用特征值选择方法,选择了四种算法对应的最优特征子集。通过表 4 我们可以看出,利用准确率和 AUC 值来评估算法的性能,AdaBoost 算法要优于其他三种算法,其准确率为 74.82%(AUC = 0.832 1);但是从特征值选择来考虑,Bagging 只使用了 2 个特征值(S/F、SpO2),其准确率就达到 73.01%(AUC = 0.819 4),这样看来 Bagging 算法也有自身的优势,可以用很少的信息量获取不错的效果。通过特征值排序以及特征值逐步代入,可以获得无创生理参数与 ARDS 的相关性,为后续的相关研究提供建议。通过模型验证可以发现,患者的年龄、种族、TV 与辨识 ARDS 严重程度的相关性较低。
由于使用的是临床信息数据库,在数据获取方面会存在一些不足。就 MIMIC-III 数据库而言,并没有专家对 ARDS 做标定,只能通过临床中的诊断标准,自己定义患者入组标准,但是这样选择的患者并不一定是 ARDS 患者,有可能混入其他疾病的患者;另一方面,在通过数据库提取生理参数的过程中,由于不能准确地按照血气分析中 PaO2 的记录时间来匹配其他生理参数,所以我们允许一定的时间误差,以保证有足够的数据,但是也造成了一定的数据噪声,可能会影响算法的辨识效果;数据库中的数据有可能因为人为因素造成数据录入错误,但是这些数据又在正常的范围,这样在异常值处理时也无法排除,造成误差。
本文采集了患者多种无创生理参数,利用机器学习算法,实时不间断地监控 ARDS 患者的病情发展,可以为临床医生提供辅助诊断决策。下一步,为解决数据来源的准确性,我们希望利用本实验结果,开展相关的临床试验,从而验证本模型的效果。
引言
急性呼吸窘迫综合征(acute respiratory distress syndrome,ARDS)是一种严重威胁人类生命健康的临床综合征,主要表现为各种肺内和肺外致病因素所导致的急性弥漫性肺损伤和进而发展的急性呼吸衰竭[1]。引起 ARDS 的原因和危险因素众多,这些因素常常相互重叠,从而导致该病的病死率很高。根据相关流行病学调查研究显示,ARDS 的院内死亡率高达 50% 左右[2–4]。目前,对于 ARDS 疾病的诊断主要依据 2012 年的柏林定义,将氧合指数[动脉血氧分压(PaO2)/吸入氧浓度(FiO2),P/F 值] ≤ 300 作为诊断 ARDS 的标准,同时根据 P/F 值将 ARDS 区分为轻度(200 < P/F ≤ 300)、中度(100 < P/F ≤ 200)、重度 ARDS(P/F ≤ 100)[5]。但是就目前使用血气分析测量 PaO2 从而计算 P/F 值来评估 ARDS 严重程度来看,还存在一些缺陷[6]。首先,P/F 值的计算需要进行血气分析,目前血气分析采用的动脉留置导管日常护理工作较为困难;其次,对于一些特殊患者如新生儿、贫血患者、老年患者等,动脉采血并不容易操作[7];最后,动脉血气分析不是实时监测结果,不能及时反映患者的病情发展,由于缺乏 P/F 结果,不能及时准确地诊断 ARDS,从而使医生无法采取合适的治疗策略,延误患者的诊断和治疗[8]。
近年来,有研究人员针对血气分析存在的诸多问题,探索使用无创参数血氧饱和度(SpO2)/FiO2(S/F)来估测 P/F,从而实现 ARDS 疾病的辨识[9–11]。但是现阶段的研究主要使用 SpO2 单一参数,利用传统的线性回归算法,且对 SpO2 有较多的限制,使得这些方法很难在临床中为医务人员提供准确的指导。而有研究显示,对于 ARDS 患者,其 P/F 发生改变的过程中,患者的多个生理参数如心率、血压、呼吸频率等都会发生不同程度的改变,这为我们的课题提供了思路[12]。
针对以上问题,本研究建立了一种基于多种无创生理参数辨识 ARDS 的算法模型。本模型利用特征选择算法,结合交叉验证技术评估神经网络、逻辑回归、Bagging、AdaBoost 四种算法在不同特征子集下的辨识效果,结合多种评价指标,比较不同算法与特征子集的组合辨识 ARDS 的能力。
1 数据来源
1.1 数据库介绍
MIMIC-III(Medical Information Mart for Intensive Care)是由麻省理工学院和贝斯以色列女执事医疗中心(Beth Israel Deaconess Medical Center,BIDMC)共同开发的一个大型的单中心重症监护医学信息数据库,目前可免费申请使用[13]。截至目前,数据库中包含了 2001 年至 2012 年期间 BIDMC 重症监护病房的 46 476 名患者的相关诊疗信息。
1.2 患者入组条件
本文研究的对象是成年 ARDS 患者。在 MIMIC-III 数据库中,患者的所有疾病诊断信息与 ICD9 编码相对应,疾病诊断表中只有部分患者标注为 ARDS,结合 ICD9 编码选择了疾病为急性肺损伤(acute lung injury,ALI)的患者。为了保证入组患者疾病诊断的准确性,本研究结合 2012 年的 ARDS 柏林诊断标准,对患者进行进一步的核查,制定了相应的患者入组标准:① 患者年龄大于 16 周岁;② 在 ICU 停留时间超过 48 h:如果停留时间太短,这部分患者的病情很难判断,也会对整体数据造成不必要的干扰;③ 只选择第一次进入 ICU 的患者的数据:如果一个患者多次进入 ICU,则有可能是患者病情较为复杂,有可能会对实验结果造成影响,所以在本文中,只使用每个患者第一次进入 ICU 的数据;④ 在 ICU 期间进行过胸部影像学检查;⑤ 在 ICU 期间进行了机械通气的患者:包括有创通气和无创通气患者;⑥ 第一天出现过 P/F 小于 300 的情况:第一天的 P/F 最小值小于 300 就认为符合条件。图 1 所示为筛选患者的流程图,详细记录了数据筛选的过程,最终入组患者人数为 2 952 人,对应的观测值为 75 293 个。
1.3 患者生理参数提取
针对本文的研究目的,我们提取了患者 5 个部分的相关数据:人口统计学信息、临床基本信息、床旁监护数据、呼吸机相关参数数据、血气分析数据。其中人口统计学信息包括:年龄、性别、身高、体重、种族;临床基本信息包括:患者在院内是否死亡、ICU 类型、ICU 停留时间;床旁监护数据包括:心率、SpO2、体温、无创血压收缩压(noninvasive systolic blood pressure,NBPS)、无创舒张压(noninvasive diastolic blood pressure,NBPD)、无创平均压(noninvasive mean blood pressure,NBPM)、有创血压(收缩压、舒张压、平均压);呼吸机相关参数数据包括:呼吸频率、FiO2、潮气量(tidal volume,TV)、分钟通气量(minute ventilation,MV)、呼气末正压(positive end-expiratory pressure,PEEP)、吸气峰压(peak inspiratory pressure,PIP)、气道平台压(airway plateau pressure,PLAP)、平均气道压(mean airway pressure,MAP);血气分析数据包括:PaO2、pH、动脉血氧饱和度(SaO2)。
在进行 ARDS 无创辨识算法设计的过程中,并没有用到以上全部参数,只使用了以下参数:年龄、性别、身体质量指数(body mass index,BMI)、种族、心率、SpO2、体温、NBPS、NBPD、NBPM、呼吸频率、FiO2、TV、MV、PEEP、PIP、PLAP、MAP,以及三个衍生参数 S/F、OSI((MAP × FiO2 × 100)/SpO2)、TV/kg,其中 P/F 作为结局变量。
2 实验方法
2.1 数据预处理
由于 MIMIC-III 数据库中对于不同生理参数采样频率不同,即使在匹配数据的过程中调整了无创生理参数的时间范围或是由于患者的特殊病情,仍然造成部分生理参数不同程度的缺失。在数据提取的过程中,在血气分析的时间点,我们允许一定的时间误差来提取数据,但是对提取数据进行简单的分析,仍然发现了部分生理参数存在大比例的缺失。通过对缺失情况进行汇总,无创血压、PLAP 有较大比例缺失,如果对所有缺失数据都进行直接删除的操作,只能保留 11 378 个观测点,也就是原数据集 14.16% 的信息量,这将直接影响后续的模型建立。
基于此,选择了两种数据缺失处理的方法:多重插补法[14]、直接删除法。研究单个变量之间的相关性程度,对无创血压(NBPS、NBPD、NBPM)、PLAP、PEEP、PIP、MAP 参数采用多重插补法进行插补;对于 TV、体温、体重这三个参数由于其在数据集中与其他变量的相关性不明显,无法使用多重插补法进行插值,如果用均值或者其他方法来补全,反而会引入噪声,再对其缺失比例进行研究,发现其缺失并不严重,鉴于此使用删除法直接删除这些缺失数据。
在进行模型训练之前,对数据进行归一化处理是十分必要的。对数据进行归一化处理可以提高绝大部分有监督学习算法的最优解收敛速度,同时能够提高算法的精度。线性归一化方法不会改变特征值原有的数据分布,完整地保留了数据原有的信息,适用于数值比较集中的情况,而本文中的大部分生理参数都是集中在某一特定范围。
2.2 特征值选择
在数据提取过程中,我们收集了尽可能多的患者基本信息和无创生理参数,但是并不能确定哪些参数对于 ARDS 疾病的辨识有较强相关性,另一方面监督学习算法的性能与输入特征值的数量以及特征值与结局变量的相关性有很大的关系,因此需要进行特征值选择,其目的是与原始特征集相比找到输入特征值的最佳特征子集。特征值选择方法可以分为过滤法(Filter)和封装法(Wrapper)两大类,本文采用 Filter 方法,即独立于后续采用的监督学习算法,可以较快地排除非关键的噪声特征,为现有特征值的重要性进行评分[15]。本文使用两种方法综合评估特征值重要性:皮尔逊相关系数(Pearson correlation coefficient,PCC)、基于随机森林(Random Forest,RF)的特征值评分。之后综合两者的特征值重要性评分,对现有特征值进行重要性排序,逐步研究不同特征值子集的辨识效果。
PCC[16]是反映两个变量之间的线性相关程度的指标,取值范围为[-1,1]。使用 PCC 研究每个特征值(x(j))与 P/F 值(y)之间的线性相关性,PCC 的具体定义如公式(1)所示:
我们对 PCC 取绝对值,便于后续的比较和特征值选择。
RF 是一种集成机器学习方法,利用随机重采样技术和节点随机分裂技术构建多棵随机树,通过投票得到最终分类结果,其次 RF 的变量重要性可以作为高维数据的特征选择工具。
PCC 重点关注的是特征值与结局变量之间的线性关系,而 RF 的特征选择过程更倾向于二者的非线性关系,综合两者的特征选择结果,以此来对特征值重要性进行排序,能更加真实地反映特征值与结局变量之间的关系,克服了单一选择算法造成的偏差[15]。
2.3 辨识算法及性能评估方法
2.3.1 辨识算法
本算法设计将特征值选择与多种机器学习算法相结合,在不同特征值子集下,利用交叉验证方法,训练不同机器学习算法,评估各算法在不同特征子集下的辨识性能,从中选择不同特征值子集与不同机器学习算法的最优组合来辨识患者的 ARDS 严重程度。
前文中,根据特征值的重要性对 21 个特征值进行排序,针对特征值的排序结果,将重要性从大到小逐步添加到训练集数据中去。如图 2 所示,展示了算法设计示意图,利用十折交叉验证来比较神经网络、逻辑回归、Bagging、AdaBoost 四种机器学习算法的效果。将数据集随机分成互斥的 10 等份,选择其中 9 份作为训练集,用于训练 4 种算法,留出 1 份作为验证集,用于验证模型效果,这个过程重复 10 次,每次都有一个不同的块作为验证集,直到每一份都被用作验证集时结束十折交叉验证过程。在每一折的模型训练过程中,都会存储验证集上的性能指标结果,我们汇总了这 10 次迭代的性能指标结果,得出每个算法的平均准确率等信息,作为当前特征子集下的算法效果。由于有 21 个特征值,会有 21 个特征值子集,每一个子集进行一次十折交叉验证,最终汇总 21 个特征子集对应的四种算法的性能评价指标,从中选择最优的特征子集和算法。
2.3.2 评价指标
按照 ARDS 疾病的诊断标准,P/F 值≤ 300 为 ARDS,将样本分为阳性和阴性结果,表 1 描述了真实类别与辨识类别之间的关系。
具体的性能评价指标包括灵敏度(sensitivity,SEN)、特异性(specificity,SPE)、阴性预测值(negative predictive value,NPV)、阳性预测值(positive predictive value,PPV)、准确率(accuracy,ACC)、受试者工作特征(receiver operating characteristic)曲线及曲线下面积(area under curve,AUC),用以上多种指标综合评估辨识算法模型整体效果,具体公式如下:
3 实验结果
MIMIC-III 数据库中共记录了 46 476 名患者的 61 533 次 ICU 就诊记录,根据本课题研究目的制定的入组条件,最终本课题选择了 2 952 名患者的 75 293 个观测值作为数据集。表 2 统计了所有入组患者的基本情况。表 3 反映了阳性样本(P/F ≤ 300)、阴性样本(P/F > 300)以及整体样本的数据分布情况,利用 Wilcoxon 秩和检验来比较阳性样本与阴性样本之间的差异。可以看出,各参数阳性样本和阴性样本之间存在显著差异,但是这里只能说明选择的这些参数与结局变量存在一定的相关性,具体关系还需采用算法进行进一步的验证。
3.1 特征值选择结果
辨识算法中具体使用到的特征值为:年龄、性别、种族、BMI、SpO2、心率、体温、NBPS、NBPD、NBPM、呼吸频率、FiO2、PEEP、MV、TV、PIP、PLAP、MAP、S/F、OSI、TV/kg,使用特征值选择方法为每个特征值重要性进行评分。图 3 上图显示的是使用 PCC 和 RF 算法评估各特征值与结局变量之间的相关性的归一化结果,其重要性评分越接近 1,说明特征值与结局变量的相关性越大,在后续的模型训练中也越重要。从图中也可以看出,这两种方法对于特征值的选择过程基本顺序是一致的,但是也存在一些差异。从 PCC 中我们可以看到,大部分特征值与结局变量都有很好的相关性,除了 TV 和患者的种族信息;对于 RF 算法来说,仅 S/F、SpO2、FiO2、OSI、PEEP、MAP 这 6 个特征值有较高的分数,其余的特征值重要性评分均小于 0.05。其中两种方法评分均较高的参数基本都与 SpO2 有关,可以看出,SpO2 与结局变量 P/F 有明显的相关性。在这里我们将两种方法的重要性评分求均值,并对评分从放大到小排序,得到图 3 下图,为综合两种特征值选择方法后的特征值重要性排序结果。综合考虑特征值与结局变量的线性关系和非线性关系,使得特征值重要性排序更加均衡稳定。
3.2 辨识算法结果
利用特征值排序的结果,将特征值逐次添加到交叉验证模型中,用于训练 4 种算法,并把每一个特征子集在不同算法中的结果存储起来,进行比较分析。如图 4 所示,为 4 种有监督学习算法逐次添加特征值的辨识效果的变化过程,针对每种算法选择了 4 种性能指标(ACC、SEN、SPE、AUC)来评估性能,利用注释箭头“BEST”标注了准确率最大值的位置。通过神经网络使用不同特征子集训练的结果,可以看出,在前 12 个特征子集中,神经网络算法的准确率在逐步提高,但是上升过程中伴随明显的波动,在第 19 个特征值子集处达到最佳;通过 Bagging 使用不同特征子集训练的结果,发现集成学习算法 Bagging 在第 2 个特征子集达到最大准确率后,准确率和 AUC 值都在逐步下降,其敏感性下降更为明显;对于逻辑回归和 AdaBoost 两种算法来说,AdaBoost 的准确率要略优于逻辑回归,但是两个算法对于特征值子集的变化并不敏感。
通过图 4 能大体上观察不同算法、不同特征子集的结果变化趋势,但是无法准确地比较各种组合的优劣。在此基础上,我们对每种算法对应的最优特征子集进行训练,利用交叉验证评估不同特征子集和算法的辨识效果。表 4 中,对每种算法使用十折交叉验证,对 10 次结果求平均值作为评价算法效果的最终训练结果。图 5 绘制了每种算法的 ROC 曲线。可以看出 AdaBoost 算法使用了 20 个特征值,其辨识准确率为 74.82%(AUC = 0.832 1),较其他三种方法略有优势;Bagging 算法只使用 2 个特征值,其准确率也达到了 73.01%(AUC = 0.819 4)。
4 讨论
过去的研究主要集中在利用 S/F 值来预测 P/F 值,从而实现利用无创参数 SpO2 来辨识 ARDS 患者,且大部分的研究都是针对患者在 SpO2<97% 进行的,即限定了使用的范围。本文首次利用多种生理参数来预测 ARDS 患者的严重程度分级,综合考虑患者的多种无创生理参数,如心率、无创血压、呼吸频率、呼吸机相关参数以及患者个人基本信息等,利用机器学习算法实现对 ARDS 的辨识,没有对患者的 SpO2 进行限制,综合考虑了患者的呼吸状况,能够更加全面地评估患者的情况。
本文比较了神经网络、逻辑回归、AdaBoost、Bagging 四种算法对 21 个特征值的敏感程度,利用特征值选择方法,选择了四种算法对应的最优特征子集。通过表 4 我们可以看出,利用准确率和 AUC 值来评估算法的性能,AdaBoost 算法要优于其他三种算法,其准确率为 74.82%(AUC = 0.832 1);但是从特征值选择来考虑,Bagging 只使用了 2 个特征值(S/F、SpO2),其准确率就达到 73.01%(AUC = 0.819 4),这样看来 Bagging 算法也有自身的优势,可以用很少的信息量获取不错的效果。通过特征值排序以及特征值逐步代入,可以获得无创生理参数与 ARDS 的相关性,为后续的相关研究提供建议。通过模型验证可以发现,患者的年龄、种族、TV 与辨识 ARDS 严重程度的相关性较低。
由于使用的是临床信息数据库,在数据获取方面会存在一些不足。就 MIMIC-III 数据库而言,并没有专家对 ARDS 做标定,只能通过临床中的诊断标准,自己定义患者入组标准,但是这样选择的患者并不一定是 ARDS 患者,有可能混入其他疾病的患者;另一方面,在通过数据库提取生理参数的过程中,由于不能准确地按照血气分析中 PaO2 的记录时间来匹配其他生理参数,所以我们允许一定的时间误差,以保证有足够的数据,但是也造成了一定的数据噪声,可能会影响算法的辨识效果;数据库中的数据有可能因为人为因素造成数据录入错误,但是这些数据又在正常的范围,这样在异常值处理时也无法排除,造成误差。
本文采集了患者多种无创生理参数,利用机器学习算法,实时不间断地监控 ARDS 患者的病情发展,可以为临床医生提供辅助诊断决策。下一步,为解决数据来源的准确性,我们希望利用本实验结果,开展相关的临床试验,从而验证本模型的效果。