基础2-用卷积神经网络进行颅内和头皮脑电图数据分析的广义癫痫预测

news2024/11/19 20:39:46

A Generalised Seizure Prediction with Convolutional Neural Networks for Intracranial and Scalp Electroencephalogram Data Analysis

为了改善耐药癫痫和强直性癫痫患者的生活,癫痫预测作为最具挑战性的预测数据分析工作之一已引起越来越多的关注。许多杰出的工作报告了在提供敏感的间接(警告系统)或直接(交互式神经刺激)控制难治性癫痫方面的巨大成果,其中一些取得了很高的性能。然而,许多工作对每个患者进行大量手工特征提取和/或精心定制的特征工程,以实现对特定数据集的极高灵敏度和低错误预测率。如果使用不同的数据集,这限制了他们的方法的优势。在本文中,我们将卷积神经网络(cnn)应用于不同的颅内和头皮脑电图(EEG)数据集,并提出了一种广义的回顾性和患者特异性癫痫预测方法。我们利用短时傅里叶变换(STFT)对30秒脑电图窗口进行频域和时域信息提取。然后对整个频率范围内的STFT组件应用标准化步骤,以防止高频特征受到低频特征的影响。采用卷积神经网络模型进行特征提取和分类,分离发作前段和发作间段。该方法在弗莱堡医院颅内脑电图(iEEG)数据集、波士顿儿童医院-麻省理工学院头皮脑电图(sEEG)数据集和Kaggle美国癫痫学会发作预测挑战数据集上分别实现了81.4%、81.2%、82.3%的灵敏度和0.06、0.16、0.22/h的假预测率(FPR)。对于所有三个数据集中的大多数患者,我们的预测方法在统计学上也优于非特异性随机预测器。

1 introduction

我们正在寻找一种可以应用于所有具有最小特征工程的患者的方法。众所周知,神经网络具有从原始输入数据中提取特征以执行分类任务的能力。在这项工作中,我们将部署一个卷积神经网络来预测癫痫发作。

本工作的主要贡献是:(1)提出了一种合适的方法将原始脑电图数据预处理成适合卷积神经网络的形式;(2)提出了一种利用最小特征工程帮助卷积神经网络更好地完成癫痫预测任务的指导方针。为了证明我们方法的优势,我们将对来自两个不同数据集的所有患者使用相同的预处理技术和卷积神经网络配置:弗赖堡医院颅内脑电图(iEEG)数据集和波士顿-麻省理工学院儿童医院(CHB-MIT)头皮脑电图(sEEG)数据集。

2 方法

A.数据集

在这项工作中使用了三个数据集:弗赖堡医院数据集[11],CHB-MIT数据集[20]和Kaggle美国癫痫学会癫痫预测挑战数据集[21]

Freiburg数据集包括21例难治性癫痫患者的颅内脑电图(iEEG)记录。由于数据集缺乏可用性,我们只能使用来自13名患者的数据。使用256hz的采样率记录这13例患者的iEEG信号。在该数据集中,有来自6个选定接触者的6个录音通道,其中3个来自发病地区,另外3个来自偏远地区。对于每个患者,至少有50分钟的产前数据和24小时的间歇期。关于Freiburg数据集的更多详细信息可以在[6]中找到。

CHB-MIT数据集包含23例儿童头皮脑电图(sEEG)数据,连续记录844小时,163例癫痫发作。采用22个电极以256hz[20]的采样率采集头皮脑电信号。我们将发作间隔期定义为发作前和发作结束后至少4小时。在这个数据集中,有多次癫痫发作发生在彼此附近的情况。对于癫痫发作预测任务,我们感兴趣的是预测主要的癫痫发作。因此,对于距离上一次发作30分钟以内的癫痫发作,我们将其视为仅一次发作,并将前一次发作的发作作为联合发作的发作。此外,我们只考虑每天发作少于10次的患者进行预测任务,因为对于平均每2小时发作一次的患者来说,执行预测任务并不是很关键。根据上述定义和考虑,有13例患者有足够的数据(至少3次前驱癫痫发作和3个间歇小时)。

