运动想象 (MI) 迁移学习系列 (9) : 数据对齐(EA)

2024-03-15 09:52

本文主要是介绍运动想象 (MI) 迁移学习系列 (9) : 数据对齐(EA),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

运动想象迁移学习系列:数据对齐(EA)

  • 0. 引言
  • 1. 迁移学习算法流程
  • 2. 欧式对齐算法流程
  • 3. 与RA算法进行对比
  • 4. 实验结果对比
  • 5. 总结
  • 欢迎来稿

论文地址:https://ieeexplore.ieee.org/abstract/document/8701679
论文题目:Transfer Learning for Brain–Computer Interfaces: A Euclidean Space Data Alignment Approach
论文代码:https://github.com/hehe03/EA/blob/master/main_MI.m

0. 引言

本篇博客重点考虑数据对齐部分,因为其对后续迁移学习的效果影响非常大。
数据对齐有多种方法,如黎曼对齐(Riemannian Alignment, RA)欧式对齐(Euclidean Alignment, EA)标签对齐(Label Alignment, LA)重心对齐(Centroid Alignment, CA) 等。下面重点介绍EA

1. 迁移学习算法流程

迁移学习算法流程如图11所示。可以看到数据对齐的位置所在!!!
在这里插入图片描述

2. 欧式对齐算法流程

欧式对齐算法流程如图12所示。其处理源域用户目标域用户的方式是一样的,所以下面描述中不区分源域用户和目标域用户。假定一个用户有n段EEG样本。EA先计算每段EEG样本的协方差矩阵,再计算这n个协方差矩阵的均值,记为 R ‾ \overline{R} R。对齐矩阵即为 R ‾ − 1 / 2 \overline{R}^{-1/2} R1/2。对每段EEG样本,左乘 R ‾ − 1 / 2 \overline{R}^{-1/2} R1/2,得到一个跟原始EEG样本维度相同的样本,用于取代进行所有后续计算,如空域滤波特征提取分类等。EA简单有效,主要原因是对齐之后任意用户的EEG样本协方差矩阵的均值都为单位矩阵,整体分布更加一致。这有点类似迁移学习中经常考虑的最大均值差异(Maximum Mean Discrepancy, MMD)度量。

在这里插入图片描述

3. 与RA算法进行对比

RA与EA对比如图13所示。EA计算更快无需任何标签信息,并且之后可以搭配任意欧式空间滤波器、特征提取、分类器等,使用更加灵活。实验证明,EA的效果提升也比RA更加明显。
在这里插入图片描述

4. 实验结果对比

我们在两个运动想象数据集(MI1、MI2)和一个事件相关电位数据集(ERP)上验证了EA的效果。MI2上的t-SNE可视化如图14所示。第一行中蓝色的点代表来自8个源域用户的数据分布,红色的点目标域用户(用户1)的数据分布。显然,EA对齐之前,源域和目标域数据分布差异很大。EA对齐之后,二者分布非常一致,有利于之后的迁移学习。第二行是用户2作为目标域时的结果,跟第一行结果类似。

在这里插入图片描述

5. 总结

到此,使用 数据对齐(EA) 已经介绍完毕了!!! 如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。

如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。

欢迎来稿

欢迎投稿合作,投稿请遵循科学严谨、内容清晰明了的原则!!!! 有意者可以后台私信!!

这篇关于运动想象 (MI) 迁移学习系列 (9) : 数据对齐(EA)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient