本教程是基于deap数据集的,涵盖了预测脑电信号的大多数传统机器学习算法和深度学习算法。

因为有很多关于DEAP数据集的研究,但它们很难比较。因此,作为一个EEG研究者,几乎不可能知道我应该做出什么样的架构决策。这是由于这样的事实:一些文章要么没有提供代码库因此无法复制,或者没有明确指定使用的hyperparameters,或仅仅由于显而易见的事实,即使是两篇论文使用相同的模型不能直接比较,因为不同的硬件和使用的hyperparameters。

我的目的是,我的硕士和博士学生可以使用它作为他们脑电研究的入门工具包。这些算法不一定能很好地用于EEG情绪识别,但为了完整起见,我将它们全部包括在内。

因此,我想对典型的脑电图模型进行受控比较,以清楚地了解什么有用,什么没用。

注意:在使用教程之前,请创建一个文件夹“data”,并下载预处理的DEAP数据集,并将s01.dat,…,s32.dat放在这个“data”文件夹中。数据文件夹将位于与教程相同的目录中。

本教程通过使用基准DEAP数据集中的情感识别作为案例研究,解释了基本的EEG分析以及常见的深度学习模型。

该库通过使用来自基准DEAP数据集的情感识别作为案例研究,比较了传统机器学习算法和深度学习算法的不同建模方法。

Python libraries:

  1. Python MNE
  2. PyTorch
  3. NumPy
  4. Sckit-Learn
  5. SciPy

Docker Prerequisite (Akraradet & Raknatee)

  1. Docker
  2. Docker-Compose

How to use

docker是为了使用与docker扩展的Visual Studio代码。这样我们就可以将“可视代码”附加到docker环境中。

一旦你“撰写”了服务,去docker标签,找到“eeg-emotion”。右键单击并选择“附加Visual Studio代码”。打开’ /root/projects/ ',并享受编码的乐趣。

docker-compose有两种类型。只支持CPU和GPU

  • CPU
docker-compose -f docker-compose-cpu.yml up --build -d
  • GPU
docker-compose -f docker-compose-gpu.yml up --build -d

Tutorials:

  1. (01.) Understanding the DEAP dataset
  2. Common EEG feature engineering + machine learning
    • (02.) spectrum + SVM (61%)
    • (03.) asymmetry + SVM - Akraradet
    • (04.) connectivity + SVM - Akraradet
    • (05.) common spatial pattern + SVM - Akraradet
    • (06.) phase coherence + SVM - Akraradet
  3. Baseline deep learning models (50 epochs)
    • (07.) LSTM (71% acc)
    • (08.) CNN1D + LSTM (92% acc)
    • (09.) Spectogram + CNN2D
      • CNN 2 layers - (87% acc)
      • CNN 4 layers - (96% acc)
  4. Advanced (50 epochs)
    • (10.) CNN1D + LSTM + General Attention

      • Dot Product Attention (94% acc)
      • Multiplicative Attention ( ) Fabby
      • Additive Attention ( ) Babby
      • Hierarchical Attention ( ) Fabby
    • (11.) CNN1D + LSTM + Self Attention
      • Using mean to combine (90% acc)
      • Using sum to combine (91% acc)
      • Using last state to combine (90% acc)
    • (12.) CNN1D + LSTM + MultiHead Self Attention
      • Using mean to combine (92% acc)
      • Using sum to combine (92% acc)
      • Using last state to combine (94% acc)
    • (13.) ChannelNet ( ) Beau
    • (14.) EEGNet ( ) Chaky
    • (15.) Spatial–Temporal Self-Attention CNN ( ) New + Babby + Beau

一些可能的结论:

  • 仅LSTM较差(71%)。这是预期的,因为每个单独的样本只是一个单独的数据点。由于信号大多很长(1分钟内8064个样本),因此LSTM几乎不可能理解样本1(第一秒)和样本8064(最后60秒)之间的关系。
  • 很明显,在LSTM之前应用CNN1D会产生巨大的改善(92%),这意味着CNN1D在平滑和卷积信号为LSTM更有意义的表示方面是有用的,从而解决了LSTM的长期依赖问题。
  • 很明显,使用光谱图(96%)可以很好地捕捉时间和频率信息,因此CNN2D四层显示的精度更高。关于谱图的另一点是,它的参数相对较少,这进一步激发了它的使用。
    需要注意的是,对于光谱图,我们尝试了不同的窗口大小和重叠大小。我们发现它的影响是非常小的,因此我们决定报道最好的准确性。我们选择窗口大小为采样率,重叠大小为采样率的一半。
  • 对于CNN1D和CNN2D, maxpooling被证明是非常有用的,它缩小了样本的大小,从而加快了训练过程,同时也作为特征选择。无论如何,我们发现一个小小的警告,过多的maxpooling可能导致较差的结果,这可能是由于过多的向下采样,因此找到最优的maxpooling层是有用的。
  • 很明显,在CNN1D + LSTM的基础上增加注意力会带来轻微的好处,增加大约2%的额外准确度(92 + 2%),就像在多头自我注意中看到的那样。但这种好处是不确定的,正如我们在单头自我关注中看到的那样。这表明,增加注意力应该是精心设计的。此外,增加的精度需要用大量增加的参数来证明。
  • 多头注意力(94%)明显比单头注意力(91%)更好,这与《变形金刚》论文的建议一致。
  • 值得尝试不同的约简方法(sum、mean、last),但结果可能并不直接。这可能是优先级较低的超参数之一。