Kaggle癫痫发作预测挑战的数据集有5只犬和2名患者的48次癫痫发作和627.7小时间歇记录[21]的iEEG数据。以400hz采样率记录16个植入电极的犬脑电信号。记录的两名患者的iEEG数据来自15个深度电极(患者1)和24个硬膜下电极(患者2),采样率为5khz。挑战组织者提取了赛前和间歇10分钟的片段。具体来说,对于每一次引线癫痫发作,在癫痫发作前66分钟至5分钟提取6个前突节段,间隔时间为10秒。间隔段随机选择至少一周后任何癫痫发作。

B.预处理

由于我们的工作将使用二维卷积神经网络,因此需要将原始EEG数据转换为矩阵,即。类似影像格式。转换必须能够保留脑电信号中最重要的信息。小波变换和傅立叶变换是将时间序列脑电图信号转换成图像的常用方法。

它们也被用作癫痫发作检测和预测的有效特征提取方法。本文利用短时傅里叶变换将原始脑电图信号转换为由频率轴和时间轴组成的二维矩阵。我们使用30秒的脑电图窗长。Freiburg数据集和CHB-MIT数据集的大部分EEG记录受到50 Hz电力线噪声的污染(见图1a)。

在频域,如果工频为50hz,则排除频率范围为47 ~ 53hz和97 ~ 103hz的部件,如果工频为60hz,则排除频率范围为57 ~ 63hz和117 ~ 123hz的部件,可以方便有效地去除工频噪声。直流元件(0hz)也被移除。

 

图1b为去除电源线噪声后30秒窗口的STFT。

卷积神经网络的一个挑战是数据集的不平衡,即间隔记录比前记录多得多。例如,在Freiburg数据集中,每名患者的发作期与发作前比率为9.5:1至15.9:1。为了克服这一问题,我们在训练阶段采用重叠技术生成更多的前突节段。特别是,我们通过沿着时间轴在每一步S上滑动一个30秒的窗口来创建额外的preictal样本用于训练(见图2)。

 

每个受试者都选择S,以便我们在训练集中的每个类(preictal或interictal)中有相似数量的样本。请注意,可能会有一些额外的发作前段与原始节段相同,但这不会有问题。

C. 卷积神经网络

近年来,卷积神经网络(CNN)被广泛用于计算机视觉和自然语言处理。在本文中,我们使用一个具有三个卷积块的CNN,如图3所述。

 

每个卷积块包括一个批处理规范化,一个带有整流线性单元(ReLU)激活函数的卷积层,以及一个最大池化层。批量归一化以确保进入卷积层的输入具有零平均数和单位方差。第一个卷积层有16个3维内核,大小为n×5×5,其中n为EEG通道数,使用的步长为1×2×2。

接下来的两个卷积块分别有32和64个卷积核,核大小为3×3,跨度为1×1,最大集合大小为2×2。在这三个卷积块之后是两个全连接层,其sigmoid激活和输出大小分别为256和2。在两个全连接层之前放置了丢弃层,丢弃率为0.5。

由于用于训练CNN的数据集非常有限,防止CNN过度拟合非常重要。首先,如上所述,我们保持CNN架构的简单和浅层。其次,我们提出了一个准则,以防止在训练神经网络时出现过度拟合。一个常见的做法是,随机分割20%的训练集作为验证集。在每个训练周期后,计算与验证有关的损失和/或准确性,以检查网络是否开始过度拟合训练集。这种方法对没有时间信息的数据集很有效,例如分类任务的图像。

对于癫痫预测,使用与训练期间不同时间段的样本来监测模型是否开始过度拟合是合理的。在本文中,我们从发作前和发作间期的样本中精心挑选了25%的样本用于验证,其余的用于训练(图4)。

 D. 后期处理

