APP下载

基于XGBoost模型的心律失常分类算法研究

2019-07-25李云吴水才袁丽

中国医疗设备 2019年7期
关键词:心电电信号分类器

李云,吴水才,袁丽

北京工业大学 生命科学与生物工程学院,北京 100124

引言

心律失常是一种常见的心血管疾病[1],严重威胁着中老年人的身体健康,某些心律失常(如心室颤动和心动过速)会出现致死现象。心电图(Electrocardiograph,ECG)能直接反映心脏的电生理活动,但心律失常的出现具有偶然性和突发性,目前比较有效的方法是采用动态心电监护仪记录30 min或更长时间的心电信号,但人工分析较长时间(>30 min)的ECG存在效率低、仅凭借医生经验等问题。随着信息传输技术和机器学习算法的高速发展,越来越多的学者开始使用计算机自动识别技术对心电信号进行分类,在保证分类结果具有较高准确率的同时使心律失常实时分类成为可能。

心律失常自动分类的主要技术手段通常是在特征提取[2](如形态特征[3]、RR间期[4]、独立成分分析[5]、小波特征[6])的基础上,利用各种机器学习分类器,如人工神经网络[6]、支持向量机[7]、随机森林[8]、贝叶斯网络[9]和深度学习[10]等对心律失常进行分类。Knvps等[11]采用经验模式分解将ECG信号分解为固有模式函数,随后提取样本熵、变异系数、奇异值和IMF的频带功率作为特征,输入到基于多项式核函数的最小优化支持向量机中,结果表明心律失常分类准确率高达99.2%,但此算法只包括了五种特定类型的心电信号,并没有涵盖所有的心律失常。Shadmand等[12]借助Hermit激活函数(多项式)提取ECG信号中的形态特征和RR间期特征形成特征向量,输入到粒子群算法优化的人工神经网络分类器中,结果根据美国医疗促进协会(Association for the Advancement of Medical Instrumentation,AAMI)制定的标准将心律失常类型分为五类,平均识别准确率达到97%,但是由于其测试集与训练集含有相同患者的数据,因此这种方法泛化能力[13]比较弱,只适用于给每个个体建立一个特异性模型[14]。Oliveira等[15]提出采用动态贝叶斯网络(Dynamic Bayesian Network,DBN)来解决ECG信号分类问题,使用DBN基于室性早搏(Premature Ventricular contraction,PVC)构建拓扑结构,对PVC最大识别率为99%。以上心电分类研究获得了较好的分类效果,但是存在识别种类不全面或者没有考虑不同患者间心电信号的差异性问题。

本文提出一种基于极限梯度提升(Extreme Gradient Boosting,XGBoost)模型的心律失常分类方法,考虑到患者间的个体差异, 将心律类型按照AAMI标准分为四类。首先采用小波中值阈值法对心电信号去噪,根据R波峰位置分割心电信号,提取每个心拍的投影特征和RR间期相关特征,输入到XGBoost分类器中,实现对心律失常的分类。该算法在MIT-BIH心律失常数据库上进行测试,实验结果表明心律失常分类平均识别准确率达到94.1%,高于同类文献[3,5,7]的结果。

1 材料和方法

1.1 数据来源

MIT-BIH心律失常数据库由美国麻省理工学院提供,是研究心律失常分类算法的常用数据库之一,并已被广泛用于心律失常算法的验证[5,7,16-17]。本研究选择该数据库作为研究对象,包含47位患者的48条记录,其中23条记录(编号范围是 100~109、111~119、121~124)是常规心律失常样本,25条记录(编号范围是200~203、205、207~210、212~215、217、219~223、228、230~234)是临床罕见的心律失常情况,每条记录包含30 min的心电信号,采样率为360 Hz。本研究采用AAMI制定的心律失常分类标准,表1给出了MIT-BIH数据库注释类型与AAMI分类标准的对应关系[18]。

表1 AAMI心律分类标准与MIT-BIH心律注释对照表

1.2 心律失常算法评价方案

目前国内外评价心律失常分类算法的方式有两种:一种是被称为患者内的心律分类方式,另一种是患者间的心律分类方式。基于患者内的研究[2,4,16]往往在测试集上有较好的分类效果,但训练集和测试集中含有同一个患者的心电样本,忽略了不同患者间的心电信号存在差异性。为了解决这个问题,de Chazal等[3]提出了患者间的心律分类方式,使训练集和测试集的数据样本来自不同的患者个体。多项研究[3,5,7]表明,基于患者间的心律分类具有更好的临床价值和优秀的泛化能力。本研究考虑到患者间的个体差异,实现患者间的心律失常自动分类,将MIT-BIH数据库中受试者分成两组,分别为训练集和测试集,去掉数据库中含有起搏心拍的受试者(102、104、107、214),具体见表2。

