Python专栏 | MNE数据预处理方法——独立成分分析

article/2025/11/9 7:55:11

在这里插入图片描述

关注微信公众号:脑机接口研习社
了解脑机接口最近进展

系列文章目录

Python专栏 | 脑电图和脑磁图(EEG/MEG)的数据分析方法之载入数据

Python专栏 | MNE脑电数据(EEG/MEG)可视化


文章目录

  • 系列文章目录
  • 预处理(Preprocessing)


预处理(Preprocessing)

MNE-Python支持多种预处理的方法和技术,如麦克斯韦滤波,信号空间投影,独立成分分析,滤波,降噪采样等(maxwell filtering, signal-space projection, independent components analysis, filtering, downsampling, etc)。

下文将详细介绍通过执行**独立成分分析(ICA)**清理数据。

首先,简单介绍一下ICA。

ICA :Independent component analysis,独立成分分析

PCA(主成分分析)和ICA(独立成分分析)都是统计理论当中的概念,在机器学习当中应用很广,比如图像,语音,通信的分析处理。

两者常用于机器学习中提取特征后的降维操作。

ICA最早是从神经网络领域开始研究的,应用于信号分离、特征提取。为了简单,比较经典的一个ICA应用情境的例子是**“鸡尾酒宴会问题(cocktail party problem)”**。

假设在一个开party的房间里有两个人同时说话,房间里在两个不同的位置上各放一个麦克风,麦克风记录下两段声音(时间信号):x1(t)和x2(t),

这两段声音都记录了两个人说的话,那么我们怎样将两段声音分离,纯粹得到两个人分别说了什么话呢?

记源信号是s1(t)和s2(t),这个问题可以用以下等式描述:

在这里插入图片描述

四个参数aij,和说话者(x1和x2),与麦克风(s1和s2)的距离有关。

示意图如下:

在这里插入图片描述

接收到的信号x1,x2是:

在这里插入图片描述

而需要我们去还原的信号是s1,s2:

在这里插入图片描述

研究表明,如果s1,s2是统计独立的随机信号,那么就可以用x1,x2去还原。

信号可分为确定性信号和随机信号。若信号被表示为一确定的时间函数,对于指定的某一时刻,可确定一相应的函数值,这种信号称为确定性信号或规则信号。对于随机信号,不能给出确切的时间函数,只可能知道它的统计特性,如在某时刻取某一数值的概率。

ICA正是利用统计上的独立性从混合信号中分解出源信号的。

类比到EEG / MEG的数据分析问题:

EEG和MEG设备有许多“传感器通道(Sensor channels)”,相当于“麦克风”,传感器通道可以同时记录许多“活动”产生的信号,如眨眼、心跳、大脑不同区域的活动、吞咽等活动,只要这些源信号在统计上是独立且非高斯的,就可以使用ICA分离这些源,接着在排除不需要的源之后还可以重塑(reconstruct)信号。

ICA和PCA的差异:

  • PCA是一种数据降维的方法,但是只对符合高斯分布的样本点比较有效,而ICA的模型假设之一是信号源si服从非高斯分布。ICA相比与PCA更能刻画变量的随机统计特性,且能抑制高斯噪声。
  • PCA主要用于数据的降维,将原本相关的数据映射到一个新的空间中,在这个空间中,数据的各个维度是不相关的。ICA是一种找到数据可能存在的各组成分量的方法,主要应用于信号解混,特征提取。

ICA的处理过程:

使用ICA时往往对数据存在几点假设:源信号独立,且服从非高斯分布,甚至要假设源信号的概率分布和个数。

首先要对对输入数据进行中心化(scaled to unit variance)和白化处理(whitening)。

白化:一般情况下,所获得的数据都具有相关性,所以通常都要求对数据进行初步的白化或球化处理,因为白化处理可去除各观测信号之间的相关性,从而简化了后续独立分量的提取过程,而且,通常情况下,数据进行白化处理与不对数据进行白化处理相比,算法的收敛性较好。
对于白化的作用的描述主要有两个方面:1,减少特征之间的相关性;2,特征具有相同的方差(协方差阵为1)

在这里插入图片描述
如上图所示,白化分为两个过程:

为了处理具有不同单位的不同通道类型(例如,EEG以伏特为单位(V),MEG以特斯拉(T)为单位),数据必须进行白化预处理(pre-whitening)。