在发作间期出现孤立的假阳性是很常见的。这些孤立的错误预测可以通过使用离散时间卡尔曼滤波器来有效减少[10]。在这项工作中,我们采用了一种非常简单的方法,即k-of-n分析,以符合本文的主题--简单。特别是,对于每一个n个预测,只有在至少有k个正面预测的情况下,警报才会上升。由于我们使用30秒的窗口,CNN每30秒产生一次预测。在这项工作中,我们选择k=8,n=10。

E. 系统评价

提醒应该如何评价癫痫发作预测系统是不简单的在估计灵敏度和错误预测率等性能指标之前,需要定义癫痫预测范围(SPH)和癫痫发生期(SOP)。在本文中,我们遵循[6]中提出的SOP和SPH的定义,如图5所示。

SOP是指预计发作的时间间隔。警报和SOP开始之间的时间段被称为SPH。为了进行正确的预测,癫痫发作必须是在SPH之后和SOP之内。同样,当预测系统返回阳性但在SOP期间没有发作时,就会出现假警报。当警报上升时,它将持续到SOP的结束。关于临床使用,SPH必须足够长,以允许有足够的干预或预防措施。SPH也被称为干预时间[3]。相反,SOP不应该太长,以减少病人的焦虑。一些作品未能正确提及SPH和SOP。在[10]中,作者报告使用了30分钟的SPH,但根据他们的解释,他们隐含使用的是0分钟的SPH和30分钟的SOP,即如果报警发生在发作前30分钟内的任何一点,就被认为是成功预测。同样,[12]中的作者提供了一个不同的SPH定义,即报警和癫痫发作之间的时间间隔。对SPH和SOP的定义不一致,使各方法之间的基准难以确定,令人困惑。

用于测试所提出的方法的指标是灵敏度,在5分钟的SPH和30分钟的SOP下的错误预测率。为了进行稳健的评估,我们对每个受试者采取了留一法交叉验证的方法。如果一个受试者有N次发作,(N-1)次发作将被用于训练,扣留的发作将被用于验证。这一轮重复了N次,所以所有的发作都将被用于验证,正好一次。发作间歇段被随机分成N个部分。(N-1)部分用于训练,其余部分用于验证。

III. 结果

在本节中,我们用三个数据集来测试我们的方法:(1)弗莱堡iEEG数据集,(2)CHB-MIT sEEG,和(3)Kaggle iEEG数据集。本文在计算所有指标时都使用了SOP=30分钟和SPH=5分钟我们的模型在Python 2.7中使用Keras 2.0和T ensorflow 1.4.0后端实现。该模型在4个NVIDIA K80显卡上并行运行。每个留一交叉验证的褶皱都执行了两次,并报告了平均结果。表一总结了弗赖堡iEEG数据集的发作预测结果,SOP为30分钟,SPH为5分钟。仅仅应用电源线噪声去除,预测灵敏度为81.4%,即59次发作中的48次被成功预测错误预测率(FPR)非常低,为0.06/h

我们的方法在MITsEEG数据集上实现了类似的81.2%的灵敏度,但FPR较高,为0.16/h(见表二)。这是合理的,因为头皮脑电图记录往往比颅内记录更嘈杂。

对于Kaggle数据集,总体灵敏度为75%,FPR为0.21/h。值得注意的是,我们的方法对颅内脑电图和头皮脑电图的记录都有可比性,除了去除电源线噪声外,没有任何去噪技术。

