基于机器学习算法的NT-proBNP灰值患者心力衰竭判别模型评价

2021-07-06 00:06谢秋华鲁作华邓生琼刘倩倩徐莉敏张登海刘兴晖
同济大学学报(医学版) 2021年3期
关键词:决策树梯度样本

谢秋华,鲁作华,邓生琼,刘倩倩,徐莉敏,张登海,刘兴晖

(上海市浦东新区公利医院检验科,上海 200135)

氨基末端脑钠尿肽(N-terminal pro-brain natr-iuretic peptide,NT-proBNP)是目前临床诊断心力衰竭的首选血清学指标[1-3],临床采用“双截点”策略来排除或诊断为心力衰竭,但对那些NT-proBNP检测值处于“排除”和“诊断”截点之间的患者,快速诊断是否有心力衰竭风险存在困难。与传统统计学相比,机器学习算法可对大数据进行分析并挖掘出有用信息,目前已在疾病发病、预后预测等方面有广泛应用[4-6]。本研究采用Logistic回归、随机森林[7]、梯度提升树[8]和XGBoost[9]4种算法,建立、评价NT-proBNP灰值患者的心力衰竭判别模型。

1 资料与方法

1.1 数据来源

实验数据来源于2013年1月—2018年12月上海市浦东新区公利医院门诊信息系统,临床资料来源于相应时间段的住院信息系统。

1.2 研究对象

纳入标准:进行NT-proBNP检测,且年龄<75岁,NT-proBNP检测值在300~900 pg/mL之间,或者年龄≥75岁,NT-proBNP检测值在500~1 800 pg/mL之间的“灰值”患者。

排除标准:NT-proBNP检测值>900或<300 pg/mL且年龄<75岁,或者NT-proBNP>1 800或<500 pg/mL且年龄≥75岁的患者。

1.3 特征筛选

研究对象的原始数据具有住院流水号、年龄、性别、临床诊断、检验结果等共计703个特征。将缺失>40%的特征予以删除,最后剩余的有效特征数为103个,随后进行特征筛选。

将性别、年龄以及检验指标纳入特征筛选池。性别特征设置为男性取1,女性取0;年龄特征依据NT-proBNP灰区的年龄分区进行离散,当年龄<75时,值为0,否则为1;依据所对应的参考区间将检验项目的特征值采用(偏低、正常、偏高、阳性、阴性)进行填充,并将其分别映射为(-1、0、1、1、0)。用L1范数正则化(L1正则)和递归特征消除(recursive feature elimi-nation,RFE)方法降低维度,确定8维特征。其中包含了6个检验数值以及2个患者信息(年龄,性别),如表1所示;样本标签为2类,如表2所示。

表1 入选特征含义及取值范围Tab.1 Meaning and value range of selected features

表2 标签特征含义及取值范围Tab.2 Meaning and value range of feature label

结合医生临床经验与文献[8-10],最终确定模型特征有Age(年龄)、Sex(性别)、CK-MB(肌酸激酶同工酶MB)、CREA(肌酐)、MYO(肌红蛋白)、TNI(肌钙蛋白Ⅰ)、HGB(血红蛋白)、WBC(白细胞),共计8维特征。删除8个指标中有缺失的样本数据3 513条,最终剩余样本数据9 483条。

1.4 数据处理与模型构建

以研究对象为原始数据集,该数据集包括7 047例非心力衰竭和2 436例心力衰竭,然后7∶3比例分层抽选并建立训练集(6 638例)、测试集(2 845例)。

因原始数据集中非心力衰竭与心力衰竭数量比值为2.89∶1,存在类不平衡分布,因此采取阈值移动法修正类别不均衡问题。即在以往的二分类的问题中,通常以0.5作为预测结果的分类标准,将预测概率>0.5的样本归为心力衰竭,预测概率<0.5的样本归为非心力衰竭。由于本案例中心力衰竭与非心力衰竭的样本比例不均衡,采样阈值移动策略,根据训练集结果确定新的阈值,并对验证集和测试集按此阈值进行分类。