表2 数据集划分情况

1.3 心律失常检测方法

本文所提出的心律失常分类方法分为3个部分,即预处理、特征提取和特征分类,算法流程如图1所示。

图1 心律失常算法流程图

1.3.1 预处理

在心电信号采集过程中往往会受到噪声的干扰,这些噪声主要是基线漂移、肌电干扰和工频干扰[2]。本研究对心电信号进行小波变换,将心电信号分解到不同尺度,利用中值阈值法[19]去除不同尺度上的噪声分量,从而得到心电信号的有效信息。小波变换的核心是基函数和分解尺度,本研究为保证信号的完整性及算法的实时性,选择DB 1(Daubechies 1)小波作为基函数,分解尺度定为8。首先去除第八层的近似系数(频率范围小于1 Hz)以去除基线漂移,其次对小波分解的一阶、二阶、三阶的细节系数进行阈值处理以去除肌电干扰和工频干扰,其阈值t如公式(1)所示:

其中n为小波系数向量长度,L为小波分解层数,K为小波分解当前层数(取值范围是1~3), 是噪声方差,其估计值见公式(2):

其中abs是取绝对值,median取中位数,x为当前系数向量。最后由于肌电干扰接近高斯白噪声分布,按照模型(3)得到去噪后的小波系数y。

将小波系数按照软阈值的方式进重构得到有效信号。图2是信号去噪的前后对比图,可以看出在保证信号完整性的基础上,对去噪有明显的效果。

图2 心电信号去噪对比图

特征提取之前需要对心电信号进行切片分割。本研究的目的是心律失常分类,因此直接通过MIT-BIH心律失常数据库标记的R峰位置分割信号。一个完整的心电周期包括P波、PR间期、QRS波、ST段、T段和QT间期。不同波群反应心脏不同的活动情况[4],P波代表了从窦房结到房室结、从右心房到左心房的去极化过程,通常间隔小于80 ms,PR间期反映了电脉冲从窦房结传递到房室结的时间,间隔为120~200 ms,QRS波群反映了左右心室的快速去极化过程,宽度一般为80~100 ms,ST段是连接QRS波和T波的一段区域,代表了心室去极化之后的一段时间。QT间期指从QRS波开始到T波结束的一段时间,间隔通常小于440 ms。根据QRS波形的特征,R峰前200 ms和R峰后440 ms一般能包含心拍的一个完整周期,因此我们取R峰前80、后160个点形成特征片段。

1.3.2 特征提取

1.3.2.1 高斯随机矩阵

高斯随机投影矩阵提供了一种有效的方法来减少波形特征的数量。Shadmand等[12]也证明了随机投影矩阵在对数据进行50%的压缩比例情况下,重建的信号与原始信号几乎重合,均方误差为0.0005,表明投影特征包含了原始心电的大部分有效信息。

在投影变换式(4)中,数据域X通过高斯随机矩阵 变换到压缩域Y,N为原始数据X的维度,M是压缩后数据Y的维度。M决定了分类器的运行性能,Chen等[20]对M值进行了试验,在M为30的时候既能保证运行效率且使准确率最大化,因此本文的M值初始化为30。

1.3.2.2 RR间期

RR间期表示心脏活动的频率,包含了心脏活动的动态特征信息。文献[15]表明RR间期可以检测和分类某些类型的心律失常如室性早搏、心室颤动和传导阻滞等。

本文计算心电的平均RR间期、前RR间期和后RR间期作为心电的动态信息特征。前RR间期是当前R波峰位置与前一R波峰位置之间的距离;后RR间期是当前R波峰位置与后一R波峰位置之间的距离,这两个特征代表了心电信号的瞬时特征。由于MIT-BIH数据库中每条记录的长度在30 min,计算平均RR间期是不现实的,因此取当前R波峰之前的10个RR间隔的平均距离计算为平均RR间期,其优点是能立即计算出当前节拍的平均RR间期,保证实时特征提取。图3统计了4种心电类型的3种RR间期情况,每个类别随机获取了100个RR间期,心电类型依次为N、S、V、F。从图中可以看出N、F类的前RR间期与S、V类有明显的区别,F类的后RR间期与N、S、V类也有显著的差异。