第四部分展示了最近的癫痫预测方法和这项工作的基准。要知道哪种方法是最好的是很复杂的,因为每种方法通常是用一个数据集来测试的,而这个数据集的数据量是有限的。换句话说,一种方法可以在这个数据集上运行良好,但在另一个数据集上可能表现很差。因此,我们增加了一个额外的指标,即同一特征工程或特征集是否应用于所有患者,以评估每种方法的通用性。从临床角度来看,最好是有足够长的SPH,以便进行有效的治疗干预和/或预防措施。另一方面,SOP应该很短,以减少病人的焦虑[6]。一些隐含使用零SPH的工作忽略了临床注意事项,因此,可能被高估了。[10]提出的方法取得了98.3%的高灵敏度和0.29/h的FPR,测试对象为弗莱堡数据集的18名患者。我们的方法的灵敏度较低,为89.8%,但FPR更好,为0.17/h。值得注意的是,SPH被隐含地设置为,这意味着在接近癫痫发作的时间或事件的预测可以被算作成功的预测。同样,在[9,12]中进行的研究也隐含了使用零SPH,不会与我们的结果直接比较。

在Table IV中列出的其他作品中,[15]在SOP=20分钟和SPH=10分钟的情况下,预测灵敏度非常好,达到90.95%,FPR低至0.06/h。作者在[15]中巧妙地对每个病人的特征提取进行了微调。然而,这导致需要足够的专业知识和时间来执行新数据集的特征工程。[16]中作者对所有病人应用相同的特征提取技术,并使用SVM进行分类。这种方法取得了91.8-96.6%的高灵敏度和0.05-0.08的低FPR,对弗赖堡颅内EEG数据集进行了测试。然而,还没有作品报道在头皮EEG信号上成功使用类似的方法。

IV. 讨论

从EEG信号中提取的频率和时间(同步)域的信息已被广泛用于预测癫痫发作。从表IV中可以看出,随着时间的推移,敏感性和错误预测都有所提高。本文提出了一种新的方法来利用脑电信号的频率和时间两个方面,而不需要手工制作特征工程。脑电图窗口的短时傅里叶变换有频率和时间两个轴。一个二维卷积滤波器在整个短时傅里叶变换中被滑动,以收集脑电信号的频率和时间的变化。这就是卷积神经网络的魅力所在。滤波器的权重在训练阶段被自动调整,CNN就像一个自动的特征提取方法。

我们还将我们的方法的预测性能与一个不特定的随机预测器进行了比较。给定一个FPR,在一个SOP中发出警报的概率可以近似为[22] 。

因此,预测 K 个独立发作中至少有 k 个发作的概率由以下公式给出

我们通过使用该病人的FPR和我们的方法预测的发作次数(k)来计算每个病人的p值。如果p值小于0.05,我们可以得出结论,我们的预测方法在0.05的显著水平上明显优于随机预测器。表一和表二显示,除了弗莱堡数据集的Pat14和CHB-MIT数据集的Pat9之外,我们的预测方法对所有患者都实现了明显优于非特异性随机预测器。值得提醒的是,Freiburg数据集是颅内EEG,而CHB-MIT数据集是头皮EEG。换句话说,我们的方法对这两种类型的EEG信号都很有效。关于Kaggle数据集,与随机预测器相比,我们的方法在5只犬类中的4只(见表三)和Pat1的表现明显更好。

由于癫痫发作的特征可能会随着时间的推移而改变,因此有必要对癫痫预测算法进行校准。

最小特征工程带来了巨大的优势,它不需要专家为预测任务仔细提取和选择最佳特征。因此,它允许更快和更频繁的更新,使患者能够从癫痫预测算法中获得最大的利益。另外,最小化的特征工程也使更多的患者能够获得癫痫预测。由于特征提取任务由CNN承担,神经生理学家和临床工作人员可以花更多的时间监测和记录脑电信号,用于诊断和/或培训数据收集。

我们的方法可以通过非EEG数据,如癫痫发作的时间信息来进一步改进。癫痫发作已被证明在不同的时间间隔内有分布上的偏差,这些间隔可以长至一年,也可以短至一小时[23]。重要的是,[23]中的作者表明,在他们的101名患者的数据集中,日出、中午和午夜的癫痫发作次数较多,共39,929次。然而,这种模式是针对病人的,不同的病人可能有很大不同。采用同样的观察结果,[24]中的作者利用这种模式来显著改善他们的发作预测系统。不幸的是,本文调查的三个数据集不够长,无法评估一天中的时间信息是否有用,因为每个病人的最长记录期是3天。尽管如此,我们仍然值得看看CHB-MIT数据集中患者的癫痫发作率在一天中是如何分布的,这也是我们能够获得癫痫发作时间的唯一数据集。

图6显示清晨的发病率最高,下午4点和凌晨2点左右出现两个较低的峰值。

 V. 结论

在过去的四十年里,对癫痫发作的预测能力进行了研究和改进。目前还没有一个完美的预测,但就目前的预测性能而言,为病人提供警告信息是非常有用的,这样他们就可以为自己的安全采取一些预防措施。本文提出了一种使用最小特征工程的卷积神经网络的新方法。所提出的方法在颅内脑电图和头皮脑电图上都有良好的通用性。这给更多的病人带来了机会,使他们能够拥有一个可以帮助他们更容易管理的生活的癫痫预测装置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/156988.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

excel图表整形:如何提升条形图的颜值

提交给老板的报告总少不了要用到图表,比如下面这个业务员销售增长率的报表,老板要求用条形图来呈现出每个人的增长率:直接用Excel自带的图表模板做出来是这样的效果:这个图看起来总有点别扭,如果能做成下面这个样子就好…

《HTML简单入门》

目录 前言 HTML基本知识 简单示例 HTML标签 单标签 HTML元素 HTML属性 HTML入门知识 HTML头部 title style meta link script noscript base HTML标题 h HTML段落 p HTML文本格式化 加粗 加重 倾斜 强调 下划线 删除线 小号字体 下标 上标 水…

Android组件——Service

一、多任务实现的基本原理 默认情况下,同一个应用程序的所有组件都运行在同一个进程中,大部分应用程序是按这种方式运行的在具体应用中需要通过设置mainifest文件中组件的android:process属性,是该组件运行在不同的进程中元素也支持android:…

strapi系列-如何创建一个定时任务-Cron Jobs

Cron 是什么? Cron 有多种用途。 Cron Jobs 用于安排服务器上的任务运行。它们最常用于自动化系统管理或维护。然而,它们也与 Web 应用程序的构建相关。 Web 应用程序可能需要在各种情况下定期执行特定操作。 为什么使用 Cron ? 定期进行的计划活动,C…

【SpringMVC】异常处理

目录 一、基本介绍 二、局部异常 三、全局异常 四、自定义异常 五、统一处理异常 六、异常处理流程 相关文章(可以关注我的SpringMVC专栏) SpingMVC专栏SpingMVC专栏一、基本介绍如果我们对异常不做任何处理的话,那么他就会返回500错误&…

list底层实现

目录 引言 结构形式 整体框架 插入删除接口实现 析构函数、拷贝构造、赋值重载 const迭代器实现 取得链表长度的方式 迭代器前置\后置operator -- 以及operator-> 引言 list是非常常用的一个容器,数据结构是链表,数据空间是以链式结构存储的…

QT中控件不满足要求那么为你的控件做“提升”吧

我们在VisualStudio中例如VC或者C#中写一些个性化比较强的项目都会对控件有更高的要求,那么当我们的要求得不到满足时就需要考虑用到自定义控件了,其中自定义控件有两种方式,一种是完全重写,另一种简单的方法是继承自现有的控件。…

指针深度解剖,从内存详细了解指针

目录 🚕第一组:一维数组 🚌第二组:字符数组 🚐字符数组1.0 🚎字符数组1.1 🚑字符数组2 🚚字符数组3 🚜第三组:二维数组 🚗在上次的博客之中我们…

INVS里的DanglingWire的自动化清理实战

在上一讲中一起了解了INVS里的DanglingWire(innovus中的DanglingWire(悬垂线)的理解和处理),常言道理论联系实际,在理解原理的基础上,那一定是要服务项目的,这篇后续火速跟进&#x…

中国第一个 Apache 顶级开源项目的突围之路!