deap dataset的不同分类模型的实现(1)相关推荐

  1. 一起运行脑电信号(EEG)源码(2)-deap dataset

    第一肯定是搭建环境了 安装包,源码,数据集准备好. 在运行之前,先把环境平台搭好了,版本要对应.安装有问题也可以找我.软件安装包在这里,我用的版本在后面其他的自己搞: 链接:https://pan.b ...

  2. 从零开始构建基于textcnn的文本分类模型(上),word2vec向量训练,预训练词向量模型加载,pytorch Dataset、collete_fn、Dataloader转换数据集并行加载

    伴随着bert.transformer模型的提出,文本预训练模型应用于各项NLP任务.文本分类任务是最基础的NLP任务,本文回顾最先采用CNN用于文本分类之一的textcnn模型,意在巩固分词.词向量 ...

  3. 分类模型的性能评估——以SAS Logistic回归为例(1): 混淆矩阵

    跑完分类模型(Logistic回归.决策树.神经网络等),我们经常面对一大堆模型评估的报表和指标,如Confusion Matrix.ROC.Lift.Gini.K-S之类(这个单子可以列很长),往往 ...

  4. CV:基于Keras利用CNN主流架构之mini_XCEPTION训练情感分类模型hdf5并保存到指定文件夹下

    CV:基于Keras利用CNN主流架构之mini_XCEPTION训练情感分类模型hdf5并保存到指定文件夹下 目录 图示过程 核心代码 图示过程 核心代码 def mini_XCEPTION(inp ...

  5. 数学建模_随机森林分类模型详解Python代码

    数学建模_随机森林分类模型详解Python代码 随机森林需要调整的参数有: (1) 决策树的个数 (2) 特征属性的个数 (3) 递归次数(即决策树的深度)''' from numpy import ...

  6. 【小白学习tensorflow教程】一、tensorflow基本操作、快速构建线性回归和分类模型

    @Author:Runsen TF 目前发布2.5 版本,之前阅读1.X官方文档,最近查看2.X的文档.tensorflow是非常强的工具,生态庞大. tensorflow提供了Keras的分支,这里 ...

  7. 【图像分类】如何使用 mmclassification 训练自己的分类模型

    文章目录 一.数据准备 二.模型修改 三.模型训练 四.模型效果可视化 五.如何分别计算每个类别的精确率和召回率 MMclassification 是一个分类工具库,这篇文章是简单记录一下如何用该工具 ...

  8. cox风险回归模型参数估计_信用风险管理:分类模型和超参数调整

    cox风险回归模型参数估计 The final part aims to walk you through the process of applying different classificati ...

  9. python tensorflow 文本提取_如何在tensorflow中保存文本分类模型?

    阅读tensorflow documentation进行文本分类时,我在下面建立了一个脚本,用于训练文本分类模型(正/负).有一件事我不确定.如何保存模型以便以后重用?另外,如何测试我拥有的输入测试集 ...

  10. 【Pytorch神经网络理论篇】 34 样本均衡+分类模型常见损失函数

    同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深 ...

最新文章

  1. Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)
  2. 综述|计算机视觉中的注意力机制
  3. 如何将自己写的verilog模块封装成IP核(二)
  4. 部署harbor1.2.0开启ldap验证
  5. 【数据结构与算法】之深入解析“回文数”的求解思路和算法示例
  6. Linux 链接文件讲解
  7. 在matlab中求协方差,matlab里面的求协方差函数
  8. swiper鼠标hover停止自动轮播_swiper滑块组件
  9. spring和jump区别,JUMP和CALL之间的区别
  10. MySQL 两个死锁样例
  11. WPF学习拾遗(三)TextBox焦点问题
  12. 浅析Linux系统入侵排查与应急响应技术
  13. flask基于保利威做视频认证
  14. 写bat文件,报系统找不到指定文件的处理方式
  15. 阿里云国际版建立云端数据库操作流程
  16. 双硬盘安装win10和linux双系统,双硬盘安装win10+ubuntu18心得
  17. Java-PTA USB接口的定义
  18. GateWay网关访问服务出现503的问题解决
  19. How to Pronounce PROBABLY
  20. 西门子哪款plc支持c语言,西门子PLC三种语言的区别

热门文章

  1. 魔兽世界模型文件.m2 在D3D下的渲染
  2. 简单好用的钉钉群消息助手
  3. Android布局详解之一:FrameLayout
  4. FileUpload1上传控件
  5. 持续化集成工具CruiseControl.NET
  6. 史上最全天气预报接口,含各类数据接口,历史数据,天气大数据,雷达云图、6要素数据,格点数据等
  7. 国内外各大免费收录网站搜索引擎及导航网址提交入口
  8. 松本行弘:Ruby之父
  9. 【截屏、录屏】工具分享-最简单的工具-QQ
  10. linux制作flash软件,Linux 下的三款 Flash 独立播放器