APP下载

基于CNN 和SVM 混合模型的心电信号识别方法

2020-05-21郭秀梅

关键词:分类器心电图准确率

孙 波,杨 磊*,郭秀梅,陈 冉,张 童,贾 昊

1.山东农业大学 信息科学与工程学院,山东 泰安 271019

2.山东第一医科大学第二附属医院,山东 泰安 271000

心电信号(Electrocardiogram,ECG)可用于对各种心律失常、心室心房肥大、心肌梗死、心肌缺血等病症的检查[1]。传统诊断过程中,医生通过心电图的观察和经验来进行心血管疾病的判断,而人工诊断往往无法实时监测异常心电波形,并且在判读过程中诊断误差难以避免[2]。因此,研究利用计算机系统自动识别ECG 信号并进行分类成为近年来研究的热点。

2006 年,周珂等提出了一种基于支持向量机(Support Vector Machines,SVM)的心电图分类诊断方法,构造了基于SVM 的心电图分类器[3]。杜智慧等提出了一种基于神经网络的心电图分类方法,通过利用前向多层神经网络的反向传播算法(Back Propagation)对心电图进行三分类,取得了较好的结果[4]。Übeyli ED 结合特征向量法和支持向量机分析病人的心电图变化,通过特征向量法进行特征提取并通过SVM 进行分类训练[5]。Moavenian M 等提出了一种利用核-Adatron(KA)学习算法来辅助SVM 进行ECG 心律失常分类的方法[6]。但以上所述方法,对于信号的特征提取能力较弱,不能够有效的提取数据的特征信息,导致信号的分类准确率不高。近年来,随着卷积神经网络(Convolutional Neural Networks,CNN)的迅速发展,尤其在特征检测方面的优势,使得在解决文本数据处理、图像目标识别、语音识别等很多问题上应用较为广泛,目前也应用到ECG 检测领域。Zubair M 等通过使用卷积神经网络对ECG 数据进行特征提取,从而实现ECG 信号的分类[7]。Xuefan Z 等提出了一种结合迁移学习与二维深度卷积神经网络识别心电图像的方法[8]。虽然卷积神经网络在特征提取方面较为有效,但是卷积神经网络的各种性能受限于训练样本的数目,需要大量的训练数据才能获得令人满意的表现。在小样本数据的情况下,容易产生过拟合与识别准确率低的情况[9]。并且由于卷积神经网络的全连接模式过于冗余而低效,在数据不平衡的情况下,会使得准确率下降[10]。为了克服以上深度学习方法在小数据下容易产生过拟合,分类准确率低的缺点,本文提出了一种基于CNN+SVM 混合模型进行ECG 信号的识别判断方法。首先建立完整的卷积神经网络(CNN),进行心电信号特征提取。将全连接层提取出来的全连接层特征向量作为SVM 分类器的输入特征向量,再通过SVM 分类器进行分类。这种方法能够自动提取数据的特征,充分利用卷积神经网络在数据特征提取方面的优势,并且SVM 分类器分类效果稳定,在小数据上具有较好的泛化能力。为了验证所提算法的有效性,使用心电信号公开数据库MIT-BIH 中的Arrhythmia Database[11]进行验证,结果表明,结合CNN 和SVM 两者的优点,分类性能尤其在小数据集的准确率方面得到较大提升。

1 CNN-SVM 模型

通过将CNN 与SVM 组合起来,构建了一个新的混合模型,混合模型中将完整CNN 模型中的一个全连接层替换为SVM 分类器,将全连接层输出转化的特征向量作为SVM 的输入向量,来实现对ECG 信号的分类。

1.1 SVM 分类器模型

支持向量机(Support Vector Machines,SVM)是定义在空间上的使不同类别间隔最大化的分类器[12]。在SVM 中,将距离超平面最近的点定义为支持向量,希望找到支持向量,确保它们离分隔超平面的距离尽可能的远。通过最大化支持向量到分隔超平面的距离来训练SVM,并通过使用不同的核函数来进行分类。

本文SVM 模型选用线性核函数:k(x,y)=xy(1)

给定训练向量xi∈RP,i=1,…,n,分为两类,样本标记y∈{1,-1}n。SVM 通过寻找一个最大的边界分割超平面实现对样本集合的线性分类,上述问题可以表示为一个最优化问题。