图3 RR间期统计表

1.3.3 XGboost分类器

XGboost分类器是数据挖掘和机器学习中最常用的算法之一。由于其分类效果显著,计算复杂度不高,对输入要求不敏感,经常被用在一些比赛中[10,16]。XGBoost的分布式版本有广泛的可移植性,支持在多种平台上运行。XGBoost的基本组成部分是回归树(Regression Tree),采用集成思想,将多个回归树进行组合达到准确的分类效果。其建树过程为,首先确定初始树为那么建立第t棵树时的预测模型为:

其中xi是属于样本集中第i个样本,fk表示第K棵树,表示样本xi的预测结果。在建立模型过程中不断优化目标损失函数,使其最小,如(6):

其中γ、λ分别表示惩罚系数,T表示树的叶子结点数,w为叶子结点的取值。XGBoost通过将使用二阶泰勒公式展开得:

其中,gi、hi表示在第i个样本下泰勒展开式的一阶导数、二阶导数,通过(8)可以得到是关于wj的一元二次方程,因此能够找到使取值最小的wj。为简化公式,定义,那么当:

通过以上步骤完成第t棵树的建立。XGBoost模型在工作时需要设置三类参数。分别是通用参数、Booster参数和学习目标参数。通用参数包括基础模型的设置和多线程控制等;Booster参数是设置基础模型的参数,以树形结构为例,包括学习率、树的最大深度、最大叶子数量等;学习目标参数包括定义目标损失函数、树的复杂度和随机数的种子。在本研究中基础模型选择了树形结构,目标损失函数为负对数似然函数(Mlogloss),Booster参数的调整通过训练集验证来确定,具体参数设置如表3。

表3 XGboost模型参数

2 结果与分析

2.1 算法评价指标

本文计算灵敏度(Sensitivity,Se)、真阳性检测率(Positive Predictive Value,+P)、准确率(Accuracy,Acc)作为衡量分类器的性能指标。其计算方法如公式(11)(12)(13)所示,其中TP表示真阳性数量,FP为假阳性数量,TN为真阴性数量,FN为假阴性数量。

2.2 结果分析

AAMI规定了心律失常分类检测算法的评估标准,一般通过混淆矩阵表示算法测试结果,实验结果如表4中矩阵所示,表中横轴表示真实标签数据情况,纵轴表示预测标签情况,对角线上的数据表示准确的预测值,混淆矩阵中给出了N、S、V和F类的分类情况。为了体现算法的优越性,在使用同样的训练集和数据集的情况下,与已有研究[3,5,7]的结果进行了比较,结果见表5。

表4 实验结果

表5 试验结果对比

从表5中可以看出,本算法在全局准确度和N、V类的灵敏度方面有较好的表现。N、V类的阳性预测值略低于之前的研究,然而S类的阳性预测值、灵敏度普遍不高,其原因可能有两点,一是训练数据相对较少,其次S类中的室上性早搏与N类的波形极其相似。值得说明的是,由于不同个体之间心电信号存在着差异,因此基于患者间的评估方案有很高的临床价值。本文平均识别准确率达到94.1%,S类阳性预测值、V类灵敏度进一步提高,因此本文方法对于心律失常分类研究有很高的参考价值。

3 结论

本文针对动态心电监护中数据量大、人工分析效率低及准确率难以保证等问题,提取心电信号的投影特征和RR间期特征,训练了一个XGBoost模型,成功将心律类型按照AAMI标准分为4类。经过MIT-BIH心律失常数据库的验证,本方法的平均识别准确率高达94.1%,可作为医护人员诊断心脏疾病的参考依据。另外,XGBoost模型速度快、准确率高,可分布式部署,能集成到当前流行的Hadoop、spark数据处理框架之中,使得本方法可快速移植到服务器软件平台。

猜你喜欢

心电电信号分类器
基于联合聚类分析的单通道腹部心电信号的胎心率提取
心电向量图诊断高血压病左心室异常的临床应用
基于朴素Bayes组合的简易集成分类器①
心电医联体建设需求分析及意义
基于非接触式电极的心电监测系统
基于特征选择的SVM选择性集成学习方法
基于Code Composer Studio3.3完成对心电信号的去噪
卡片式智能心电采集仪
基于随机森林的航天器电信号多分类识别方法
基于差异性测度的遥感自适应分类器选择