周孟然 张 黎
(安徽理工大学电气与信息工程学院 安徽淮南 232000)
心脏病、恶性肿瘤和脑血管疾病是人类死亡的三大原因,其中心脏病是造成人类死亡的第一原因。心脏病往往都伴随着心律失常的出现。目前,诊断心律失常的诊断最为常见的工具为心电图,医生通过观察患者的心电图对患者进行诊断。
当前对于心电信号的识别方法主要分为两种:第一种的依据为根据波形形状进行识别,第二种的依据为根据波的特征进行识别。根据心电信号波形识别主要时依据心电信号波形的幅值,波峰的宽度,各个波峰的个数等,再借助医学知识进行判断。而根据心电信号波形的特征进行识别是目前最常用的方法,其主要步骤都为数据预处理,心拍的识别与提取,特征选择和分类识别。
随着机器学习的发展,智能群优化算法的出现极大推动了机器学习的进程。文章将采用CABC(混沌人工蜂群算法)对SVM的参数c和g进行优化,然后对心电信号的4种典型心拍正常心拍、右束支阻滞、左束支阻滞和室性早搏进行识别诊断。
人工蜂群算法是最近提出的一种模仿蜂群运行方式的优化算法。ABC算法探索能力优秀,但局部开发能力不强。利用混沌序列的优点改进的混沌蜂群算法被提出应用。文章使用的混沌蜂群算法优化支持向量积基本步骤如下:
(1)初始化各参数。输入蜂群大小为sn,最大搜索次数为Lm和循环次数maxN等。
(2)设置适应度函数。将分类的错误率最低为目标设计的蜂群的适应度函数如下式:
(1)
其中,acc为训练样本的分类正确率。
(3)雇佣蜂阶段。雇佣蜂在每个食物源周围进行搜索。
(4)观察蜂阶段。分析各个雇佣蜂提供的信息, 并计算适应度从而生成新的种群位置。
(5)混沌局部搜索阶段。按下列式进行混沌局部搜索。
chi+1=4*chi*(1-chi),i-1,2,···,K
(2)
CHi=LB+chi*(UB-LB),i=1,2,···,K
(3)
Vi=(1-λ)Xb+λ*CHi,i=1,2,···,K
(4)
(5)
其中,混沌变量chi∈(0,1),K为混沌序列长度,LB为定义域的下限变量,UB为定义域的上限变量,λ为收缩因子,maxN为最大迭代数,n为当前迭代数。
(6)判定阶段。判断当前的搜索次数是否小于步骤1 中的Lm,如果小于Lm继续返回步骤(2)继续执行;如果大与Lm则继续判断食物源是否更加优秀,若没有则放弃该食物源。
(7)优化步骤完成,SVM分类器以CABC算法输出结果也就是最优的c和g进行对心拍的分类。
实验采用是美国麻省理工学院的MIT-BIH心电数据库中的数据。该数据库采集自47个人的ECG信号,每条有30min。
ECG数据在输入CABC-SVM模型前,先对ECG用bior2.6为小波基对心电信号进行6级分解与重构去除原始心电信号中的噪声与基线漂移。图1和图2分别为去噪前后ECG信号波形。
用R波的检测算法对ECG进行R波的定位,之后对R波之前的99个点与R波之后的150个点共250个点进行采样。最后对采样好的点利用db6小波基进行5阶小波分解和2倍下采样后可得到25个特征。
该研究工作选取正常心拍(N)、右束支阻滞(R)、左束支阻滞(L)和室性早搏(V)4种心拍为研究对象。选取其中具有代表性的20 000个心拍,每种心拍5000个。将所有心拍打乱后用随机选取的方法把心拍数据按1:1的比例分为测试集与训练集。
仿真实验采用的电脑操作系统为win10,硬件条件为英特尔酷睿i5处理器、8GB内存,利用MATLAB R2016b仿真软件对该实验算法对数据进行仿真调试。
图1 ECG数据原始信号心电图
图2 ECG数据小波去噪后心电图
将处理好的4种心拍的数据作为输入,4种心拍诊断结果为标签,对ECG心拍进行诊断。CABC的初始蜂群大小为10,食物源数量为20个,食物源连续更新限制次数为100,最大循环次数为10代,SVM的两个参数c与g的搜索区间为的区间[0.01,100]。
在心拍诊断结果的评估中,通常使用以下4个标准测量指标:灵敏度(Sen),特异性(Spe),正检测率(Pp)和准确率(Acc)为评价体系。混淆矩阵表示分类模型的诊断结果的详细信息。
表1 CABC-SVM心拍分类混淆矩阵
由表1可知,利用CABC-SVM对心拍的分类整体准确率达到99.72%(9 972/10 000),各心拍的灵敏度、特异性、正检测率也获得了优秀的效果,证明将CABC-SVM应用到心律失常诊断上是切实有效的。
为了验证CABC-SVM对心律失常诊断的有效性,文章将会用CABC-SVM算法与GWO(灰狼优化算法)、GA(遗传算法)ABC和PSO(粒子群算法)算法对SVM优化后在心律失常诊断效果进行对比。为保证实验条件的相对统一,初始种群大小都设为20 ,迭代次数设为10,然后对 ECG心拍数据进行诊断。表2、表3分别为未对心拍数据进行[0,1]归一化和进行了[0,1]归一化后的仿真结果,由两个表对比结果可知,除GWO-SVM外,是否进行数据的[0,1]归一化对心拍的分类精度影响不大。但在数据并未进行归一化的情况下,由于R波附近的点的特征值远大与其他的点的特征值的缘故,测试集的效果的计算量的增加,造成算法的训练时间大大增加,而GWO-SVM的训练集准确率100%,而测试集的准确率为43.23%,发生了过拟合现象。
表2 各算法未归一化的分类结果
表3 各算法归一化的分类结果
表4是归一化后,SVM、GWO-SVM、ABC-SVM、PSO-SVM和GA-SVM五种算法与文章所述算法的识别结果。评价的指标为灵敏度、总体准确率和时间。发现文章所述算法CABC-SVM的灵敏度更高、总体准确率更好、速度更快。
表4 各算法最终分类结果对比
文章对心律失常分类的算法进行了深入的研究后,提出了CABC-SVM的分类模型应用于心律失常诊断中,在与其他五种算法模型进行对比后发现CABC-SVM能够准确、快速的完成对心律失常数据的诊断。对MIT-BIH数据库中的20 000心拍进行测试后,测试集准确率达到99.72%。文章提出的CABC-SVM方法在心律失常的诊断方面有着优越的性能。