基于少样本学习EEG/SEEG数据癫痫预警和脑电识别

2024-04-17 13:58

本文主要是介绍基于少样本学习EEG/SEEG数据癫痫预警和脑电识别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近的三篇文章都中了。因此有时间来整理之前的工作;       

立体脑电数据包含了大脑癫痫电信号,具有高信噪比,高采样率,可以进行病灶定位等特点。因此对立体脑电进行数据分析和数据挖掘具有很大的医学研究价值。但是目前基于立体脑电信号数据挖掘工作还较少,尤其是基于深度学习等方法的工作。立体脑电采集成本较高,受试者较少,所以需要大量训练数据的传统的神经网络分类模型并不能很好解决立体脑电分类任务。同时,立体脑电数据的电极位置不固定,头皮脑电的数据预处理方法不适用于立体脑电数据。因此从立体脑电数据出发,如何进行的数据预处理,利用立体脑电多信道信息,构建出泛化能力较好的深度学习网络对立体脑电癫痫信号识别是一大挑战。

在实验中我们会经常发现,在训练集上效果较好的模型在新的病人身上的性能并不好。这是因为脑电信号带有很明显的个体差异;这种差异会干扰模型的判别。少样本学习是很好的一个途径去解决量较少的情况。少样本学习通过构造众多的数据集,可以提高模型的泛化能力。

少样本学习的核心思想是学习多个任务的先验知识,使模型适用于有监督的已知少量样本标签的新任务。Vinyals等人采用了基于深度神经网络的度量学习的思想(Matching networks),将一个标记好的数据集映射到未标记的数据集上实现模型的快速拟合。Snell等人学习到一个度量空间(Prototypical networks),通过计算每个类的原型的表示距离从而对其分类。Sung等人则构建一个端到端的关系网络(Relation Network),它是基于深度学习的度量网络,关系网络可以通过计算查询样本与每一个新的类别样本之间的关系得分来对新的类别进行分类,从而无需整体地更新整个网络。Finn 等人提出了一种模型无关的少样本学习方法(Meta Learning),该方法目标是针对于各种学习任务来训练模型,通过二次的梯度更新策略,通过少量已知标签样本就可以适应于新的学习任务。

如下是两个人不同的SEEG数据信道分布图;之后我会介绍如何合理的处理这种信道数据图。

我们通过特定的方法来排列信道构成矩阵,然后通过切割矩阵来获得数据片段。这个数据片段就是模型的输入,首先对于每一类的数据可以通过VAE编解码,这样能够提取到每一类的脑电数据的特征,然后通过水机采样的方法来构建任务集。再结合MAML(Model Agnostic Meat Lrarning)来实现模型的分类,这样做的好处能够借助于变分自编码器和少样本学习提高模型的泛化能力。

具体的结构图如下;

具体的算法如下:

数据集

实验的数据如下,我们采集了5位病人的数据,采用留一法进行验证;

实验的结果如下,可以看到我们的模型取得了最好的结果。

 对提取的特征分成5类进行聚类分析并且可视化如下:

 

 我们在特征分析中发现了模型的性能和某种特征密度相关,如下所示。

 以上就是我论文的内容,改论文已经被American Medical Informatics Association: AMIA录用,论文题目为:Characterizing Brain Signals for Epileptic Pre-ictal Signal Classification。等见刊了大家可以看看论文细节。

 

这篇关于基于少样本学习EEG/SEEG数据癫痫预警和脑电识别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/911990

相关文章

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

如何正确识别一台POE交换机的好坏? 选购可靠的POE交换机注意事项

《如何正确识别一台POE交换机的好坏?选购可靠的POE交换机注意事项》POE技术已经历多年发展,广泛应用于安防监控和无线覆盖等领域,需求量大,但质量参差不齐,市场上POE交换机的品牌繁多,如何正确识... 目录生产标识1. 必须包含的信息2. 劣质设备的常见问题供电标准1. 正规的 POE 标准2. 劣质设

JAVA实现亿级千万级数据顺序导出的示例代码

《JAVA实现亿级千万级数据顺序导出的示例代码》本文主要介绍了JAVA实现亿级千万级数据顺序导出的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 前提:主要考虑控制内存占用空间,避免出现同时导出,导致主程序OOM问题。实现思路:A.启用线程池

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很