随着心电图数据量快速增长,计算机辅助心电图分析也有着越来越广阔的应用需求。本文在基于导联卷积神经网络的临床心电图分类算法上提出多种策略,进一步提升其在实际应用中的性能。首先用不同的预处理方法和训练方法获得两个不同的分类器,接着用多重输出预测法来增强每个分类器的性能,最后用贝叶斯方法进行融合。测试了超过15万条心电图记录,所提方法的准确率和受试者工作特征曲线下面积(AUC)分别为85.04%和0.918 5,明显优于基于特征提取的传统方法。
引用本文: 金林鹏, 董军. 基于集成学习的临床心电图分类算法研究. 生物医学工程学杂志, 2016, 33(5): 825-833. doi: 10.7507/1001-5515.20160134 复制
引言
心电图(electrocardiogram, ECG)作为一种简便、廉价、无损的心脏相关疾病诊断手段,自20世纪以来已广泛应用于临床。然而,在用心电图进行长期监护的情形下,人工检查非常耗时和枯燥;在每天产生大量数据的体检中心,医生大部分时间都在区分正常和异常心电图,并非集中精力判读异常心电图。与此同时,随着可穿戴设备兴起,具有心电图分析功能的产品越来越具有市场竞争力。所有这些使得计算机辅助心电图分析得到广泛而深入的研究,也取得了长足进步[1-3]。
一条心电图记录由多个心拍周期组成,因此,在过去的几十年内,大量关于心拍分类的算法被提出,其主要做法是先提取临床诊断特征[4-5]或数理特征[6-7],然后再配合规则推理[8-9]或统计学习[10-13]对心拍进行分类。根据所采取的评估准则,相关文献可分为“个体内分类模式”和“个体间分类模式”两大类[14-15]。个体内分类模式被多数文献采用,其特点是训练集和测试集均包含同一个体的心拍。由于个体心拍可用于身份识别[16],所以这种分类模式的准确率往往很高,但不符合临床应用。de Chazal等[14]提出一种基于AAMI标准[17]和MIT-BIH Arrhythmias(MIT-BIH-AR)数据库[18]的个体间分类模式,其特点是训练集和测试集均由来自22条不同记录的心拍组成,一定程度上考虑了个体差异。新近发表的文献[4-5, 10, 12, 15]均采用这种分类模式,相对有效地评估了算法在临床环境下的性能。然而,基于MIT-BIH-AR数据库进行性能评估存在一定的局限性:整个数据集仅由48条时长约30 min的2导联心电图记录组成,且并非所有记录均包含相同的导联;在数据规模很小且导联不一致性的情形下,即使性能“很好”的心拍分类算法,也很难应用于实际环境。此外,在临床诊断中更重要的是给出整条心电图记录的结论,并非心拍结论。
我们的研究工作面向远程医疗和体检中心,给定一条10 s左右的12导联心电图记录(如图 1所示),先由记录分类算法进行筛选,若为异常心电图,则再交由医生进行判读,即正异常记录分类[19]。鉴于现有数据库的局限性,我们构建了中国心血管疾病数据库(Chinese Cardiovascular Disease Database, CCDD)[20],并开展相关研究工作:文献[21]重现了在MIT-BIH-AR数据库上具有高性能的心拍分类算法[6-7],并利用平均心拍技术进行正异常记录分类,测试了11 760个样本,准确率仅略高于70%;文献[4]提出一种特定疾病特征选择的心拍分类算法,采用de Chazal等建议的评估准则,其性能在相关文献[5, 10, 12, 14-15]对比中具有优势,但将其用于正异常记录分类时,准确率明显下降,仅略高于50%;文献[22]提出一种融合领域知识的正异常记录分类算法,测试了超过14万条记录,准确率为72%左右;文献[23]提出一种基于导联卷积神经网络(Lead Convolutional Neural Network, LCNN),并结合显性训练法和直接预测法的正异常记录分类算法,测试了超过15万条记录,准确率和受试者工作特征曲线下面积(area under receiver operating characteristic curve, AUC)分别为83.66%和0.908 6,是目前公开发表的最好结果。

本文在已有工作的基础上[23],首先提出一种新的监督训练方法(即隐性训练法),然后将其与传统训练方法(即显性训练法)相结合,训练出两个有差异的LCNN模型,最后用贝叶斯方法进行融合。在测试方面,提出比直接预测法效果更好的多点输出预测法,以进一步提升LCNN的分类性能。
1 方法
图 2描述了心电图记录分类算法的整体框架:原始心电图分为两路,一路先经过低通滤波和下采样,再输入到由显性训练法所得的LCNN-A模型中,采用多重输出预测法输出决策概率值;另一路则先经过带通滤波和下采样,再输入到由隐性训练法所得的LCNN-B模型中,同样采用多重输出预测法输出决策概率值;最后用贝叶斯方法融合两路输出。