公式(2)中,w是m维向量,b是一个标量,称为偏移量。公式(3)中ξi是松弛变量,C是权衡边界最大化和分类误差最小的惩罚因子。在这里训练向量xi通过函数φ(xi)隐式映射到更高的维度上。

通过求解上述最优化问题,分类器的决策函数被定义为:

式中ɑi是拉格朗日乘积因子,K(xi,xj)是核函数。

SVM 本身是一个二值分类器,SVM 最初被设计时就是为了解决二值分类问题,当处理多分类问题时,就需要构造合适的多类分类器。目前,构造SVM 多类分类器的方法主要有两种,一是直接进行目标函数的修改,将多个分类面的参数求解合并到一个最优化问题中,通过求解该最优化问题实现多分类;二是间接法,该方法中的多分类器包含多个二分类器,常见的方法有one-against-one和one-against-all 两种。本文用到的是one-against-one 方法。

One-against-one 是在任意两类样本之间设计一个SVM。本文使用的ECG 信号可以分为N(正常搏动)、L(左束支传导阻滞)、R(右束支传导阻滞)和A(异常房性早搏),因此,ECG 信号分类是一个4 分类问题。在模型训练时四种心电信号两两组合,即N-L、N-R、N-A、L-R、L-A 和R-A,就需要设计4*(4-1)/2=6 个SVM 分类器。每个组合所对应的向量作为训练集,得到6 个训练结果;在模型测试时,把对应的向量分别对6 个结果进行测试,然后采取投票形式,当对其中一个未知样本进行分类时,最后得票最多的类别即为该未知样本的类型。投票结果为:N=A=R=L=0;(N,A)-classifier 如果是N win,则N=N+1;otherwise,A=A+1;(N,R)-classifier;如果是N win,则N=N+1;otherwise,R=R+1;(R,L)-classifier;如果是N win,则R=R+1;otherwise,L=L+1;最终的结果是N、L、R、A 这4 个数值中最大的。

1.2 CNN 模型

CNN 是一种有监督学习特性的多层神经网络,主要由卷积层、池化层和全连接层组成,通过权重关联各层之间的神经元。卷积神经网络通过网络中的卷积层、池化层和一系列非线性计算从原始数据中提取数据局部特征信息[13],提取的特征通过全连接层输入到分类器。本文构建的CNN 网络结构如图1 所示,该网络包括输入层、2 个卷积层、2 个池化层、2 个全连接层和输出层,输入层的维度大小为16×16,2 个卷积层的维度分别为16×16、8×8,分别用于计算ECG 信号的特征。通过卷积获得了数据的特征之后可以直接根据这些特征训练分类器,但是这样计算量很大而且容易产生过拟合,因此在卷积层后面需要加入池化层来减少计算量,并且同时提高对特征提取的抗干扰能力。因此特征图上的每个神经元与不同数目的前一层神经元相连接,他们由不同大小的卷积核定义。在两个卷积层与池化层中,卷积层与池化层的核大小分别为5×5、2×2,步长分别为2、1。每次特征图变化其尺寸大小由S 缩减为

1.3 CNN+SVM 混合模型

本文中所构建的CNN+SVM 混合模型使用SVM 代替CNN 网络的全连接层,即CNN 提取特征后利用SVM 进行分类。混合模型如图2 所示。

在CNN+SVM 混合模型中,首先需要建立完整的CNN 模型。在建立CNN 模型时,首先对Dropout层进行设置。Dropout 层[14,15]的作用是在训练神经网络模型时,在样本数据较少情况下,可以提高模型的泛化能力,防止出现过拟合。然后通过反向传播算法来进行CNN 模型的训练[16]。最终通过Adam优化算法来进行目标函数的优化,使得模型的性能进一步提高。将CNN 模型训练完成后,将全连接层提取出来的特征给SVM 分类器用来进行数据的划分。在SVM 分类器中,用到了线性核函数,线性核函数能够进一步提高模型的泛化能力,使得模型的性能进一步提高。

本文设计的CNN+SVM 模型结构参数与神经网络模型结构如图2 所示。

