目录
1、引言
2、数据库介绍(Apnea-ECG Database)
3、基于Pan-Tompkins和随机森林(RF)的睡眠呼吸暂停检测算法
3.1 算法概述
3.2 心电信号预处理及QRS波检测算法
3.3 心电信号的随机森林睡眠呼吸暂停识别
4、实验结果
4.1 心电信号预处理及QRS波检测结果
4.2 睡眠呼吸暂停分类结果
4.3 实验结果评估
参考文献
1、引言
睡眠呼吸暂停综合征(Sleep Apnea Syndrome, SAS)是一种常见睡眠障碍,涵盖阻塞性、中枢性和混合型等多种类型,以阻塞性最为常见。患者睡眠中反复出现呼吸暂停或低通气,导致身体生理功能紊乱,引发白天嗜睡、疲劳、头痛、认知障碍等,长期会增加心血管、代谢和神经系统疾病风险,严重威胁健康[1]。目前,多导睡眠监测(Polysomnography, PSG)是诊断 SAS 的金标准,可同步记录多种生理信号,全面评估睡眠和呼吸状态。但 PSG 设备昂贵、操作复杂、耗时且可能干扰患者睡眠,影响结果客观性,限制了其广泛应用[2]。
图1:睡眠呼吸暂停患者正在佩戴呼吸机
睡眠呼吸暂停事件会引发自主神经系统的显著变化,这种变化直接反映在心电信号中[3]。当呼吸暂停发生时:
-
血氧饱和度下降激活颈动脉体化学感受器
-
交感神经兴奋性增强导致心率变异性改变
-
胸腔内压剧烈波动引起R波幅度变化
-
呼吸运动缺失使ECG信号中0.15-0.4Hz频段能量降低
鉴于此,本文提出一种基于Pan-Tompkins和随机森林(Random Forest,RF)算法的睡眠呼吸暂停检测算法,通过心电(ECG)数据预处理、特征提取及模型构建训练,实现有效分类识别,旨在提供一种高效便捷的检测手段,提高诊断效率、降低成本,助力 SAS 早期筛查与诊断,具有重要临床意义。
2、数据库介绍(Apnea-ECG Database)
该数据集包含 70 条记录,分为一个包含 35 条记录的学习集(a01 至 a20,b01 至 b05,以及 c01 至 c10)和一个包含 35 条记录的测试集(x01 至 x35)。所有记录均可从本页面下载。每条记录的时长在略不足 7 小时到近 10 小时之间不等。
每条记录包含:
-
一条连续的数字化心电图(ECG)信号
-
一组呼吸暂停标注(由人类专家基于同步记录的呼吸及相关信号得出)
-
一组机器生成的 QRS 波标注(所有心跳无论类型均标记为“正常”)
此外,有八条记录(a01 至 a04, b01, 以及 c01 至 c03)额外附带了四条信号:
-
Resp C 和 Resp A:使用感应式体积描记法(inductance plethysmography)获取的胸部和腹部呼吸努力信号
-
Resp N:使用鼻热敏传感器(nasal thermistors)测量的口鼻气流信号
-
SpO2:血氧饱和度信号
3、基于Pan-Tompkins和随机森林(RF)的睡眠呼吸暂停检测算法
3.1 算法概述
本算法实现了基于Pan-Tompkins和随机森林(RF)的睡眠呼吸暂停检测算法,主要流程包括信号预处理及QRS波检测和睡眠呼吸暂停分类两个部分。其中,Pan-Tompkins算法用于信号预处理和检测QRS波,随机森林分类算法用于睡眠呼吸暂停检测。
算法流程框图如下:
图2:睡眠呼吸暂停检测算法流程框图
(1)信号预处理:通过Pan-Tompkins算法对心电信号进行预处理,可以提高QRS波和RR间隔的检测准确率,并且减少噪声干扰的影响,为后续疾病诊断和判别提供更加可靠的数据基础。
(2)Pan-Tompkins算法:利用滤波器和移动平均器来增强QRS波信号,通过阈值检测来确定QRS波的位置,在心电信号处理领域被广泛应用。
(3)睡眠呼吸暂停检测:采用随机森林分类器来判断是否存在睡眠呼吸暂停现象。通过随机选取特征子集进行训练,得到多个决策树模型,然后将这些模型组成一个随机森林分类器。
最终可以得到睡眠呼吸暂停的检测结果。整个算法的输入为心电信号,输出为睡眠呼吸暂停检测结果。
3.2 心电信号预处理及QRS波检测算法
Pam-Tompkins算法是一种经典的心电信号处理算法,用于定位和检测QRS波[4]。
图3:心电信号预处理及QRS波检测算法流程框图
相关内容详情见我博客👇
「ECG信号处理——(10)Pan-Tompkins算法(R峰检测)」2025年3月17日-CSDN博客
以下是Pan-Tompkins算法的简要步骤:
(1)心电信号预处理。利用滤波器对信号进行预处理,以消除基线偏移和高频噪声。
(2)R峰定位。对信号进行微分,然后应用一个带宽限制的移动平均滤波器。过滤掉QRS波的尖峰和高频噪声,确定R峰的位置。
(3)定位QRS波群。利用QRS波组的形态和周期性,以及R峰的位置,识别Q波与S波,然后将每个QRS波组拆分为Q-R波和R-S波。
(4)匹配QRS波群心率。通过计算QRS波群之间的时间间隔,即RR间期。
(5)后处理和重采样。最后对QRS波群进行后处理和重采样。
图4:Pan-Tompkins算法流程图
3.3 心电信号的随机森林睡眠呼吸暂停识别
随机森林(Random Forest,RF)是一种集成学习算法,核心思想是在随机的特征子集和随机的样本子集上训练多个决策树,最终利用这些决策树的投票结果或平均结果来得到最终的分类结果[5]。
图5:随机森林生成过程示意图
本文对心电特征分类采用的是随机森林算法,目的是将患有睡眠呼吸暂停综合征的数据和非睡眠呼吸暂停综合征数据分离开。本文选择了RR间期的8个时域特征。
图6:随机森林算法流程框图
随机森林的模型训练和测试步骤如下:
(1)加载a、b、c编号的数据,使用特征提取特征的函数进行特征提取,将数据的特征存储为f-a、f-b、f-c三个矩阵。
(2)合并所有数据特征,将三个矩阵合并为一个特征矩阵,然后将数据进行随机打乱消除数据之间的顺序性。
(3)构建和训练随机森林模型,将特征矩阵划分为训练集和测试集,搭建随机森林分类器并对训练集进行拟合。
(4)用随机森林模型对测试集进行预测,并将预测结果与真实标签进行对比。最后使用混淆矩阵进行模型性能的评估。
随机森林算法通过在多个随机的样本和特征集合上构建多个相互独立的决策树,提高算法的准确率和泛化能力,在分类和回归任务中都有广泛的应用。
4、实验结果
4.1 心电信号预处理及QRS波检测结果
本研究将数据集按照1:1比例划分为训练集和测试集,使用Matlab对Apnea-ECG数据库进行实验,使用交叉验证方法选择最优的模型参数,并分析模型的性能指标。
首先读取Apnea-ECG数据库。然后从标注文件里提取出标注信息,并将ECG信号数据分为1分钟的小段,将分段后的心电信号分为正常和异常两类。
图7:正常原始心电信号波形图
图8:异常原始心电信号波形图
异常心电信号通常表现为峰值振幅、持续时间和波形形态的异常变化。在呼吸暂停期间,心电信号的波形可能会出现振幅减小,时间延长等变化,而在呼吸暂停结束后这些指标会得到恢复。
心电信号预处理是对采集到的心电信号进行去噪、滤波、归一化等处理,以提高信号质量和可用性。
(1)进行带通滤波。我们设计的是一个截止频率为5-15Hz的带通滤波器。
图9:经带通滤波器处理过的正常心电信号
图10:经带通滤波器处理过的异常心电信号
信号中的噪声和杂波被去除一部分,变得平滑和清晰,有利于后续的处理和分析。
(2)进行差分运算。差分运算可以将离散时间序列中相邻时刻两个数值的差计算出来。
图11:经差分运算处理后的正常心电信号
图12:经差分运算处理后的异常心电信号
经差分运算后,快速变化的信号例如QRS波群,差分运算会导致输出信号的幅值增加。而缓慢变化的信号例如T波,差分运算会导致输出信号的幅值减小。
(3)进行平方运算。用信号的幅值的平方替换信号本身。
图13:经平方运算处理后的正常心电信号
图14:经平方运算处理后的异常心电信号
通过平方运算,使得QRS波群更加容易被检测和提取。此外,平方运算还可以增强信号中高能量成分,有助于区分QRS波群和其他信号成分。
(4)进行平均滤波处理。平滑信号并提取QRS波峰值。使用了一个长度为0.15秒的滑动窗口,对心电信号进行移动平均操作,得到平滑处理后的心电信号。该算法可以自适应调整滤波器的阈值,以适应不同心电信号的峰值大小和幅值范围。
图15:经平均滤波处理后的心电信号图
上图分别表示经过移动平均滤波和各种阈值调整后的心电信号和峰值。黑色为信号中的高频噪声。绿色为自适应阈值线,用于自适应调整QRS波的阈值。红色信号电平线,用于检测QRS波的峰值。红色圆圈表示自适应调整的QRS波阈值的位置。在平滑后的心电信号中寻找QRS波峰值位置,用于识别心电信号中的R峰位置。
(5)R波定位。在睡眠呼吸暂停过程中会导致低氧血症和高碳酸血症,通过分析QRS间隔的变化和R波的幅度变化,可以用来测量呼吸频率和周期,提供睡眠呼吸暂停的诊断信息。
下图展示了在原始ECG信号上找到的QRS脉冲信号,水平的红线表示检测到的R波位置。脉冲信号视为一种二进制信号,将QRS复合物与心率信号分离,方便进一步分析处理。
图16:正常心电信号的R波脉冲
图17:异常心电信号的R波脉冲
以上可得异常心电信号的R波脉冲幅度减小,这反映了心室收缩的减少或消失。有些R波脉冲的周期发生明显变化,反映了心室收缩的减少和异常间歇。
4.2 睡眠呼吸暂停分类结果
我们根据8个RR期间上的时域特征对数据库进行模型训练和模型测试。合并数据集特征,随机打乱数据的顺序,创建随机森林分类器。测试分类器的分类效果,使用训练好的分类器模型,在测试集上进行分类,并使用混淆矩阵评估模型的分类效果,测试结果如下。
图18:测试结果1
左上角矩阵中的1代表正常标签数据,其中1152个预测正确,108预测错误,正常信号识别率为91.4%。左上角矩阵中的8代表异常标签数据,其中665个预测正确199个预测错误,正确率为87.0%。左下角的矩阵意思是预测为1类的数据中1152个是真正的1,99个是标记为8但是预测为1的,假阴率为7.9%。
由于每次样本集都随机打乱,所以每次得到的结果都不同。
图19:测试结果2
此次的运行结果是20次运行结果中睡眠呼吸暂停识别准确率最低的。其中91.1%的正常信号进行识别,81.9%的睡眠呼吸暂停被正确识别,假阴性为11.1%。
图20:测试结果3
这次的运行结果是20次运行结果中正常信号识别准确率最低的。其中90.6%的正常信号进行识别,83.1%的睡眠呼吸暂停被正确识别,假阴性为10.4%。
进行20次重复实验,求其平均准确率,统计结果如表1所示。
表1 睡眠呼吸暂停检测结果表
编号 | 标签数目 | 正常信号识别率 | 睡眠呼吸暂停识别率 | 假阴性 |
1 | 1260 | 91.4% | 87.0% | 7.9% |
2 | 1244 | 91.1% | 81.9% | 11.1% |
3 | 1247 | 90.6% | 83.1% | 10.4% |
4 | 1250 | 91.0% | 85.6% | 9.8% |
5 | 1244 | 91.1% | 81.9% | 11.1% |
6 | 1248 | 90.8% | 84.2% | 10.9% |
7 | 1246 | 90.9% | 82.3% | 10.8% |
8 | 1256 | 91.2% | 87.1% | 8.7% |
9 | 1247 | 90.6% | 83.1% | 10.4% |
10 | 1260 | 91.4% | 87.0% | 7.9% |
11 | 1256 | 91.2% | 87.1% | 8.7% |
12 | 1244 | 91.1% | 81.9% | 11.1% |
13 | 1250 | 91.0% | 85.6% | 9.8% |
14 | 1260 | 91.4% | 87.0% | 7.9% |
15 | 1248 | 90.8% | 84.2% | 10.9% |
16 | 1247 | 90.6% | 83.1% | 10.4% |
17 | 1260 | 91.4% | 87.0% | 7.9% |
18 | 1256 | 91.2% | 87.1% | 8.7% |
19 | 1246 | 90.9% | 82.3% | 10.8% |
20 | 1250 | 91.0% | 85.6% | 9.8% |
平均 | 1251 | 91.3% | 84.7% | 9.8% |
4.3 实验结果评估
本论文设计的基于Pan-Tompkins和随机森林(RF)的睡眠呼吸暂停检测算法得到了鲁棒性和稳健性的验证。通过观察混淆矩阵,得到了比较直观的结果:该算法对正常信号识别率为91.3%,对有睡眠呼吸暂停现象发生的异常信号识别率为84.7%,假阴率为9.8%。
参考文献
[1] 陈亮,刘云,曾丽珠,朱能琴,黄道兰.便携式睡眠监测仪在阻塞性睡眠呼吸暂停低通气综合征诊断中的价值分析[J].实用中西医结合临床,2022,22(11):87-89+128.DOI:10.13638/j.issn.1671-4040.2022.11.026.
[2] Qi Pengjia,Gong Shuaikui,Jiang Nan,Dai Yanyun,Yang Jiafeng,Jiang Lurong,Tong Jijun. Mattress-Based Non-Influencing Sleep Apnea Monitoring System.[J]. Sensors (Basel, Switzerland),2023,23(7).
[3] 董孝彤,曲新亮,魏守水.用于睡眠呼吸暂停检测的心电特征稳定性分析[J].生物医学工程研究,2020,39(01):6-10.DOI:10.19529/j.cnki.1672-6278.2020.01.02.
[4] Pan J, Tompkins W J. A real-time QRS detection algorithm. IEEE Transactions on Biomedical Engineering, 1985, 32(3): 230-236
[5] Breiman, L. (2001). Random Forests. Machine Learning, 45(1), 5-32.
Tips:下一讲,我们将进一步探讨,心电信号处理与应用的其他部分。
以上就是基于Pan-Tompkins和随机森林(RF)的睡眠呼吸暂停检测算法的全部内容啦~
我们下期再见,拜拜(⭐v⭐) ~
(Ps:有代码实现需求,请见主页信息,谢谢支持!~)