如果noise_cov = None(默认),则给定通道类型的所有数据均按所有通道上的标准差按比例缩放。如果noise_cov等于协方差,则使用协方差对通道进行白化预处理。

然后,再使用PCA对白化预处理后的数据进行分解。由此可见,PCA是ICA预处理的一部分。

用PCA对观测信号进行白化的预处理使得原来所求的解混合矩阵退化成一个正交阵,减少了ICA的工作量。此外,PCA本身具有降维功能,当观测信号的个数大于源信号个数时,经过白化可以自动将观测信号数目降到与源信号维数相同。

如果n_components是整数,则从生成的主成分(principal components,PC)中将n_components直接传递给ICA算法。

n_components也可能是0到1之间的浮点数,这时,n_components详细阐述了PC捕获的可解释方差的分数;同时,适当数量的PC(即与解释总方差的给定分数所需的PC数量一样)也可传递给ICA。

将独立分量(Independent Components,IC)可视化并排除任何要修复的**干扰信号(artifacts)**后,即可使用ICA.apply()方法重塑传感器捕捉的信号。

关于干扰信号的修复方法详见:
https://mne.tools/stable/auto_tutorials/preprocessing/plot_10_preprocessing_overview.html#heartbeat-artifacts-ecg

如上图所示,默认情况下,信号重塑会使用所有减去ICA.exclude的Retained ICs(Retained ICs=n_components-len(ICA.exclude)),再加上未包含在ICA分解中的所有PC,即“PCA残差”(PCA residual=n_pca_components-n_components)。

Reconstructed sensor data=Retained ICs+PCA residual

如果要减少在重塑阶段使用的分量数量(components),可以通过改变n_pca_components参数的大小来实现,但这样反过来会降低数据的排列;默认情况下,n_pca_components = None不会导致额外的维数减少。

下期将讲解关于ICA过程的代码示例。

参考链接

https://mne.tools/stable/auto_tutorials/intro/plot_10_overview.html#preprocessing

https://blog.csdn.net/u014485485/article/details/78452820

https://blog.csdn.net/yffhhffv/article/details/86710898

https://mne.tools/stable/auto_tutorials/preprocessing/plot_40_artifact_correction_ica.html#tut-artifact-ica

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/ONxSlcb8.shtml

相关文章

学习笔记 | 独立成分分析(ICA, FastICA)及应用

学习笔记 | 独立成分分析[ICA, FastICA]及应用 1 背景说明 2 算法原理 2.1 ICA简介 2.2 形式化表达 3 算法步骤与代码 4 算法改进:FastICA 5 ICA实例与应用 6 小结 概要: 这篇博客和博客学习笔记|主成分分析[PCA]及其若干应用属于一个系列&#xf…

ICA独立成分分析去除脑电伪影

今天分享的这篇利用独立成分分析ICA去除EEG伪影是翻译自jung大神的一篇文章。 目录 1 介绍 2 方法 3 实验数据样本 1 介绍 眼动,眨眼,肌肉,心脏和线的噪音会严重污染脑电图活动,这在脑电解释和分析中会产生非常严重问题。研究…

独立成分分析(ICA)

1.概念 独立成分分析是从多元(多维)统计数据中寻找潜在因子或成分的一种方法.ICA与其它的方法重要的区别在于,它寻找满足统计独立和非高斯的成分。这里我们简要介绍ICA的基本概念、应用和估计原理。 1.1 多元数据的线性表示 统计数据处理及相关领域中的一…

独立成分分析ICA系列2:概念、应用和估计原理.

1.概念 独立成分分析是从多元(多维)统计数据中寻找潜在因子或成分的一种方法.ICA与其它的方法重要的区别在于,它寻找满足统计独立和非高斯的成分。这里我们简要介绍ICA的基本概念、应用和估计原理。 1.1 多元数据的线性表示 统计数据处理及相关领域中的一…

详解独立成分分析

最近在学习数据降维的一些方法(有关数据降维的其他内容请看这篇文章),虽然独立成分分析不算是严格意义上的降维方法,但是它和PCA有着千丝万缕的联系,所以打算专门写一篇文章来学习ICA的相关知识,看了挺多的关于ICA的博文&#xff…

独立成分分析

在已知语音信号方向的情况下,波束形成能明显改善语音质量,提高信噪比;然而在实际环境中,人可能是走动的,即使坐立不动,由于身体的扭曲使得语音到达阵列的方向也是变化的,此时波束形成效果受到限…