1.1 预处理
为了获得两个性能差异的LCNN模型,一个有效策略是使输入数据有所差异。为此,我们首先采用两种滤波方法对同一条心电图记录进行处理,分别为低通滤波和0.5~40 Hz的带通滤波[24]。在图 2中,若预处理A采用带通滤波,而预处理B采用低通滤波,也同样可行,这里是为了使第1路和文献[23]保持一致。接着将滤波处理后的心电图记录重采样到200 Hz[25]。考虑到开始采集时的不稳定信号,我们以0.125 s为起始点截取之后9.5s数据(原始心电图记录的时长不能短于9.625 s)。另外,12个导联中仅有Ⅱ、Ⅲ、Ⅴ1、Ⅴ2、Ⅴ3、Ⅴ4、Ⅴ5、Ⅴ6是正交的,而剩余导联可由它们线性推导,因此我们仅保留这8个正交导联。最后每条心电图记录的采样点数为8×1 900(=8×200×9.5),单位为mV。
1.2 导联卷积神经网络
导联内数据(水平方向)是内容相关的,而导联间数据(垂直方向)是独立的,这是多导联心电图与二维数字图像最大的区别。基于这种特殊的结构和卷积神经网络[26]的特点,LCNN[23]应运而生,其完整结构图如图 3所示。

在图 3中,1D-Cov表示1维卷积计算,CU表示卷积单元(包括一个卷积层和一个取样层),每个导联均有3个CU,且不同导联间的CU互不相干,总共有24(=8×3)个CU。LCNN前向计算过程为:每个导联的心电图数据依次通过最适合自己的3个CU,之后汇总所有导联的信息到全连接(fully connected,FC)层,最后交由Logistic回归(LR)层输出决策概率值。在实际应用中,每个导联的CU个数可根据需要做相应调整。
本文在数值实验中采用的LCNN,其相关参数设定如下[23]:三个卷积核尺寸分别为1×21、1×13和1×9,三个取样核尺寸分别为1×7、1×6和1×6,三个特征面数分别为6、7和5;全连接层和Logistic回归层的神经元数分别为50和1;输入层的神经元数为8×1 700。
1.3 显性训练法
误差反向传播(back propagation, BP)算法[27]是最常用的神经网络训练方法,但由于它是一种局部搜索算法,因此要想获得泛化能力强的分类模型,需要有足量的训练样本。然而,无限制地增加心电图记录的数目不现实;同时正常心电图总是大量存在,而某种疾病的心电图则相对要少,即类不平衡问题是普遍存在的。
从心电图记录中截取的一段局部数据,我们称之为子记录。显然,若起始点不同,则对应的子记录在数据空间中具有不同的分布。因此,我们通过平移起始点,从一条心电图记录中截取多条子记录,并根据每类的样本数确定每类的子记录数,这样既可以增加训练样本数,又解决了类不平衡问题。另外,我们还叠加正常情况下不影响医生判读的随机信号,进一步增加训练样本数。
文献[23]基于mini-batch[28],并结合以上两种策略设计了显性训练法,其完整描述为:对于采样点数为8×1 900的心电图记录,首先随机确定起始点(取值为1~201间的任意整数),并截取一条8×1 700的子记录(每导联的起始点保持一致),然后以高概率叠加最大幅值不超过0.15 mV的随机信号,这样处理后再输入到LCNN中进行误差反向传播;当已有560个样本参与训练,就更新网络权值,再从每个校验样本中截取一条8×1 700的子记录(起始点为1),用当前分类模型测试;若此时准确率是当前最高,则保存该模型;重复以上过程,直到满足结束条件。图 4给出了完整的显性训练过程。

1.4 隐性训练法
心电图在个体间存在差异,但在某些个体间又有相似性。若校验样本不典型,即不包含全部有差异的个体,那么采用显性训练法所得的分类模型会存在一定的偏差,因为该方法是基于校验样本的测试结果来确定是否保存当前分类模型。然而,通过手工选择代表性的心电图记录作为校验样本并不容易,受限于各种现实条件。为此,我们设计一种新的监督训练方法,即隐性训练法,如图 5所示。