【CSDN 编者按】近些年开源大热,开源创业之风随之四起。作为近两年特别火的商业方向,开源创业者如何才能在一片红海中乘风破浪,在行业中占据一席之地?第一个由中国人主导贡献到 ASF 的顶级开源项目 Apache Kylin 做出了有效探索&a…

字节序,主机字节序与网络字节序

📌————本章重点————📌 🔗了解字节序的概念; 🔗了解大小端的概念;🔗了解主机字节序和网络字节序的区别;🔗学习主机字节序和网络字节序相机转化的接口; ✨————————————✨字节序 概念&am…

人工智能助力古彝文识别,推动传统文化传承

人工智能助力古彝文识别,推动传统文化传承0. 前言1. 古彝文1.1 古彝文介绍1.2 古彝文识别的重要意义1.3 古彝文识别的挑战2. 古彝文识别国内外研究进展3. 基于深度学习的古彝文识别3.1 深度学习简介3.2 基于深度学习的古彝文识别模型架构4. 古彝文识别进展与展望小结…

HTML小游戏19 —— html5版开心斗地主小游戏(附完整源码)

💂 网站推荐:【神级源码资源网】【摸鱼小游戏】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】本节教程我会带大家使用 HTML…

【练习】Day05

努力经营当下,直至未来明朗! 文章目录一、选择二、编程1. 跳跃游戏[贪心算法]2. 寻找重复数[注意思路!]答案1. 选择2. 编程普通小孩也要热爱生活! 一、选择 HASH 函数冲突处理方式不包括以下哪一项:(&…

YOLOv5源码详解——项目目录

YOLOv5 目录 .github .github相关,不重要 datasets 存放数据集,刚下载下来的源码是不包含这个文件夹的 classify 图像分类模块,包含以下4个文件 predict.py —— 图像分类预测脚本train.py ——图像分类训练脚本val.py —— 图像分类验证脚本tutorial.…

Java开发学习(四十一)----MyBatisPlus标准数据层(增删查改分页)开发

一、标准CRUD使用 对于标准的CRUD功能都有哪些以及MyBatisPlus都提供了哪些方法可以使用呢? 我们先来看张图: 1.1 环境准备 这里用的环境就是Java开发学习(四十)----MyBatisPlus入门案例与简介中使用的环境 二、新增 在进行新增之前,我们可以分析下新增的方法…

马蹄集 公式计算

公式计算 难度&#xff1a;青铜 01 时间限制&#xff1a;1秒巴占用内存&#xff1a;64M 计算公式 (1/2)*(a*xc(ac)/(4*a)》 格式 输入格式&#xff1a;输入为整型x,a,空格分隔 #include <bits/stdc.h> using namespace std; int main() {int x, a;cin >> x >&g…

1、JDK17安装

目录 一、简介 二、安装步骤 三、在Windows 10系统中配置环境变量 四、运行jdk 一、简介 JDK全称Java SE Development kit(JDK)&#xff0c;即java标准版开发包&#xff0c;是Oracle提供的一套用于开发java应用程序的开发包&#xff0c;它提供编译&#xff0c;运行java程…

二叉树【数据结构】【超详细,一学就会!!!】

目录 &#x1f4d6;1.什么是二叉树&#xff1f; &#x1f334;2.满二叉树和完全二叉树 ⛳2.二叉树的性质 &#x1f525;3.二叉树的创建与遍历 3.1 创建二叉树 3.2 前中后序遍历——递归和非递归 &#x1f3f9;4.二叉树的实现 1️⃣获取树中节点的个数 2️⃣获取叶子节点…

MATLAB-三维插值运算

MATLAB中是支持三维及三维以上的高维插值的。三维插值的基本原理与一维插值和二维插值是一样的&#xff0c;但三维插值是对三维函数进行的插值。在MATLAB中&#xff0c;使用interp3函数实现插值&#xff0c;其调用格式如下。vi interp3(x,y,z,v,xi,yi,zi) %返回值 vi是三维插值…