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

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.rhkb.cn/news/48069.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

异质图神经网络(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 本文将对异质图神经网络(HGNN, heterogeneous graph neural networks)的方法演变进行梳理和介绍。 最近更新时间:2023.5.10 最早更新时间:2022.10.31 文章目录 1. 异质图2. 处理为同质图3. 知识图…

Python画棵圣诞树 ~ Merry Christmas ~

圣诞节快到了,用python、turtle画棵圣诞树吧~_Ding2langdang的博客-CSDN博客 转载于Ding2langdang 最近圣诞节快到啦,CSDN的热搜也变成了”代码画颗圣诞树“,看了几篇博客,发现原博主把一些圣诞树给融合在了一起。 我更喜欢树叶…

圣诞树网页和圣诞树应用程序

圣诞树网页和圣诞树应用程序 1、圣诞树网页 效果图 代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <head> <title>写给xxx的的圣诞树</title> …

【圣诞节限定】教你用Python画圣诞树,做个浪漫的程序员

最近在各大社交平台看到好多圣诞树,看到大佬们画的圣诞树一个比一个精致,我也特别想尝试画一棵特别的圣诞树。下面是我画的一棵简易的圣诞树,虽然和网络上大佬们的圣诞树相比不是很精致,但是对于萌新们来说,画这样一棵简易的圣诞树还是非常轻松的。 ps:重要的不是圣诞树,…

浪漫的turtle,送给程序员自己的圣诞树

前几天一直在整 Pyqt5 相关的知识&#xff0c;在 Python UI 的世界里 Pyqt5 只是其中的一种用来做应用程序比较 nice。要在一个画布上面呈现我们需要的东西还是得依赖 turtle 比较靠谱&#xff0c;什么组件就做什么事、没有谁比谁厉害&#xff0c;只是在合适的地方用合适的组件…

用代码画两棵圣诞树送给你【附详细代码】

大家好&#xff0c;我是宁一 代码的魔力之处在于&#xff0c;可以帮我们实现许多奇奇怪怪、有趣的想法。 比如&#xff0c;用Python的Turtle库&#xff0c;可以帮我们在电脑上画出好看的图像。 下面这张樱花图就是用Turtle库实现的。 这不圣诞节快到啦。 那么就用代码来画一…

最近比较火的圣诞树HTML代码

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>张洋</title><link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css"…

【圣诞树代码】

新建一个HTML文件&#xff0c;直接复制粘贴就行。 <!DOCTYPE html> <html lang"en" ><head><meta charset"UTF-8"><title></title><link rel"stylesheet" href"https://cdnjs.cloudflare.com/aja…

【圣诞节】简单代码实现圣诞树|圣诞贺卡 | 快来为心爱的她送上专属的圣诞礼物叭~

圣诞节马上就要到了&#xff0c;不知道给自己喜欢的人准备什么样的惊喜吗&#xff1f;作为一名程序员&#xff0c;当然是用编程制作专属于她or他的圣诞树&#xff01; 目录 &#x1f384;圣诞树 ✨3D圣诞树 代码块 打开方式 修改位置 效果展示 ✨音乐律动圣诞树 代码块…

圣诞节来了,怎能还没有圣诞树呢 快来为心爱的她送上专属的圣诞礼物叭~

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; &#x1f33b;&#x1f33b;&#x1f33b;Hello&#xff0c;大家好我叫是Dream呀&#xff0c;一个有趣的Python博主&#xff0c;小白一枚&#xff0c;多多关照&#x1f61c;&#x1f61c;&…

用Python画圣诞树 ‘‘遇见’’ 圣诞老人

这是雪程序的1.1版本。 上个版本的文章---看这里&#xff1a; 忙活半天只为了看雪--送给大家的冬至礼物https://blog.csdn.net/qq_54554848/article/details/121873955?spm1001.2014.3001.5501&#xff08;下述代码基于上个版本&#xff09; 上次我发布了--冬至礼物的博客&…

圣诞节快到了,程序员应该给女友送一个线上圣诞树

我们把下载的压缩包解压&#xff0c;把exe文件放到桌面&#xff0c;双击打开即可。 桌面效果图&#xff1a; 可以打开多个圣诞树&#xff0c;如果关闭圣诞树需要鼠标右键点击exit即可。 代码如下&#xff1a; <!DOCTYPE HEML PUBLIC> <html> <head> <me…

快要圣诞节啦,快去给小伙伴们分享漂亮的圣诞树吧

最近翻到一篇知乎&#xff0c;上面有不少用Python&#xff08;大多是turtle库&#xff09;绘制的树图&#xff0c;感觉很漂亮&#xff0c;我整理了一下&#xff0c;挑了一些我觉得不错的代码分享给大家&#xff08;这些我都测试过&#xff0c;确实可以生成喔~&#xff09; 重中…

python画圣诞树【方块圣诞树、线条圣诞树、豪华圣诞树】

文章目录 前言【便捷源码下载处】1.方块圣诞树2.线条圣诞树3.豪华圣诞树 这篇文章主要介绍了使用Python画了一棵圣诞树的实例代码,本文通过实例代码给大家介绍的非常详细&#xff0c;对大家的学习或工作具有一定的参考借鉴价值&#xff0c;需要的朋友可以参考下 前言【便捷源码…

圣诞节都到了,快使用代码画棵圣诞树吧

&#x1f4d2; 博客首页&#xff1a;✎﹏ℳ๓敬坤的博客 &#x1f388; &#x1f60a; 我只是一个代码的搬运工 &#x1f383; &#x1f389; 欢迎来访的读者关注、点赞和收藏 &#x1f91e; &#x1f609; 有问题可以私信交流 &#x1f606; &#x1f4c3; 文章标题&#xff1…

圣诞树代码 html

新建txt文档 <!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title></title> <link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normaliz…

圣诞节来了,用Python Turtle画棵圣诞树吧

如何实现上图效果呢&#xff1f;让我们开始吧&#xff01; 首先&#xff0c;导入turtle和random from turtle import * import random as rd 然后&#xff0c;写一个待会儿要用到的函数&#xff0c;用于随机生成True和False def true_or_false(percent50):nrd.randint(1,10…

大家都在画圣诞树,我们用代码敲一颗吧~圣诞树

前段时间发布的文章很多人问怎么操作的&#xff0c;今天具体说明一下&#xff1a; PS&#xff1a;如果需要下载可以点击左下角阅读全文下载代码使用更方便 具体步骤如下&#xff1a; 复制下面代码在电脑里面新建一个记事本&#xff0c;将代码复制到新建的记事本里保存记事本&am…

【Python项目】圣诞节快到了,Python基于海龟(turtle)实现的圣诞树效果,是好几个哟 | 附源码

前言 halo&#xff0c;包子们上午好 圣诞节快到了 今天我的好兄弟们安排了一波圣诞节的Python代码 主要是用海龟&#xff08;turtle&#xff09;画图实现的&#xff0c;非常简单的啦 话不多说&#xff0c;直接开整 相关文件 关注小编&#xff0c;私信小编领取哟&#xff01;…

圣诞节到了,写一个炫酷的圣诞树和平安果,送给你最爱的人吧

&#x1f34a; Java学习&#xff1a;Java从入门到精通总结 &#x1f34a; Spring系列推荐&#xff1a;Spring源码解析 &#x1f4c6; 最近更新&#xff1a;2021年12月16日 &#x1f34a; 个人简介&#xff1a;通信工程本硕&#x1f4aa;、阿里新晋猿同学&#x1f315;。我的…