整个训练过程可描述为:对于采样点数为8×1 900的心电图记录,首先随机确定起始点(取值为1~201间的任意整数),并截取一条8×1 700子记录,然后以高概率叠加最大幅值不超过0.15 mV的随机信号,这样处理后再输入到LCNN进行误差反向传播;当已有560个样本参与训练,就更新网络权值,再从两次权值更新之间的每个训练样本中截取一条8×1 700的子记录(起始点为1),用当前分类模型测试,并累加测试结果;当所有样本都已参与训练,若此时准确率是当前最高,则保存当前模型;重复以上过程,直到满足结束条件。
对比图 4和图 5可知,相比显性训练法,隐性训练法没有独立的校验样本,而是从整个训练样本中选出一部分样本用于校验。虽然训练样本和校验样本均从相同的心电图记录中截取子记录,但前者的起始点随机确定,且以高概率叠加随机信号,而后者的起始点为1,且不叠加随机信号。因此,这两部分样本重合的概率很小。
本文在数值实验中,不论显性训练法还是隐性训练法,均采用惯性量和变步长的反向传播算法[29],最大训练周期为500,初始步长为0.02,步长衰减率第2、3周期为0.940 5,其余为0.99,训练目标是最大化校验集准确率。
1.5 多重输出预测法
文献[23]所采用的直接预测法是指从8×1 900心电图记录中截取一条8×1 700子记录,并直接交由LCNN进行分类。为了提高分类结果的置信度,本文提出一种新的测试方法,即多重输出预测法,如图 6所示。

