基于CNN和ET的智能ECG识别方法
2021-11-30何志涛陈永毅尹武涛
张 丹,何志涛,陈永毅,尹武涛
(1.浙江工业大学 信息工程学院,浙江 杭州 310023;2.无锡博智芯科技有限公司,江苏 无锡 214131)
心电图[1](Electrocardiogram,ECG)是利用心电图机从体表记录心脏每一心动周期所产生的电活动变化图像的技术。ECG信号数据量庞大,且信号特征的个体差异明显,目前常用于对各种心律失常、心室心房肥大、心肌梗死、心率异常、心肌缺血和心衰等疾病的检测。在传统的医学诊断过程中,根据医生的经验对各类心电图进行分类识别是诊断患者是否患有心血管疾病的关键。然而,人工识别ECG信号中的细微变化是一项富有挑战的工作,且在识别过程中往往需要经验丰富的心电专家参与。专业的心电专家标注往往耗时且成本昂贵,而普通医生因经验不足又存在诊断错误的可能,极大地影响了对心血管疾病患者的诊断和治疗。因此,如何采用计算机辅助算法实现对ECG信号的实时分析和精确分类一直是众多学者研究的热点。ECG信号识别主要包括3 个重要阶段,分别是信号预处理[2]、特征提取和自动识别。目前,针对该问题的各个阶段,已有许多方法见诸报道。传统方法是依赖相关算法手动提取心电特征并进行分类,如小波域特征分析[3]、主成分分析[4]和独立主成分分析[5]等。然而,这些方法提取的特征往往存在特征不够全面、计算繁琐的缺陷,且因为心电信号对噪声相对敏感,因此在后期进行信号分类时也容易限制分类的准确率。为了更全面地提取信号特征,研究者们提出了许多方法去提高模型的识别精度。
随着大数据时代的到来,采用深度学习技术[6]实现心律失常自动检测逐渐成为一种主流。深度神经网络对噪声数据具有较好的鲁棒性和容错性,且能够自适应地提取相关特征,极大地提高了模型的分类准确率,受到众多学者的关注,被广泛应用于诸多分类问题中,其中包括了对心电信号的智能分类。查雪帆等[7]采用了二维灰度图像输入的卷积神经网络(Convolutional neural network,CNN)实现了对心电数据特征的自动提取和分类,但二维卷积网络数据量庞大,计算复杂,不易训练;Acharya等[8]直接采用一维卷积处理ECG信号,相比传统方法大大提高了准确率。但CNN本身存在小样本情况下容易过拟合的问题,对此专家们也提出了许多改进方法[9-10]。为了避免CNN的过拟合问题,一种常见的改进方法是将CNN与其他分类模型相结合。SVM(Support vector machines)是目前最常用的分类器之一,它将向量映射到一个更高维的空间中,并通过在此空间中寻找合适的超平面(即最大间隔超平面)使分类效果达到最佳,该方法在小样本分类问题上应用广泛。李四海等[11]先运用小波变换提取信号在小波域的特征参数,再采用SVM进行ECG信号分类,使模型具有较好的泛化能力,但该方法仅考虑了小波域上的特征参数,会导致所得特征数据过于单一,不够全面,无法很好地表征ECG信号。方红帏等[12]基于单域特征的单一性,先选择从时域、频域和小波域同时提取ECG信号特征,使提取的特征能更充分、全面地表征ECG信号,再采用基于网格搜索法的SVM算法(GS-SVM),以获得分类模型的最优参数,该模型具有较好的泛化能力,在小样本情况下有不错的表现,但在处理大规模数据样本的时候仍有欠缺。孙波等[9]提出了基于CNN和SVM混合模型的ECG信号识别方法,提高了在小分类情况下的准确率,但SVM更适合于二分类问题,在拓展到多分类问题上仍存有困难。集成学习方法通过将几个各有优势的弱分类器用一定策略(主要有序列化方法和并行化方法两种)结合起来,形成分类性能更好的强分类器,进而实现更高的分类精度。随机森林(Random forest,RF)正是一种基于并行化方法提出的集成学习方法,它易于实现,训练速度快,而且能够有效地运行在大数据集上。高硕等[13]将CNN与RF相结合进行ECG信号的分类,具有一定的创新性,但RF在面对噪音较大的样本集时容易出现过拟合现象导致验证集准确率降低,且该方法在数据不均衡情况下分类效果不佳,尤其对小分类样本的分类精度不够高。针对现有方法的局限性,笔者先以连续小波变换[14](Continuous wavelet transform,CWT)对原始ECG信号做预处理,用来排除原始信号中可能存在的各种噪声干扰;其次,通过1 维CNN强大的学习和表征能力,自动提取ECG信号的相关特征,将提取出的心电信号特征作为极端随机树(Extra-Trees,ET)的输入特征实现心电信号的具体分类;最后,结合由美国麻省理工学院提供的MIT-BIH数据集进行模型性能的测试,通过精确度(Precision)、灵敏度(Sensitivity)和特异性(Specificity)等指标进行对比实验,结果表明:相比现有方法,该方法进一步提高了分类的准确率。
1 分类算法实现
笔者提出的ECG分类方法主要步骤是:1)ECG信号提取及去噪预处理;2)小分类数据样本扩充;3)基于CNN-ET混合模型提取特征并实现分类。心电信号识别的流程如图1所示。
图1 ECG信号识别流程图
1.1 ECG信号提取及去噪预处理
选用一个数据质量更好的数据集可以有效提高分辨率。笔者采用的数据来源是MIT-BIH心律失常数据集[15],该数据集包括48个长30 min的双通道(II导联和V1导联)动态心电图纪录片段,这些片段是从1975—1979年间BIH心律失常实验室的47 名研究对象那里获得的,数据真实可靠,是目前最常用的心律失常数据集之一。
笔者采用的是V1导联的数据。一个完整的心拍数据包括P波、QRS波和T波。与P波和T波相比,QRS波幅度较大,心率也较高,更易于与干扰和噪声分离,因此常见的心拍分割方法都是基于QRS波的检测定位给出的[16]。笔者主要研究心拍分类的智能化方法,QRS波具体的检测方法不在讨论范围之内,故直接采用MIT-BIH心律失常数据集中注释的R波位置进行分割,具体方法为以给定的各R波峰为基点,分别向前、后各取150 个点,共计300 个点,选取正常搏动N、左束支传导阻滞L、右束支传导阻滞R、房性早搏A和室性早搏V等5 类心电数据进行试验。
直接从MIT-BIH心律失常数据集中提取出的心电信号具有较强的随机性和背景噪声,由工频干扰和基线漂移等原因产生的信号干扰会降低后期分类的准确率,是心电信号分类的难点之一。为降低噪声影响,需要进行去噪预处理。笔者采用的是基于CWT[17]的去噪方法,小波系数具有如下特性:1)信号和噪声的小波系数在不同尺度上的特征表现是不相同的;2)对于空间不连续函数,其行为主要集中在小波空间的一小部分子集中;3)小波系数全部被噪声污染;4)噪声向量以及其正交变换均为高斯形式。CWT去噪正是基于这些特性提出的,其实质就是对原ECG信号的滤波,对给定的能量信号f(t)进行小波变换,公式为
(1)
式中:a(a>0),b分别为对于母小波ψ(t)的缩放和平移因子。
经小波分解后,信号中噪声的小波系数幅值小于原信号,可采用阈值去噪法消除信号噪声,常用的是软、硬阈值去噪。这两种方法中,软阈值法得到的重构信号有较好的连续性,但会造成原始信号的部分失真,硬阈值法得到的重构信号更接近原始信号,但会在局部产生振荡。针对软硬阈值各自存在的固有缺陷,笔者提出了一种改进的阈值函数Wj,k,即
(2)
式中:wj,k为原始信号;λ为给定的阈值;α为阈值函数的调整因子,可在(0,1]范围内灵活取值,当数值接近于0时,该阈值函数逼近软阈值方法,当数值接近1时,该阈值函数趋向硬阈值方法。这种可调节的阈值函数在保留软硬阈值优点的基础上,克服了它们固有的不足,使所得重构心电数据在保留大量有效信息的同时有较好的连续性,便于信号的进一步分析和处理。
1.2 数据样本扩充
为了避免数据样本不均衡对分类模型产生影响,对数据集进行样本扩充。在MIT-BIH心律失常数据集中,各类心电数据量并不均衡,如A和V的数据量明显少于N、L和R类,这会导致系统对小样本数据分类准确率的降低,为克服5 类(N,L,R,A和V)心电心拍次数不平衡带来的影响,有必要对各类心电数据尤其是小样本数据进行数据扩充。笔者采用的是基于Z-score标准化[8]的扩充方法,具体公式为
(3)
式中:X为原始信号;μ为平均值;σ为标准差。
通过改变由原始心电信号计算出的Z分值的标准差和平均值,在预处理后生成合成数据样本。取N类中的片段保持不变(此类是最丰富的),增加其余类型段的数量以匹配N类的段数。原始心电信号数据增强后,包括N,L,R,A和V类的数据量相近且段总数增加到520 220个,各分类心电信号增强后的样本量见表1。
表1 各心拍类型扩充后样本量
1.3 CNN-ET混合模型
经过去噪和数据扩充后,ECG信号需要进行特征的提取和分类,这也是ECG信号分类问题的重点,笔者采用的特征提取和分类方法是将CNN与ET相结合,形成一个新的混合模型,该混合模型以CNN为基础,将CNN的1 个全连接层转化的输出特征作为ET的输入信号,实现对心电信号的分类,模型由5 个卷积层C1~C5,3个池化层P1~P3,1 个全连接层FC1和ET层组成,具体的混合模型如图2所示。
图2 CNN-ET混合模型结构图
在笔者提出的CNN-ET分类模型中,首先需要建立CNN模型。CNN是目前应用最广泛的人工神经网络模型之一[18-19]。与其他分类模型相比,CNN特有的局部感知和权值共享操作使模型参数大幅减少,极大地提高了模型的训练效率,使得CNN模型可以更轻松地处理高维数据[20]。在CNN体系结构中,适当维度的卷积层、池化层和全连接层是必不可少的,这是模型训练的关键,其中卷积层是整个CNN模型的核心,其卷积操作计算公式为
(4)
池化层的作用是通过池化函数减少模型特征参数,降低模型运算的计算量,笔者采用的是最大池化的方法,添加1 层全连接层来整合由卷积层或池化层训练得到的局部特征,最后采用ReLU函数作为激活函数来提高模型的整体性能。
为防止出现过拟合现象,需要在CNN模型中增加适量的Dropout层,其核心思想是通过在训练时随机地从中间层中丢弃一部分数据来减弱神经元节点之间的联合适应性。为进一步提高模型性能,选用Adam算法对目标函数进行优化。
ET算法是2006年由Geurts等[21]提出的一种类似于RF[22-23]的集成算法,相比于RF,ET算法调用全部数据参与模型的训练,使得训练结果的可靠性更高。笔者的原始信号经过预处理后,使用CNN提取数据特征。ECG信号经过CNN训练后,取CNN模型全连接层提取出的数据特征,并将其作为ET的输入数据进行最后的ECG分类,模型的具体结构参数见表2。
表2 CNN-ET结构参数与神经网络模型结构
传统的CNN网络虽然是解决分类问题最有效的方法之一,尤其是进行大数据分析时格外强大,但它的过拟合问题一直未能得到很好的解决,尤其是当数据样本不够大时,常会出现传统卷积网络验证集的分类误差偏大的情况,从而导致分类准确率降低。目前,研究者们已提出了众多优化方法以提高模型的泛化能力,如数据集扩增、正则化和增加Dropout层等,但在实际操作中发现:采用这些方法后网络的过拟合现象虽然有所降低,但依然存在。ET算法根据经典的自顶向下过程建立了一个未修剪的决策或回归树集合,通过完全随机地选择切割点来分割节点,增加了各分类器节点分裂的随机性;通过使用全部样本训练数据,提高了分类结果的可靠性。将CNN和ET有机结合在一起,提高了预测结果的鲁棒性和可靠性,具体结果见2.3节实验对比。
2 试验结果与讨论
2.1 算法分析
为了验证笔者方法的有效性,使用基于Python语言的深度学习框架Tensorflow实现CNN-ET模型,并使用MIT-BIH公开数据集进行实验分析。首先,对原始MIT-BIH心律失常数据进行心拍分割,使用基于改进阈值函数的连续小波变换方法进行数据预处理;然后,基于Z-score标准化对预处理后的去噪信号进行数据扩充及标准化,按训练集∶测试集为8∶2的比例将扩充数据输入到构建的CNN框架中进行自适应特征提取;最后,使用ET模型实现信号分类,将CNN中提取出的特征数据集作为输入数据传入ET分类模型,通过算法运算实现对ECG信号的自动分类。
2.2 性能评估
为验证笔者方法的优越性,采用混淆矩阵对5 种心律失常数据的预测结果分别进行展示。混淆矩阵是一种较为常见的分类结果显示算法,通过展示实际类别和分类后的预测值,可以直观地显示样品分类情况等细节,常配合一系列分类指标对模型性能进行评估。ECG 5分类产生的混淆矩阵如表3所示。为了更好地评估各分类方法的效果,根据混淆矩阵,笔者采用精确度、灵敏度和特异性3 个二级指标作为ECG信号分类指标评估模型的分类结果。评估方法的精确度P、灵敏度S和特异性Sp的计算公式为
表3 5分类验证集的混淆矩阵
(5)
(6)
(7)
式中:TP为真阳性;TN为真阴性;FP为假阳性;FN为假阴性。
根据混淆矩阵得出的各类别的精确度、灵敏性和特异度评估结果见表4。
表4 每个类型的性能评估
由表3,4可知:笔者模型对ECG信号的分类性能极佳,各个类别的精确度、灵敏度和特异性都可以达到接近1的标准(表中仅为单次分类结果,实际验证时存在精确度、灵敏度和特异性全部达到1的情况),说明该模型稳定性很高,非常适合ECG信号分类问题。
2.3 结果比较
为验证笔者方法的优越性,将笔者方法与其他文献中采用的方法进行对比。为了增强比较结果的可靠性,所选用的全部对比文献都使用了MIT-BIH数据集来验证算法的准确率,结果见表5。通过对表5中7 种不同分类方法的准确率对比可知:查雪帆等[7]通过将ECG信号转化为二维数据以避免因数据不足导致一维卷积性能下降的问题,在准确率上有所突破,达到98%;Acharya等[8]直接采用一个9层深度的CNN模型对ECG信号进行特征提取和5分类,因CNN本身存在过拟合问题,使得即使进行了数据扩充,分类准确率也只达到94.03%;孙波等[9]将CNN与SVM相结合,在4分类中虽然准确率达到了99.42%,但数据量较小;李四海等[11]使用泛化能力较好的SVM进行信号的训练,分类准确率为93.44%;方红帏等[12]采用基于三域特征分析的GS-SVM模型,精度达到了98.01%;Petmezas等[24]将CNN与LSTM相结合,获得了99.2%的分类精度。笔者提出的CNN-ET模型,准确率达到99.95%,性能优越,且数据样本较大,确保模型具有较高的泛化能力和鲁棒性。
表5 各方法结果对比
3 结 论
在心电分类问题中,如何更好地提取心电信号特征并实现分类是提高算法准确率的关键。对此,笔者提出了一种基于CNN和ET的ECG信号检测方法。该方法先采用连续小波变换对原始心电数据作去噪预处理,以避免各类噪声对后期特征提取乃至具体分类的干扰;然后利用CNN强大的特征提取能力,高效地提取心电信号数据特征;最后使用ET对提取的心电特征进行分类,能够精确地诊断出心电信号的具体类别。所提出的方法在MIT-BIH数据集上进行了测试,验证了该方法在实际分类中的有效性。经检测,CNN-ET模型在心电问题上的分类效果较好,各个心电类别分类的精确率都达到接近1的水平。与现有的心电分类方法相对比,CNN-ET可以更有效地进行心血管疾病的识别和诊断。