训练集用于模型的构建,而测试集和验证集用于对模型性能进行评估。建模均采用训练集的数据,分别使用‘stats’、‘Random forest’、‘Gradient boosting tree’和‘xg-boost’包构建Logistic回归、随机森林、梯度提升数和XGBoost模型,相关参数采取包中默认的设置。

XGBoost是一种迭代的决策树(分类回归树)算法,是将多种弱分类器预测结果综合的集成算法。XGBoost采用向前优化算法,通过迭代学习用一棵新的决策树去拟合上一轮模型的残差,最后加和得到最终的预测模型。XGBoost在算法过程中采用Taylor展开同和级并行运算提高速度,并使用诸如正则化、特征采样等多种策略防止过拟合。XGBoost的建模过程如下:

(1) 初始化弱分类器

(2) 对迭代轮数t=1,2,…,T,有:

a) 对样本i=1,2,…,m,计算当前损失函数对于上一轮学习的预测值的一阶和二阶导数,并求和:

(1)

(2)

b) 基于当前节点尝试分裂决策树,默认分数score=0,对于特征k=1,2,…,K:

i.初始化GL=0,HL=0

ii.将样本按特征值从小到大排列,依次取出第i个样本,依次计算当前样本进入左子树,左右子树的一阶和二阶导数和:

(3)

(4)

iii.寻找增益(Gain)最大的划分点:

(5)

c) 基于最大的增益(Gain)对应的分裂特征和特征值,将节点一分为二

d) 若增益为非正数,则停止分裂,决策树建立完成,使用线性搜索计算所有叶子节点的值,得到决策树模型f(x)

e) 将生成的决策树模型添加到强模型中,其中ε∈(0,1)称为步长或学习率,目的是为了避免模型过拟合。

(6)

1.6 统计学处理

统计分析采用R语言3.4.3,数据的清洗、模型构建与性能评估则采用Python 3.7.2进行。计量资料不满足正态分布以M(P25,P75)表示,采用Wilcoxon秩和检验进行组间比较;计数资料用例数(百分比)表示,用χ2检验比较组间差异。模型评价指标选择受试者工作特征曲线下的面积(area under the rece-iver ope-ration characteristic curve,AUC),AUC越大,模型的预测性能越好。P<0.05为差异有统计学意义。

2 结 果

2.1 队列基线特征

根据纳入和排除标准,纳入训练集6 638例,其中心力衰竭1 705例,测试集2 845例,其中心力衰竭731例。训练集和测试集各临床特征比较,差异均无统计学意义(均P>0.05),见表3。

表3 训练集与测试集基线资料Tab.3 Baseline data of training set and test set

2.2 构建模型的特征排名

通过网格搜索算法,最终XGBoost模型的重要超参数设置如下:最大深度max_depth=3,子节点最小的权重min_child_weight=5,最小损失分裂gamma=0,树的棵n_estimators=32,学习率learning_rate=0.1,子采样比subsample=0.8,生成树列采样colsample_bytree=0.8。并基于模型的结果对特征的重要程度进行了排序,见图1。其中Age是最重要的特征,特征重要性>0.4,明显大于其他指标;TNI是次重要的指标,特征重要性>0.15;Sex是较为重要的指标,特征重要性>0.1;CK-MB、MYO、WBC、CREA、HGB的特征重要性较为接近,均>0.05。

图1 特征重要性排序Fig.1 Feature importance ranking

根据SHAP value计算出的特征绝对值大小顺序如图2所示。可以看出其顺序与图1略有不同。Age、TNI仍然是最重要的2个特征,第3重要的特征是MYO,重要性最低的特征是Sex。

图2 SHAP value特征顺序Fig.2 SHAP value feature order

2.3 Logistic回归、随机森林、梯度提升树和XGBoost等4种模型比较

选择Age、Sex、CK-MB、CREA、MYO、TNI、HGB、WBC等8个指标,构建Logistic回归、随机森林、梯度提升树和XGBoost 4种模型,结果显示ROC曲线下面积Logistic回归、随机森林、梯度提升树和XGBoost模型分别为0.652、0.668、0.670、0.722;但4个模型的灵敏度和特异度差别不大,见表4。

表4 不同模型的预测性能Tab.4 Predictive performance of different heart failure models