表1 CNN+SVM 模型结构参数与神经网络模型结构Table 1 Structural parameters of CNN+SVM model and the structure of neural network model

传统的卷积神经网络(CNN)能够有效的提取数据的局部特征,但是在小数据集上容易产生过拟合的问题,并且造成对验证数据集的分类准确率低,也就是泛化能力不佳。支持向量机(support vector machines,SVM)是定义在空间上的使不同类别间隔最大化的分类器,支持向量机就是要使超平面和支持向量之间的间隔尽可能的大,这样超平面才可以将两类样本准确的分开,而保证间隔尽可能的大就是保证我们的分类器误差尽可能的小,尽可能的健壮。SVM 本身的优化目标是结构化风险最小,而不是经验风险最小[17],因此,通过margin 的概念,得到对数据分布的结构化描述,降低了对数据规模和对数据的分布的要求。使得SVM 在小样本数据集上能够得到比其他算法更好的分类效果。并且SVM 基于结构化风险最小的设计特点,避免了过学习问题,因此泛化能力强。

2 结果与分析

2.1 评价指标

为验证所构建模型的有效性,采用MIT-BIH Arrhythmia Database 公开心电数据库,MIT-BIH 心律失常数据集包含48 个30 min 长度双通道(Ⅱ导联和V1 导联)动态心电记录片段。MIT-BIHArrhythmia Database 采样率为360 Hz、分辨率11 bit、每段数据持续时间为30 min、存储格式为Format 212。

本文采用的V1 导联的数据,从数据库中提取了共1474560 条记录。一个完整心拍包括P,QRS和T 波。通过一个完整心拍可以反应心律失常,例如:窦房结因某些病变而停止发放冲动造成窦性停搏而导致P 波消失。但在ECG 信号中,P 波和T 波幅度小,频率低,难以与干扰和噪声分离,所以较QRS 波的检测更加困难。因此,P 波和T 波的检测是在QRS 波定位后进行的。在QRS 波起点之前的一段区域内检测P 波,在QRS 波重点之后的一段区域内检测T 波。因此通过Java 进行数据分割,在R 波峰的位置上,向前100 个点,并向后取155 个点,加上R 波峰,共计256 个点。将数据分为4 类,4 种类型的心拍的数量见表2,可视化结果见图3。

实验平台硬件配置为Intel i5-7300HQ CPU,显卡为GTX1050Ti,内存是8GB,系统是Windows系统,模型基于Python 语言和Tensorflow 框架实现。

表2 四种类型心拍的数量Table 2 The number of four types of beats

图3 四种类型心电图可视化对比Fig.3 Visual comparison of four types of ECG

本文采用准确率、灵敏度、特异性对不同算法进行对比,准确率、灵敏度、特异性进行不同模型的分类结果评估并通过混肴矩阵能表示出以上信息。混肴矩阵的每一列代表了预测类别,每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数量。每一列中的数值表示真实数据被预测为该类的数目。本文为4 分类问题,因此混肴矩阵是4 维矩阵。

其中,nij(i≠j)为类别为i样本被归类为类j,nij为类别为i的样本被正确分类的数量。Pi为所有样本被分类为i的数量,Ci为类别为i的样本数目对于类别i的样本分类。准确率(Acc)为被正确分类的样本比例或数量。特异性(Spe)为所有负例中被正确分类的比例,衡量了模型对负例的识别能力。灵敏度(Sen)为分类器预测为正确的样本占该类样本数量的比例,衡量了模型对正例样本的识别能力。准确率、敏感度和特异性公式分别为(5)~(7)。

通过表3 三种模型结果对比可以看出,通过CNN 将模型的特征提取出来,用SVM 做分类的模型的各性能指标优于SVM 与CNN。这表明在小数据心电图样本下CNN+SVM 模型具有较好的泛化能力与较高的识别率。

