2020第十七届华为杯数模C题——P300脑电信号数据预处理算法

脑电信号数据预处理

  这两天的数学建模选的C题,目标是要处理脑电P300信号的数据并进行相关预测任务。该题重点是数据预处理,因此根据最后实验的结果,分享相关的预处理方法以及源代码。长话短说,给出任务的简单描述、分析方法以及相关源代码。关于2020年第十七届华为杯研究生数学建模所有赛题可前往: (https://pan.baidu.com/s/19O9J_0tnWumMe47zqk3jMg ,提取码:xx3j),赛题解压码为

  任务描述:脑机接口是通过计算机检测人脑活动的系统,其通过对人体大脑各个通道检测脑电信号,通过脑电波来发现体态情况。通常医学领域内,检测的脑电信号可以用于分析患者的睡眠情况、身体康复等。现有通过脑机接口制作一个简单的实验。如果给与被试者一个适当的刺激,在一定时间的延时后脑电信号会产生一个波峰,产生的波峰的P300信号可以反应被试者的一些特征。如下图所示:

2020第十七届华为杯数模C题——P300脑电信号数据预处理算法_第1张图片
当给与一个刺激时,通常会在一定延时后产生一个P300电位,该电位在整个信号波中属于一个波峰。

2020第十七届华为杯数模C题——P300脑电信号数据预处理算法_第2张图片

  赛题C给定的实验背景是:提供了5个健康成年被试(S1-S5)的P300脑机接口实验数据,平均年龄为20岁。在实验的过程中,要求每一位被试(被测试者)集中注意力。P300脑机接口实验的设计如下:每位被试能够观察到一个由36个字符组成的字符矩阵,如图所示,字符矩阵以行或列为单位(共6行6列)。每轮实验的设计流程:首先,提示被试注视“目标字符”,例如在图3的字符矩阵上方,出现的灰色字符“A”;其次,进入字符矩阵的闪烁模式,每次以随机的顺序闪烁字符矩阵的一行或一列,闪烁时长为80毫秒,间隔为80毫秒;最后,当所有行和列均闪烁一次后,则结束一轮实验。在被试注视“目标字符”的过程中,当目标字符所在行或列闪烁时,脑电信号中会出现P300电位;而当其他行和列闪烁时,则不会出现P300电位。上述实验流程为1轮,共重复5轮。

  因此我们的任务目标是给定一组这样的信号波,来预测哪个波存在P300电位。具体的实验背景可参考附件的赛题C。

  数据描述:给定的一共有5个被试者,分别是S1、S2、S3、S4和S5,每个被试者所有数据分别放在对应的文件目录内,每个被试者有4个xlsx文件,分别对应训练集、测试集的脑电数据,和训练集、测试集的event文件,其中包含字符闪烁编号以及对应的采样点位置。
  对于训练集,一共有12个表单(sheet),每个表单中有20列,分别代表20个通道,相当于数据集的特征。每个表单中有3000多行,每一行代表依次采样,相邻两行采样时间间隔为4毫秒,行号代表采样点编号;
2020第十七届华为杯数模C题——P300脑电信号数据预处理算法_第3张图片

  对于event数据中,第一行(红色)两个数,分别表示目标字符以及其采样点起始行编号。第二行开始,第一列表示目标字符闪烁所在的行或列(1-6数值表示第1-6行,7-12数值表示第1-6列)。绿色表示一个轮次,相当于给定目标字符102,分别闪烁12行或列字符,重复这个过程5个轮次。
2020第十七届华为杯数模C题——P300脑电信号数据预处理算法_第4张图片
  预处理方法:因为每个轮次中只有两行或列,例如上图102字符对应的是第1行(1)和第2列(8),因此这两个数据是存在P300电位,而其他10行或列数据是不存在P300电位,因此我们将存在P300电位的数据标注为正样本,其他为负样本。
  另外,原始数据的各个通道值所在幅度范围不同,且存在大量的噪声,因此需要进行预处理,处理包括:
(1)数据截取:根据闪烁字符所对应采样点的位置开始,向后延迟一定时间,并截取固定窗口内的所有采样点。例如本文的预处理中,选择延迟100毫秒后开始截取窗口大小为400毫秒的数据,最终可形成 100 × 20 100\times 20 100×20 维度的矩阵。
(2)每一个特征的数据存在噪声,需要进行多阶段的离散小波变换(DWT)。小波通常指频率、波幅参差不一的波,小波变换的主要目标是对上下浮动参差不齐的信号波进行噪声过滤,形成尽可能平滑的数据,而过滤掉噪点。小波变换详解可参考:参考【1】和 参考【2】 。
(3)对于一个给定目标字符的条件下,由于每个被试者每个轮次内的数据一共有12个(12行列各闪烁一次),因此只有2个为正样本,10个为负样本,因此存在非均衡问题。根据相关文献提供的方法,我们使用叠加平均算法。简单描述为:对于某一轮次,在已知的12个sheet,共搜集24个正样本,120个负样本,为了和负样本数量相同,则额外需要增加96个正样本。每次随机从已有的正样本中挑选两个样本,并求和平均后添加进去,循环操作96次即可。
(4)由于各个通道的浮动范围不同,如第2通道的数据均在5070左右,而第14通道则在-398左右。因此还需要进行均方归一化,公式为:

x i j = x i j − x ˉ j σ j x_{ij} = \frac{x_{ij} - \bar{x}_j}{\sigma_j} xij=σjxijxˉj

其中 x i j x_{ij} xij 表示第 i i i 个采样点,第 j j j 个通道对应的值, j ˉ \bar{j} jˉ 表示所有采样点的第 j j j 个通道的均值, σ j \sigma_j σj 则为对应的方差。归一化后,所有值均在0上下范围内。

注:源代码目前属于参赛阶段,暂时隐藏,文章仅供参考,禁止转载与抄袭。

你可能感兴趣的:(算法,智慧医疗,P300脑电信号,华为杯数模)