3 讨 论

心力衰竭是临床各种心脏病发展的终末期状态,发生率日益升高,已成为我国的巨大社会和经济负担,给卫生保健带来了巨大挑战[10]。如何快速进行心力衰竭的早期诊断或鉴别诊断,是临床关注重点。本研究结合患者基本信息、实验室检查和临床诊断等指标,使用Logistic回归、随机森林、梯度提升树和XGBoost 4种算法构建NT-oroBNP灰值患者心力衰竭判别模型,以期能够辅助临床医生对NT-proBNP灰值患者快速判别是否心力衰竭。

NT-proBNP是由心肌细胞所分泌的脑尿钠肽(brain natriuretic peptide,BNP)在活化酶的作用下分解而得的无活性多肽,具有敏感性高、易检测等优势[11-13],2014心力衰竭指南推荐血浆NT-proBNP为慢性心力衰竭患者的常规检查[3],但是,NT-proBNP检测结果易受患者年龄、性别和肾功能影响,诊断心力衰竭时存在较大的灰值区间(<75岁为300~900 pg/mL;≥75岁为500~1 800 pg/mL),需与其他疾病如慢性阻塞性肺病、肺炎和急性冠脉综合征等进行鉴别[14]。由于低年资临床医生的医学知识和经验不足,在面对心力衰竭初诊患者时无法快速鉴别诊断,需依赖更多的检查或请专科医生会诊,有可能导致病情突变,耽误治疗良机。因此,如何更加有效利用现有的实验室指标,受到临床研究者的关注。

机器学习算法有传统的逻辑回归、决策树,以及在此基础上延伸出的随机森林、梯度提升树、XGBoost等。已有学者利用这些模型开展疾病预测研究,且取得较好效果。朱鸿等[15]基于机器学习算法,评估心脏超声对医护人员队列中慢性疲劳综合征诊断价值;章洁等[16]研究了基于机器学习方法的心电信号分类准确度。本研究纳入9 483例行NT-proBNP检测且检测值落在灰值区间的患者,将纳入的患者根据出院小结诊断分为心力衰竭和非心力衰竭两组,经过数据清洗,特征筛选,以年龄、性别、肌酸激酶同工酶MB、肌红蛋白、肌钙蛋白Ⅰ、血红蛋白和白细胞作为模型因子,用训练集数据构建Logistic回归、随机森林、梯度提升树和XGBoost 4种算法构建NT-oroBNP灰值患者心力衰竭判别模型,并用测试集数据进行评价。结果显示,4种模型的ROC曲线下面积分别为0.652、0.668、0.670、0.722,均未达到0.8的期望值,可能存在以下的两个方面的原因:(1) 多种心血管疾病(急性冠状动脉综合征、心肌病变如左心室肥厚、心脏瓣膜病、心包疾病、房颤、心肌炎等)和非心血管疾病(高龄、贫血、肾功能不全、重症肺炎、肺动脉高压、肺栓塞、和卒中等)均会导致NT-proBNP水平增高,而这些疾病与心力衰竭在患者某些指标的表现又相近,加大了NT-proBNP灰区患者心力衰竭的诊断的难度;(2) 本 研究主要基于患者实验室检查的数据,尚未纳入患者临床表现、心电图、胸片和超声心动图检查等内容,有待进一步优化机器学习模型,以提高准确度。

综上,以年龄、性别、肌酸激酶同工酶MB、肌红蛋白、肌钙蛋白Ⅰ、血红蛋白和白细胞作为模型因子,基于机器学习算法建立的模型有一定临床价值,但其应用价值有待于更大样本进行验证。

猜你喜欢
决策树梯度样本
基于应变梯度的微尺度金属塑性行为研究
简述一种基于C4.5的随机决策树集成分类算法设计
一个具梯度项的p-Laplace 方程弱解的存在性
内容、形式与表达——有梯度的语言教学策略研究
航磁梯度数据实测与计算对比研究
规划·样本
人大专题询问之“方城样本”
随机微分方程的样本Lyapunov二次型估计
决策树学习的剪枝方法
决策树在施工项目管理中的应用