SVM、CNN、CNN+SVM 三种模型对心电图的分类结果如表3 所示。通过表3 可以看出,SVM、CNN 模型与CNN+SVM 相比,对于该四类数据三类指标均较低,漏诊率比较高。可以认为SVM 与CNN 模型对N、L、R、A 类的识别分类的能力相比于CNN+SVM 较差,这导致在进行心电图分类的时候会产生误诊。CNN 对数据的数量比较灵敏,在进行分类时要求每类数据的数量平衡。在本文中由于每类数据量不平衡,CNN 模型的准确率较低。但通过CNN 与SVM 结合的模型使得对于该四类数据的识别并正确分类能力也得到了明显提高,CNN+SVM 模型对该四类数据的漏诊率都较低。通过表3 可知CNN 与SVM 对A 类数据识别并正确分类的能力较差,但CNN+SVM 模型对A 类数据的识别并正确分类的能力大大提高,使得灵敏度相对于SVM、CNN 模型灵敏度分别上升了17.19%、22.40%,并且模型对正例样本的识别能力也大大增强。CNN+SVM 模型也使得A 类的特异性相对于SVM、CNN 模型特异性分别上升了3.31%、0.27%,对于负例样本的识别能力也得到了较大提高。进而使得CNN+SVM 模型N、L 两类的准确率相对于SVM、CNN 模型准确率分别上升了2.77%、3.56%。并且对于其它三类数据也有了不同程度的提升。这表明在样本分布不均衡的请况下,SVM 对数据不敏感,因此对于小数据不平衡样本的心电图数据,通过CNN+SVM 来进行数据的特征提取和分类效果更好。

从数据集中随机分成训练子集与测试子集,采用5 倍交叉验证方法对分类器进行训练,对SVM、CNN 和本文提出的CNN+SVM 分类器进行仿真对比。通过5 倍交叉验证,避免了一次随机划分带来的偶然性。

图7 三种模型混肴矩阵对比Fig.7 Comparison of mix matrices of three kinds of models

图4-6 中的灵敏度、特异性为4 类心电信号的平均值,准确率为分类模型所有判断正确的结果占总观测值的比重。图4-6 对比了CNN+SVM、CNN 和SVM 分类器的灵敏度、特异性和准确性方面的详细性能,并且分类器的最佳分类分别在3 倍、2 倍和2 倍。最佳分类结果能证明其优越性,在每个分类器在最佳分类情况下CNN+SVM 的灵敏度相对于CNN、SVM 分别提高了1.83%、4.00%,CNN+SVM 的特异性相对于CNN、SVM 分别提高了1.28%、0.59%,进而导致CNN+SVM 的准确率相对于CNN 与SVM 分别提高了1.44%、0.92%。通过图4-6 也可以发现CNN+SVM 的各项指标都比较平稳,这可以认为在不同情况下,CNN+SVM 的稳定性更好,这更加适合心电信号分类。

通过图7 可以看出,在CNN 与SVM 模型中,容易把A 类心电数据识别为N 类,并且如果增大A 类数据将导致漏诊率比较高,最终导致准确率比较低。但CNN+SVM 分类能够有效地提取A类数据的特征,使得混肴的数目大大减少,提高了A 类数据分类的灵敏度,从而使得漏诊率得到了降低。并通过图7 发现CNN+SVM 对每一类数据的漏诊率都比较低,因此更加适合心电信号分类。

3 结论

本文提出了基于CNN+SVM 模型与,给出了数据处理的相关流程,并通过实测数据进行了理论验证,结果表明:

1)通过在卷积神经神经网络(CNN)中加入Dropout 层能够有效提高模型的泛化能力,防止出现过拟合。并通过adam 优化算法进行目标函数的优化,能够得到较好的CNN 模型;

2)在小样本不平衡的心电图数据集分类中,通过CNN 来进行数据的特征提取,并用SVM 来做分类的模型,能够取得较好的泛化能力,进而提高了模型的准确率;

3)在相同数的对比结果表明,本文中CNN+SVM 模型的各项误差较小,说明更适合于小样本条件下对于心电图分类,具有较好的普适性;

4)与SVM、CNN 相比CNN+SVM 模型在不同情况下具有更好的稳定性,并且对每类数据的漏诊率都较低。因此更加适合心电数据分类。

猜你喜欢

分类器心电图准确率
动态心电图与常规心电图诊断冠心病的应用
学贯中西(6):阐述ML分类器的工作流程
心电图机检定方法分析及简化
《思考心电图之176》
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
基于朴素Bayes组合的简易集成分类器①
《思考心电图之174》
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察