独立成分分析(Independent Component Analysis,ICA)原理及代码实现

过程监控中会用到很多中方法,如主成分分析(PCA)、慢特征分析(SFA)、概率MVA方法或独立成分分析(ICA)等为主流算法。 其中PCA主要多用于降维及特征提取,且只对正太分布(高…

清理vdbench后台进程

当我们打开一个终端,用nohup运行vdbench程序。断开连接后,你发现你写的配置文件有误,想关闭已有的vdbench进程。你重新连接上终端,咦,我的jobs命令怎么没有显示我的nohup任务呢?这是因为你的nohup任务的sh进…

Nas性能测试工具-vdbench

版本: vdbench50406 简介: vdbench是一个 I/O 工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具,容易使用,而且常常用于测试和基准测试。 配置参数: 大文…

Linux中vdbench的安装与使用

vdbench是一个 I/O 工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具,容易使用,而且常常用于测试和基准测试。 可以使用vdbench测试磁盘和文件系统的读写性能。 环境:Ubuntu 16.04 …

vdbench和fio测试磁盘性能的对比总结

vdbench和fio测试磁盘性能的对比总结 一、安装 1、安装vdbench,首先安装java:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 其次下载vdbench安装包并进行安装:http://pan.baidu.com/s/1b7XooY&am…

vdbench使用

简介 vdbench是一个 I/O 工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具,容易使用,而且常常用于测试和基准测试。 可以使用vdbench测试磁盘和文件系统的读写性能。 名词解释 vdbench中常用的…

vdbench测试SSD快速入门

介绍 vdbench是一个I/O工作负载生成器,通常用于验证数据完整性和度量直接附加(或网络连接)存储性能。它可以运行在windows、linux环境,可用于测试文件系统或块设备基准性能。我们下面主要以块设备为介绍对象。 下载及安装 下载…

vdbench多主机运行指导

测试工具之vdbench多主机运行 本文介绍vdbench在多机环境下的操作和配置,以及本人在配置过程中遇到的问题和解决方法。 文章目录 测试工具之vdbench多主机运行前言一、vdbench在linux环境下多机运行1.环境参数2.配置说明二、vdbench在windows环境下多机运行1.环境参数2.配置…

Vdbench工具安装使用

一、 概述 1.1 内容简介 Vdbench 是一个命令行使用程序,旨在帮助工程师和客户生成用于验证存储性能和存储数据完 整性的磁盘 I/O 负载。还可通过输入文本文件指定 Vdbench 执行参数。它是一个免费的工具,容 易使用,而且常常用于测试和基准测试…

Vdbench工具的安装及使用

Vdbench工具的安装 Vdbench的运行依赖java环境,请务必先安装java运行环境安装java,Ubuntu OS环境安装java: apt-get install openjdk-8-jdkCentos OS环境安装: yum install openjdk-8-jdk检查是否安装成功 安装vdbench,下载vdbench50407.zip包&#…

Java jre的安装与卸载

文章目录 1. jre安装2. 卸载 Java JDK安装教程 Idea Java开发环境配置教程: https://tangxing.blog.csdn.net/article/details/112392218 1. jre安装 java下载网址: https://www.java.com/zh-CN/download/manual.jsp 这里有联机版和脱机版,…

彻底卸载jdk,jdk安装 ,javaa安装,jdk删除干净

标签: 一.备份安装好的绿色版JDK a.重新安装JDK到任意目录,假设这个目录是C:\java。 b.将装好的JDK,JRE拷贝到任意一个其他目录,如D:\bak,这样做的目的主要是为了备份JDK。(建议打成zip压缩包奔备用)二.彻底卸载JDK1.第一步,首先卸载或删除J…

Java如何卸载?怎么删掉Windows计算机上的Java?Java卸载流程详解!

大家都知道Java版本不是一成不变的,Java会朝着功能增加、漏洞修复和性能优化的方向一直进步。而公布新版Java之后,我们需要使用它,那么卸载掉旧版的Java很有必要,为什么呢? 这是Java官方给出的回复: 我们强烈建议您…

JAVA安装、配置及卸载

基本上从入门到实用非常全面了。 安装 安装Eclipse先配置jdk jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html (此处以jdk8为示例) 一、安装jdk 此处默认路径即可,单击下一步 安装完成后会…