整个测试过程可描述为:对于采样点数为8×1 900的心电图记录,首先截取9条8×1 700子记录(起始点分别为1、26、51、76、101、126、151、176和201),然后交由LCNN进行测试,输出9个决策概率值,最后采用平均规则求得输出值。此外,我们还可采用加权等更有效的其他计算方法。
1.6 贝叶斯方法
在本文中,我们采用贝叶斯方法[30]融合两个LCNN模型,以增强最终的分类性能:给定二分类的数据,假设两个分类器的输出可以组合,那么决策类别m可由式(1)确定
$ \left\{ \begin{array}{l} P\left( {y = j|{c_1},{c_2}} \right) = \frac{1}{2}\sum\limits_{i = 1}^2 {P\left( {y = j|{c_i}} \right)} \\ m = \mathop {\arg }\limits_{1 \le j \le M} \max \left\{ {P\left( {y = j|{c_1},{c_2}} \right)} \right\} \end{array} \right. $ |
其中P(y=j|ci)是第i个分类器ci给出属于类别j的概率值。
2 心电图数据
CCDD(http://58.210.56.164:88/ccdd)中的每条心电图记录均来自临床,标准12导联,持续时间为10~20 s,采样频率为500 Hz,诊断结论由心脏科医生给出。目前,该数据库共有179 130条心电图记录,其中CCDD[data1-943]数据集中的每条记录既有心拍结论,又有记录结论;而CCDD[data944-179130]数据集中的每条记录则仅有记录结论。
为了验证所提方法的有效性,我们按照文献[23]的做法选定训练样本和测试样本:首先去除时长不足9.625 s以及记录结论为空或无效的心电图,然后将记录结论为“0x0101”或“0x020101”或“0x020102”的心电图标注为正常样本,其他均为异常样本;接着将CCDD[data944-25693]数据集划分为训练样本、校验样本和小规模测试集,而CCDD[data25694-179130]数据集则为大规模测试集。表 1显示了整个数据集的样本分布情况。

训练样本和校验样本是针对显性训练法而言,在隐性训练法中,两者会合并。分类算法在小规模测试集上的性能仅作为参考,我们更关注其在大规模测试集上的表现。
3 数值实验
3.1 评价指标
按照医学诊断的定义,正常心电图和异常心电图分别为阴性和阳性结果。表 2描述了真实类别与决策类别的可能关系。

诊断指标包括特异性Sp、灵敏度Se、阴性预测值NPV和正确率Acc;除此以外,我们还使用AUC、约登指数r、几何平均GM数和自适应几何平均数AGM数[31]来评估算法的整体性能,计算公式如下:
$ \left\{ \begin{array}{l} {\rm{Sp = }}\frac{{{\rm{TN}}}}{{{\rm{TN + FP}}}}\\ {\rm{Se = }}\frac{{{\rm{TP}}}}{{{\rm{TP + FN}}}}\\ {\rm{NPV = }}\frac{{{\rm{TN}}}}{{{\rm{TN + FN}}}}\\ {\rm{Acc = }}\frac{{{\rm{TN + TP}}}}{{{\rm{TN + FP + FN + TP}}}} \end{array} \right. $ |
$ r = {\rm{Se + Sp}} - 1 $ |
$ GM = \sqrt {{\rm{Se \times Sp}}} $ |
$ \left\{ \begin{array}{l} {{\rm{N}}_{\rm{n}}} = \frac{{{\rm{TN + FP}}}}{{{\rm{TN + FP + FN + TP}}}}\\ AGM = \frac{{GM + {\rm{Sp \times }}{{\rm{N}}_{\rm{n}}}}}{{{\rm{1 + }}{{\rm{N}}_{\rm{n}}}}} \end{array} \right. $ |
3.2 算法评估
我们首先用两种方法训练得到两个LCNN模型,再对每个模型用两种方法进行测试。表 3和表 4给出了相应的实验结果,可知无论在哪个数据集上测试,多重输出预测法可提高每个LCNN模型的性能指标。此外,我们还发现由显性训练法和隐性训练法所得的LCNN模型各具优势,如前者拥有高AUC,而后者则有高准确率。表 5给出了两个LCNN模型的融合结果。



由表 5可知,相比单个模型,融合模型在小规模测试集和大规模测试集均取得了更好的分类性能。正异常记录分类的关键技术是尽可能提高NPV为95%前提下的Sp指标[32];由表 3和表 5可知,相比显性模型、隐性模型和文献[23],融合模型在大规模测试集上分别使这个指标提高了4.3%、9.6%和21.6%。由此验证了所提出方法的有效性。
3.3 与其他文献对比
为了进一步评估所提出方法的性能,我们将其与已公开发表的正异常记录分类算法做对比。文献[22]提出一种融合RR间期分析、QRS波群相似性分析、基于数值特征和形态特征的统计分类器、心电图典型特征(P波、T波、R波、PR间期等)分析的ECG-MTHC,可给出心电图记录的正异常结论。另外,鉴于目前相关研究工作不多,本文同样基于现有的心拍分类技术构建一个正异常记录分类器。文献[15]提出一种融合小波变换、独立成分分析、主成分分析、RR间期特征、支持向量机和多导联融合的心拍分类算法,在MIT-BIH-AR数据库上进行评估,其个体内分类模式和个体间分类模式的准确率分别为99.3%和86.4%,是迄今为止最好的结果之一。我们首先利用人工标注从CCDD[data1-943]数据集中截取每条心电图记录上的心拍,然后按照文献[15]所提方法训练一个心拍分类器。在测试阶段,首先利用文献[33]所提方法检测一条心电图记录上的所有R波,然后截取心拍并进行测试,最后采用平均心拍法(计算所有心拍的平均决策概率值,以此确定记录结论)[21]和异常优先法(若存在异常心拍,则整条记录即为异常)[34]确定当前记录的正异常结论。这两种测试模型分别记为YeC[Avg]和YeC[Bias]。
表 6给出了不同分类模型在大规模测试集上的实验结果,其中11 176条心电图记录由于无法提取出ECG-MTHC所需要的特征,故无法给出记录结论。为了公平比较,我们给出其他分类模型在相同数据集上的测试结果。由表 6可知,YeC[Avg]和YeC[Bias]表现欠佳,其准确率均不超过50%,同文献[4]的测试结果类似;ECG-MTHC表现相对不错,其准确率为72.49%。相比而言,本文所提方法除了Se稍低外,其他所有性能指标均比其他模型要高,准确率更是达到了85.08%。

事实上,文献[15]所提方法的不少步骤并不符合临床实际,如经过5~12 Hz带通滤波,心电图记录中的P波、T波等重要的临床诊断信息均被去除,显然不利于后续诊断。这个问题在仅有48条记录的MIT-BIH-AR数据库上被掩盖,但在拥有十几万条记录的CCDD数据库上暴露无遗。另外,该方法所涉及的不少参数针对MIT-BIH-AR数据库进行调整,显然并不适用于所有的数据集。这也是不少公开发表论文的共同问题:高分类性能仅限于标准数据库,而不能推广到实际应用[21]。
2012年Hakacova等[35]对市场上心电图设备的自动诊断结果进行统计分析,总共统计了576例心电图,发现Philips Medical Systems准确率仅有80%,Draeger Medical Systems准确率仅有75%,而3名普通医生的平均判读准确率为85%。本文所提方法在超过15万条心电图记录上的准确率为85.04%,具有一定的参考和应用价值。
4 结论
本文在基于LCNN的临床心电图分类算法上融入集成学习思想,包括不同的预处理方法、不同的训练方法以及多重输出预测法。通过测试超过15万条心电图记录,所提方法的准确率和AUC分别为85.04%和0.918 5。
除了滤波方法外,小波变换、傅立叶变换等均可用于数据预处理;除了不同的校验方法,不同的网络结构、错分代价等均能使训练所得的LCNN模型有所差异。这些都是我们下一步要开展的研究工作。
引言
心电图(electrocardiogram, ECG)作为一种简便、廉价、无损的心脏相关疾病诊断手段,自20世纪以来已广泛应用于临床。然而,在用心电图进行长期监护的情形下,人工检查非常耗时和枯燥;在每天产生大量数据的体检中心,医生大部分时间都在区分正常和异常心电图,并非集中精力判读异常心电图。与此同时,随着可穿戴设备兴起,具有心电图分析功能的产品越来越具有市场竞争力。所有这些使得计算机辅助心电图分析得到广泛而深入的研究,也取得了长足进步[1-3]。
一条心电图记录由多个心拍周期组成,因此,在过去的几十年内,大量关于心拍分类的算法被提出,其主要做法是先提取临床诊断特征[4-5]或数理特征[6-7],然后再配合规则推理[8-9]或统计学习[10-13]对心拍进行分类。根据所采取的评估准则,相关文献可分为“个体内分类模式”和“个体间分类模式”两大类[14-15]。个体内分类模式被多数文献采用,其特点是训练集和测试集均包含同一个体的心拍。由于个体心拍可用于身份识别[16],所以这种分类模式的准确率往往很高,但不符合临床应用。de Chazal等[14]提出一种基于AAMI标准[17]和MIT-BIH Arrhythmias(MIT-BIH-AR)数据库[18]的个体间分类模式,其特点是训练集和测试集均由来自22条不同记录的心拍组成,一定程度上考虑了个体差异。新近发表的文献[4-5, 10, 12, 15]均采用这种分类模式,相对有效地评估了算法在临床环境下的性能。然而,基于MIT-BIH-AR数据库进行性能评估存在一定的局限性:整个数据集仅由48条时长约30 min的2导联心电图记录组成,且并非所有记录均包含相同的导联;在数据规模很小且导联不一致性的情形下,即使性能“很好”的心拍分类算法,也很难应用于实际环境。此外,在临床诊断中更重要的是给出整条心电图记录的结论,并非心拍结论。
我们的研究工作面向远程医疗和体检中心,给定一条10 s左右的12导联心电图记录(如图 1所示),先由记录分类算法进行筛选,若为异常心电图,则再交由医生进行判读,即正异常记录分类[19]。鉴于现有数据库的局限性,我们构建了中国心血管疾病数据库(Chinese Cardiovascular Disease Database, CCDD)[20],并开展相关研究工作:文献[21]重现了在MIT-BIH-AR数据库上具有高性能的心拍分类算法[6-7],并利用平均心拍技术进行正异常记录分类,测试了11 760个样本,准确率仅略高于70%;文献[4]提出一种特定疾病特征选择的心拍分类算法,采用de Chazal等建议的评估准则,其性能在相关文献[5, 10, 12, 14-15]对比中具有优势,但将其用于正异常记录分类时,准确率明显下降,仅略高于50%;文献[22]提出一种融合领域知识的正异常记录分类算法,测试了超过14万条记录,准确率为72%左右;文献[23]提出一种基于导联卷积神经网络(Lead Convolutional Neural Network, LCNN),并结合显性训练法和直接预测法的正异常记录分类算法,测试了超过15万条记录,准确率和受试者工作特征曲线下面积(area under receiver operating characteristic curve, AUC)分别为83.66%和0.908 6,是目前公开发表的最好结果。

本文在已有工作的基础上[23],首先提出一种新的监督训练方法(即隐性训练法),然后将其与传统训练方法(即显性训练法)相结合,训练出两个有差异的LCNN模型,最后用贝叶斯方法进行融合。在测试方面,提出比直接预测法效果更好的多点输出预测法,以进一步提升LCNN的分类性能。
1 方法
图 2描述了心电图记录分类算法的整体框架:原始心电图分为两路,一路先经过低通滤波和下采样,再输入到由显性训练法所得的LCNN-A模型中,采用多重输出预测法输出决策概率值;另一路则先经过带通滤波和下采样,再输入到由隐性训练法所得的LCNN-B模型中,同样采用多重输出预测法输出决策概率值;最后用贝叶斯方法融合两路输出。

1.1 预处理
为了获得两个性能差异的LCNN模型,一个有效策略是使输入数据有所差异。为此,我们首先采用两种滤波方法对同一条心电图记录进行处理,分别为低通滤波和0.5~40 Hz的带通滤波[24]。在图 2中,若预处理A采用带通滤波,而预处理B采用低通滤波,也同样可行,这里是为了使第1路和文献[23]保持一致。接着将滤波处理后的心电图记录重采样到200 Hz[25]。考虑到开始采集时的不稳定信号,我们以0.125 s为起始点截取之后9.5s数据(原始心电图记录的时长不能短于9.625 s)。另外,12个导联中仅有Ⅱ、Ⅲ、Ⅴ1、Ⅴ2、Ⅴ3、Ⅴ4、Ⅴ5、Ⅴ6是正交的,而剩余导联可由它们线性推导,因此我们仅保留这8个正交导联。最后每条心电图记录的采样点数为8×1 900(=8×200×9.5),单位为mV。
1.2 导联卷积神经网络
导联内数据(水平方向)是内容相关的,而导联间数据(垂直方向)是独立的,这是多导联心电图与二维数字图像最大的区别。基于这种特殊的结构和卷积神经网络[26]的特点,LCNN[23]应运而生,其完整结构图如图 3所示。

在图 3中,1D-Cov表示1维卷积计算,CU表示卷积单元(包括一个卷积层和一个取样层),每个导联均有3个CU,且不同导联间的CU互不相干,总共有24(=8×3)个CU。LCNN前向计算过程为:每个导联的心电图数据依次通过最适合自己的3个CU,之后汇总所有导联的信息到全连接(fully connected,FC)层,最后交由Logistic回归(LR)层输出决策概率值。在实际应用中,每个导联的CU个数可根据需要做相应调整。
本文在数值实验中采用的LCNN,其相关参数设定如下[23]:三个卷积核尺寸分别为1×21、1×13和1×9,三个取样核尺寸分别为1×7、1×6和1×6,三个特征面数分别为6、7和5;全连接层和Logistic回归层的神经元数分别为50和1;输入层的神经元数为8×1 700。
1.3 显性训练法
误差反向传播(back propagation, BP)算法[27]是最常用的神经网络训练方法,但由于它是一种局部搜索算法,因此要想获得泛化能力强的分类模型,需要有足量的训练样本。然而,无限制地增加心电图记录的数目不现实;同时正常心电图总是大量存在,而某种疾病的心电图则相对要少,即类不平衡问题是普遍存在的。
从心电图记录中截取的一段局部数据,我们称之为子记录。显然,若起始点不同,则对应的子记录在数据空间中具有不同的分布。因此,我们通过平移起始点,从一条心电图记录中截取多条子记录,并根据每类的样本数确定每类的子记录数,这样既可以增加训练样本数,又解决了类不平衡问题。另外,我们还叠加正常情况下不影响医生判读的随机信号,进一步增加训练样本数。
文献[23]基于mini-batch[28],并结合以上两种策略设计了显性训练法,其完整描述为:对于采样点数为8×1 900的心电图记录,首先随机确定起始点(取值为1~201间的任意整数),并截取一条8×1 700的子记录(每导联的起始点保持一致),然后以高概率叠加最大幅值不超过0.15 mV的随机信号,这样处理后再输入到LCNN中进行误差反向传播;当已有560个样本参与训练,就更新网络权值,再从每个校验样本中截取一条8×1 700的子记录(起始点为1),用当前分类模型测试;若此时准确率是当前最高,则保存该模型;重复以上过程,直到满足结束条件。图 4给出了完整的显性训练过程。

1.4 隐性训练法
心电图在个体间存在差异,但在某些个体间又有相似性。若校验样本不典型,即不包含全部有差异的个体,那么采用显性训练法所得的分类模型会存在一定的偏差,因为该方法是基于校验样本的测试结果来确定是否保存当前分类模型。然而,通过手工选择代表性的心电图记录作为校验样本并不容易,受限于各种现实条件。为此,我们设计一种新的监督训练方法,即隐性训练法,如图 5所示。

整个训练过程可描述为:对于采样点数为8×1 900的心电图记录,首先随机确定起始点(取值为1~201间的任意整数),并截取一条8×1 700子记录,然后以高概率叠加最大幅值不超过0.15 mV的随机信号,这样处理后再输入到LCNN进行误差反向传播;当已有560个样本参与训练,就更新网络权值,再从两次权值更新之间的每个训练样本中截取一条8×1 700的子记录(起始点为1),用当前分类模型测试,并累加测试结果;当所有样本都已参与训练,若此时准确率是当前最高,则保存当前模型;重复以上过程,直到满足结束条件。
对比图 4和图 5可知,相比显性训练法,隐性训练法没有独立的校验样本,而是从整个训练样本中选出一部分样本用于校验。虽然训练样本和校验样本均从相同的心电图记录中截取子记录,但前者的起始点随机确定,且以高概率叠加随机信号,而后者的起始点为1,且不叠加随机信号。因此,这两部分样本重合的概率很小。
本文在数值实验中,不论显性训练法还是隐性训练法,均采用惯性量和变步长的反向传播算法[29],最大训练周期为500,初始步长为0.02,步长衰减率第2、3周期为0.940 5,其余为0.99,训练目标是最大化校验集准确率。
1.5 多重输出预测法
文献[23]所采用的直接预测法是指从8×1 900心电图记录中截取一条8×1 700子记录,并直接交由LCNN进行分类。为了提高分类结果的置信度,本文提出一种新的测试方法,即多重输出预测法,如图 6所示。

整个测试过程可描述为:对于采样点数为8×1 900的心电图记录,首先截取9条8×1 700子记录(起始点分别为1、26、51、76、101、126、151、176和201),然后交由LCNN进行测试,输出9个决策概率值,最后采用平均规则求得输出值。此外,我们还可采用加权等更有效的其他计算方法。
1.6 贝叶斯方法
在本文中,我们采用贝叶斯方法[30]融合两个LCNN模型,以增强最终的分类性能:给定二分类的数据,假设两个分类器的输出可以组合,那么决策类别m可由式(1)确定
$ \left\{ \begin{array}{l} P\left( {y = j|{c_1},{c_2}} \right) = \frac{1}{2}\sum\limits_{i = 1}^2 {P\left( {y = j|{c_i}} \right)} \\ m = \mathop {\arg }\limits_{1 \le j \le M} \max \left\{ {P\left( {y = j|{c_1},{c_2}} \right)} \right\} \end{array} \right. $ |
其中P(y=j|ci)是第i个分类器ci给出属于类别j的概率值。
2 心电图数据
CCDD(http://58.210.56.164:88/ccdd)中的每条心电图记录均来自临床,标准12导联,持续时间为10~20 s,采样频率为500 Hz,诊断结论由心脏科医生给出。目前,该数据库共有179 130条心电图记录,其中CCDD[data1-943]数据集中的每条记录既有心拍结论,又有记录结论;而CCDD[data944-179130]数据集中的每条记录则仅有记录结论。
为了验证所提方法的有效性,我们按照文献[23]的做法选定训练样本和测试样本:首先去除时长不足9.625 s以及记录结论为空或无效的心电图,然后将记录结论为“0x0101”或“0x020101”或“0x020102”的心电图标注为正常样本,其他均为异常样本;接着将CCDD[data944-25693]数据集划分为训练样本、校验样本和小规模测试集,而CCDD[data25694-179130]数据集则为大规模测试集。表 1显示了整个数据集的样本分布情况。

训练样本和校验样本是针对显性训练法而言,在隐性训练法中,两者会合并。分类算法在小规模测试集上的性能仅作为参考,我们更关注其在大规模测试集上的表现。
3 数值实验
3.1 评价指标
按照医学诊断的定义,正常心电图和异常心电图分别为阴性和阳性结果。表 2描述了真实类别与决策类别的可能关系。

诊断指标包括特异性Sp、灵敏度Se、阴性预测值NPV和正确率Acc;除此以外,我们还使用AUC、约登指数r、几何平均GM数和自适应几何平均数AGM数[31]来评估算法的整体性能,计算公式如下:
$ \left\{ \begin{array}{l} {\rm{Sp = }}\frac{{{\rm{TN}}}}{{{\rm{TN + FP}}}}\\ {\rm{Se = }}\frac{{{\rm{TP}}}}{{{\rm{TP + FN}}}}\\ {\rm{NPV = }}\frac{{{\rm{TN}}}}{{{\rm{TN + FN}}}}\\ {\rm{Acc = }}\frac{{{\rm{TN + TP}}}}{{{\rm{TN + FP + FN + TP}}}} \end{array} \right. $ |
$ r = {\rm{Se + Sp}} - 1 $ |
$ GM = \sqrt {{\rm{Se \times Sp}}} $ |
$ \left\{ \begin{array}{l} {{\rm{N}}_{\rm{n}}} = \frac{{{\rm{TN + FP}}}}{{{\rm{TN + FP + FN + TP}}}}\\ AGM = \frac{{GM + {\rm{Sp \times }}{{\rm{N}}_{\rm{n}}}}}{{{\rm{1 + }}{{\rm{N}}_{\rm{n}}}}} \end{array} \right. $ |
3.2 算法评估
我们首先用两种方法训练得到两个LCNN模型,再对每个模型用两种方法进行测试。表 3和表 4给出了相应的实验结果,可知无论在哪个数据集上测试,多重输出预测法可提高每个LCNN模型的性能指标。此外,我们还发现由显性训练法和隐性训练法所得的LCNN模型各具优势,如前者拥有高AUC,而后者则有高准确率。表 5给出了两个LCNN模型的融合结果。



由表 5可知,相比单个模型,融合模型在小规模测试集和大规模测试集均取得了更好的分类性能。正异常记录分类的关键技术是尽可能提高NPV为95%前提下的Sp指标[32];由表 3和表 5可知,相比显性模型、隐性模型和文献[23],融合模型在大规模测试集上分别使这个指标提高了4.3%、9.6%和21.6%。由此验证了所提出方法的有效性。
3.3 与其他文献对比
为了进一步评估所提出方法的性能,我们将其与已公开发表的正异常记录分类算法做对比。文献[22]提出一种融合RR间期分析、QRS波群相似性分析、基于数值特征和形态特征的统计分类器、心电图典型特征(P波、T波、R波、PR间期等)分析的ECG-MTHC,可给出心电图记录的正异常结论。另外,鉴于目前相关研究工作不多,本文同样基于现有的心拍分类技术构建一个正异常记录分类器。文献[15]提出一种融合小波变换、独立成分分析、主成分分析、RR间期特征、支持向量机和多导联融合的心拍分类算法,在MIT-BIH-AR数据库上进行评估,其个体内分类模式和个体间分类模式的准确率分别为99.3%和86.4%,是迄今为止最好的结果之一。我们首先利用人工标注从CCDD[data1-943]数据集中截取每条心电图记录上的心拍,然后按照文献[15]所提方法训练一个心拍分类器。在测试阶段,首先利用文献[33]所提方法检测一条心电图记录上的所有R波,然后截取心拍并进行测试,最后采用平均心拍法(计算所有心拍的平均决策概率值,以此确定记录结论)[21]和异常优先法(若存在异常心拍,则整条记录即为异常)[34]确定当前记录的正异常结论。这两种测试模型分别记为YeC[Avg]和YeC[Bias]。
表 6给出了不同分类模型在大规模测试集上的实验结果,其中11 176条心电图记录由于无法提取出ECG-MTHC所需要的特征,故无法给出记录结论。为了公平比较,我们给出其他分类模型在相同数据集上的测试结果。由表 6可知,YeC[Avg]和YeC[Bias]表现欠佳,其准确率均不超过50%,同文献[4]的测试结果类似;ECG-MTHC表现相对不错,其准确率为72.49%。相比而言,本文所提方法除了Se稍低外,其他所有性能指标均比其他模型要高,准确率更是达到了85.08%。

事实上,文献[15]所提方法的不少步骤并不符合临床实际,如经过5~12 Hz带通滤波,心电图记录中的P波、T波等重要的临床诊断信息均被去除,显然不利于后续诊断。这个问题在仅有48条记录的MIT-BIH-AR数据库上被掩盖,但在拥有十几万条记录的CCDD数据库上暴露无遗。另外,该方法所涉及的不少参数针对MIT-BIH-AR数据库进行调整,显然并不适用于所有的数据集。这也是不少公开发表论文的共同问题:高分类性能仅限于标准数据库,而不能推广到实际应用[21]。
2012年Hakacova等[35]对市场上心电图设备的自动诊断结果进行统计分析,总共统计了576例心电图,发现Philips Medical Systems准确率仅有80%,Draeger Medical Systems准确率仅有75%,而3名普通医生的平均判读准确率为85%。本文所提方法在超过15万条心电图记录上的准确率为85.04%,具有一定的参考和应用价值。
4 结论
本文在基于LCNN的临床心电图分类算法上融入集成学习思想,包括不同的预处理方法、不同的训练方法以及多重输出预测法。通过测试超过15万条心电图记录,所提方法的准确率和AUC分别为85.04%和0.918 5。
除了滤波方法外,小波变换、傅立叶变换等均可用于数据预处理;除了不同的校验方法,不同的网络结构、错分代价等均能使训练所得的LCNN模型有所差异。这些都是我们下一步要开展的研究工作。