世界卫生组织(world health organization,WHO)官网显示,心血管疾病(CVDs)是全球的第一大死因.据估计,2019年有1 790万人死于CVDs,占全球死亡人数的32%,且超过四分之三发生于中低收入的国家.WHO指出尽早发现心血管疾病,并及时开始提供咨询和药物的管理是预防和控制CVDs的重要举措.心音信号作为人体的一种生理信号,含有心脏大量的病理信息,而且这些信息来自心脏的不同部位(心室、心房、心血管以及每个瓣膜),可作为心脏病诊断的重要依据之一,且在传统的听诊辅助工作中有着悠久的历史
[1 ] .精准发现心音信号的异常对CVDs的诊断至关重要,而基于科学算法的心音分类方法能够大大提升疾病的诊断准确率.Springer等
[2 ] 提出的一种基于手机的风湿性心脏病自动诊断工具的设计,包含心音分割、特征提取、心音分类的一些算法设计,有效克服了医患比例太低的难题.因此,心音分类算法的研究具备十分重要的现实意义.
支持向量机(SVM)最初作为一个新的二分类算法被Cortes 和Vapnik
[3 ] 在1995年提出.历经多年,在其健壮的数学基础和理论支撑下,大量的研究人员将支持向量机广泛应用于各个领域,并通过多种方式不断进行算法改进,使其在具体应用中得到十分可观的分类效果.通常心音数据集中的每条信息包含了多个被提取的特征属性和是否存在心脏疾病的分类属性,属于二分类数据集.因此很多研究者将支持向量机算法应用于心音分类项目中,并取得了不错的成果,如许莉莉等
[4 ] 提出一种基于最小二乘支持向量机的心音分类方法,黄林洲等
[5 ] 提出了一种经验模式分解近似熵结合支持向量机的心音分类方法,马晶等
[6 ] 找到了一种融合梯度提升框架(LightGBM)和SVM的心音分类模型.
近年来,通过各种群智能优化算法
[7 ] (比如粒子群优化算法(PSOA)
[8 ] 、灰狼优化算法(GWOA)
[9 ] 、果蝇优化算法(FOA)
[10 ] 等)寻找SVM模型最优参数组合的方式被研究者所青睐,相比于传统的梯度下降法
[11 ] 、网格搜索法
[12 ] 易陷入局部最优的缺点,群智能优化方法更易找到全局的最优解.为了克服传统方法寻优易陷入局部最优的缺点,分别采用PSOA和GWOA进行参数寻优,构建了PSOA-SVM和GWOA-SVM 2种分类器模型.其中,为了基于PSOA-SVM获得更好的心音分类效果,提出了一个采用集成学习中的堆栈泛化(Stacking)
[13 ] 方法,融合自适应提升算法(Adaboost)
[14 ] 、随机森林(RF)
[15 ] 、PSOA-SVM的分类器模型;为提高基于GWOA-SVM的心音分类性能,利用改进后的GWOA优化SVM得到的心音分类器模型.将提出的分类器模型应用于心音数据集,并和融合前的单个分类模型以及采用传统的灰狼优化算法寻找SVM最优参数组合的分类模型相比,都表现出更好的分类效果.
1 基本理论与算法基础
采用了支持向量机(SVM)、堆栈泛化(Stacking)、粒子群优化算法(PSOA)、改良的灰狼优化算法(简记为IGWOA)4种方法,下面介绍其原理.
1.1 支持向量机(SVM)
SVM是1个有监督的二分类模型,其基本思想是寻找1个满足分类要求的最优超平面,使得该超平面既保证精度又能使得到离超平面最近样本的距离最大
[16 ] .SVM算法设计中,为处理非线性数据,使用核函数将原输入的数据样本映射到较高维空间,使样本在新的特征空间中线性可分.对线性不可分数据进行分类,可以将其基本思想理解为在新空间找到的最大边缘超平面对应于原空间中的非线性分离超曲面.根据SVM的算法原理,核参数与惩罚因子对算法效果的影响很大,通过优化算法寻找最优的参数组合至关重要.
1.2 堆栈泛化(Stacking)
集成学习是1种通过组合优化的机器学习方法
[17 ] ,一方面,可以融合几个简单模型以获得1个性能更强的组合模型;另一方面,允许研究人员在具体的应用中设计不同的组合方案达到更优的效果.Stacking可以融合多个分类器,并且把它们分为2个层级,首先,基于原始训练集采用交叉验证的方式训练多个初级分类器,从每个初级分类器得到基于原始训练集的预测结果1(类概率)与基于原始测试集的预测结果2,然后,并列合并每个初级分类器的预测结果得到新的训练集与测试集,将其作用于次级分类器,最后输出得到分类结果
[13 ] .
1.3 粒子群优化算法(PSOA)
粒子群优化算法(PSOA)
[8 ] 中赋予每个粒子2个属性:速度和位置,通过迭代方式,根据速度矢量来更新粒子群中每个粒子的位置,粒子的最终位置即最优解.算法流程可概述为:
Step 1 从一组初始粒子开始,它们随机分布在整个空间;
Step 2 计算粒子群中每个粒子的速度矢量(适应度);
Step 3 使用每个粒子的前一个位置和更新的速度来更新每个粒子的位置;
Step 4 重复以上Step 2、Step 3,迭代找到最优解.
在每次的迭代过程中,粒子会根据目前发现的最佳位置(
p b e s t )和全局最佳位置(
g b e s t )来更新自己,更新的规则可表示为式(1 ~ 2)
[18 ] :
v i = ω v i + c 1 r a n d ( ) ( p b e s t i – x i ) + c 2 r a n d ( ) ( g b e s t i – x i ) . (1)
xi =xi +vi . (2)
其中,vi 代表粒子的速度;ω 代表惯性因子(非负),较大时,展现较强的全局寻优能力,较小时,展现较强的局部寻优能力; r a n d ( ) 代表介于(0,1)之间的随机数;c1 称为个体信任参数,c2 称为社会信任参数,一般取值为2;xi 代表粒子当前的位置.
粒子群优化算法(PSOA)没有复杂的参数调节过程,搜索速度快,实现比较简单,将其应用于SVM分类模型中的参数寻优环节是个很好的选择.使用PSOA寻找SVM最优参数组合,构建PSOA-SVM分类模型应用于心音分类.为了获得更好的心音分类效果,本文提出了一种基于Stacking方法,融合Adaboost、RF、PSOA-SVM的心音分类模型.
1.4 改良的灰狼优化算法(IGWOA)
灰狼优化算法(GWOA)基于灰狼种群的社会等级概念与狩猎行为而设计
[9 ] .类似于PSOA,从1组随机分布在搜索空间的灰狼开始,通过计算每个灰狼的适应度,将适应度最好的三匹狼标记为
α 、
β 、
δ ,用于评估并定位猎物的位置,其它个体标记为
ω ,能够根据
α 、
β 、
δ 给出的信息计算它们与猎物之间的距离,然后靠近猎物,进行包围、狩猎行为,直到捕获猎物,最终捕获的猎物即最优解.
其中,靠近、包围、狩猎行为的数学模型如下.
(1)靠近、包围猎物:灰狼搜索猎物时会逐渐地接近猎物并包围它们,此过程涉及到的灰狼与猎物之间的距离 D ,灰狼个体位置向量 X (t ),位置更新得到的位置向量 X (t+1 )表示为式(3~7).
D =| C · Xp (t )– X (t )|.(3)
X (t +1)= Xp (t )– A · D .(4)
a =2–2t /M .(5)
A =2a r1 –a .(6)
C =2 r2 .(7)
其中,t 代表当前的迭代次数; Xp (t )代表猎物的位置向量;参数a 是收敛因子,在迭代过程中由2线性下降到0;M 是自定义的最大迭代次数;参数 r1 和 r2 是[0,1]中的随机向量; A 和 C 代表协同系数向量, A 是系数向量, C 为猎物提供随机的权重,避免算法结果陷入局部最优.其中,| A |<1时,灰狼集中将进行局部搜索(exploitation, 开发);| A |≥1时,灰狼之间尽量分散进行全局搜索(exploration, 勘探),因此,伴随 A 的减少,一半的迭代用来勘探,一半的迭代用来开发.
(2)狩猎:在每一次迭代中,α ,β ,δ 作为种群中适应度最好的三匹狼被保留,猎物的位置可由这由α ,β ,δ 的位置来确定,同时迫使其他搜索单位根据它们的位置信息来更新自己的位置,该行为的数学模型表示为公式(8~10).
D α = | C 1 · X α - X ( t ) | ; D β = | C 2 · X β - X ( t ) | ; D δ = | C 3 · X δ - X ( t ) | . (8)
X 1 = X α – A 1 · D α ; X 2 = X β – A 2 · D β ; X 3 = X δ – A 3 · D δ . (9)
X (t +1)=( X1 + X2 + X3 )/3.(10)
其中, Dα 、 Dβ 、 Dδ 分别代表当前候选狼与三匹最优狼之间的距离; Xα 、 Xβ 、 Xδ 分别代表当前种群里α 、β 、δ 的位置向量; C1 、 C2 、 C3 是随机向量; A1 、 A2 、 A3 是系数向量.
改良的灰狼优化算法(IGWOA)基于非线性的收敛因子策略被提出,可以有效解决GWOA全局搜索能力与局部搜索能力之间的平衡问题
[19 ] .IGWOA中改进了收敛因子计算公式,对比
公式(8) 收敛因子从线性衰减变成了非线性衰减见
式(11) .
a = 2 – 2 e t / M - 1 e - 1 p . (11)
其中,e代表自然对数的底数;p 代表衰减阶数,在0到10之间取整数,p 的取值越大a 的衰减越快.
GWOA原理简单,具备所需调整的参数少、易于实现等优点,使用GWOA寻找SVM的最优参数组合,可构建GWOA-SVM分类模型应用于心音分类.为提高该模型的分类性能,经改良得到的IGWOA具备了在迭代寻优过程中有效平衡全局搜索能力与局部搜索能力的优点,于是,本文提出了一种使用IGWOA寻找SVM的最优参数组合构建的IGWOA-SVM心音分类模型.
2 分类器模型与评价指标
为了克服传统SVM算法使用网格搜索法进行参数寻优时容易陷入的局部最优的缺陷,本节采用PSOA和GWOA两种参数寻优算法,构建了PSOA-SVM和GWOA-SVM 2种分类器模型.其中,为了基于PSOA-SVM获得更好的心音分类效果,提出了一个采用Stacking方法,融合Adaboost、RF、PSOA-SVM的分类器模型;为提高GWOA-SVM的心音分类性能,提出IGWOA-SVM分类器模型.下面给出相应的分类器模型以及分类器模型的评价指标.
2.1 分类器模型
2.1.1 Adaboost+RF+(PSOA-SVM)分类器模型
Adaboost+RF+(PSOA-SVM)分类器模型基于Stacking方法,首先采用Adaboost算法、RF算法、PSOA-SVM算法训练3个初级分类器;然后,由于次级分类器选用简单的算法模型可以降低过拟合风险,选用逻辑回归(LR)算法训练次级分类器.其框架如
图1 所示.
2.1.2 IGWOA-SVM分类器模型
IGWOA-SVM分类器模型基于改进的灰狼优化算法寻找SVM的最优参数组合而构建.改良的灰狼优化算法基于非线性的收敛因子策略提出一种改进的收敛因子计算公式(公式(14) ),衰减阶数取8,迭代寻优伊始,降低收敛因子衰减程度提高全局寻优能力以保证样本多样性,后期提高收敛因子的衰减程度提高局部寻优的精确度.使得算法在寻优时可以根据收敛因子不同的衰减程度提高相应的全局寻优或者局部寻优能力,达到了一种有效的平衡从而提升了算法的寻优能力.
IGWOA-SVM分类器模型的构建步骤可概述为以下步骤.
Step 1 从初始化一组灰狼种群开始,它们随机分布在整个空间,每个灰狼个体的位置代表了SVM中的核参数与惩罚因子;
Step 2 应用每个灰狼个体的位置信息,基于训练集建立SVM分类器,将基于测试集的分类准确率当作个体适应度;
Step 3 采用改良的灰狼优化算法迭代更新灰狼个体位置,迭代结束后返回的灰狼个体位置即最优参数组合;
Step 4 最后,将最优参数组合应用于SVM,建立IGWOA-SVM分类器模型.
2.2 评价指标
本文采用绘制混淆矩阵方式来展示并衡量每个分类模型的准确程度
[16 ] .进行二分类实验,绘制2 × 2的混淆矩阵,纵坐标代表实例的真实标签(True Label),横坐标代表分类器对实例的预测标签(Predict Label).(0,0)代表真阳性(True Positive,简记为TP),即实例本身是正样本,并且被模型预测为正样本;(1,0)代表假阳性(False Positive,简记为FP),即实例本身是负样本,但被模型预测为正样本;(0,1)代表假阴性(False Negative,简记为FN),即实例本身是正样本,但被模型预测为负样本;(1,1)代表真阴性(True Negative,简记为TN),即实例本身是负样本,并且被模型预测为负样本.其中,矩阵中的每个数值代表了对应的样本数目.混淆矩阵如
表1 所示.
依据TP, FP, FN, TN的概念,延伸出了各种评价指标,本文统计计算各个分类模型的灵敏度(Sensitivity, 也称真阳性率)、特异性(Specificity, 也称真阴性率)与准确率(Accuracy).计算如式(12~14).
Sensitivity= T P ( T P + F N ) .(12)
Specificity= T N ( T N + F P ) .(13)
Accuracy= T P + T N ( T P + F P + F N + T N ) .(14)
Sensitivity代表了实际检测出的患有心脏病的人数占总患病人数的比例;Specificity代表了实际检测出的心脏正常的人数占心脏正常总人数的比例;Accuracy则代表了分类的正确率.在实际应用中,Sensitivity与Specificity指标值越高越能够精准诊断出病情后进行及时治疗,同时也能精准排除未患病的人以免误诊.
3 实验与分析
3.1 数据集
本文用到的数据集源来自一项名为”The PhysioNet/Computing in Cardiology Challenge 2016”的国际竞赛,该竞赛提供了1个公开的心音数据库
[20 ] .采用基于隐半马尔科夫模型(HsMM)的心音分割方法
[21 ] 进行心音处理,对心音信号的每个周期提供4个阶段的心音状态,分别为第一心音S1、收缩音systole、第二心音S2、舒张音diastole.然后通过一种基于扩展特征和相关因素的心音特征提取方法
[22] 得到了拥有44个特征属性的训练特征集和测试特征集.其中训练集含有3 237条样本(2 573条正样本,664个负样本),测试集含有648条样本(515条正样本,133条负样本).针对测试集数据,提出的基于Stacking的Adaboost+RF+(PSOA-SVM)分类器模型和IGWOA-SVM分类器模型都得到了很好的分类效果,其分类效果如
图2 和
图3 所示.
3.2 实验分析
使用Python语言实现各个分类模型,实验平台选用Pycharm2020版,基于心音数据集进行各个模型的分类实验,得到各个模型分类结果的灵敏度、特异性与准确率各项评价指标如
表2 所示.
由实验结果可以得出,分别采用PSOA与GWOA寻找SVM的最优参数组合(即GWOA-SVM和PSOA-SVM)使得SVM算法准确率从93.52%分别提高到了95.68%和94.75%.
本文提出的采用Stacking方法融合不同分类器获得的2种模型Adaboost+RF+SVM和Adaboost+RF+(PSOA-SVM)也都表现出优于它们自身的分类性能,如Adaboost分类模型的准确率为89.66%,RF分类模型的准确率为94.44%,SVM分类模型的准确率为93.52%,而融合以上3种算法的Adaboost+RF+SVM分类模型的准确率达到了95.68%,高于它们自身的分类准确率.而基于Stacking的Adaboost+RF+(PSOA-SVM)分类器模型在心音分类中的表现更优秀,对比融合的模型中的个体分类器,其灵敏度、特异性以及准确率都得到了很大的提升,灵敏度达到了96.7%,分类准确率达到了97.38%,尤其是特异度达到了100%.同时,基于Stacking方法的分类模型稳定性比较强,可以稍作修改作推广应用,为处理心音分类问题提供解决方案.
提出的另一个分类器模型IGWOA-SVM的分类效果也明显优于传统的GWOA-SVM分类器模型下的分类效果,其特异性也达到了100%,灵敏度提高了3.3%,分类准确率达到了98.83%,甚至优于基于Stacking的Adaboost+RF+(PSOA-SVM)分类器模型.
4 结语
通过心音数据集实验结果分析,提出的2种心音分类器模型分别将分类准确率提高至97.38%和98.83%,尤其它们的特异性都达到了100%,这为临床上对CVDs的辅助诊断提供了有效的自动分类方法.然而,如何从心音信号所携带的丰富的病理信息中提取到多种疾病的分类信息,传统的二分类算法已经无法满足此类需求,因此,未来探求性能优良的多分类模型,才能更好地应用于实际.