EMAP情感预测挑战赛完整解决方案(Python实现) | 1
← 返回项目列表

精品代码

EMAP情感预测挑战赛完整解决方案(Python实现)

IEEE CEC 2026 EMAP挑战赛开源方案,使用256通道EEG预测唤醒度/心率/GSR,1514行Python代码含特征工程/模型训练/推理,验证集唤醒度RMSE降低4.2%,包含训练好的模型可直接复现。

项目说明

【EMAP情感预测挑战赛完整解决方案】Python实现

项目简介

本项目是IEEE CEC 2026 EMAP Dataset Challenge的完整开源解决方案,使用256通道脑电图(EEG)频段功率特征预测情感状态(唤醒度arousal)和生理反应(心率heart rate皮肤电GSR),并包含二分类唤醒度分类任务。

核心特性

  • 完整竞赛框架:1514行Python代码,涵盖数据处理、特征工程、特征选择、模型训练、预测和报告生成
  • 验证集性能:在29个未见参与者上,唤醒度RMSE降低4.2%,心率RMSE降低0.8%,均超越朴素基线
  • 可复现性:固定随机种子(SEED=42),包含训练好的模型,可直接复现验证集结果
  • 特征工程:256→349特征,包含区域功率、频段比率、额叶不对称、时序上下文和试次内标准化
  • 特征选择:基于LightGBM的稳定性选择,每个目标保留64个最重要特征
  • 鲁棒后处理:试次内时序平滑、收缩到均值安全网、共享刺激先验
  • 训练好的模型:包含所有目标的训练模型,可直接推理
  • 完整文档:英文+中文README,详细方法论和消融实验

验证集结果对比(29个未见参与者)

目标指标本方案朴素基线改进
唤醒度RMSE0.30910.3226-4.2%
心率RMSE9.3519.429-0.8%
GSRRMSE1.02e-51.03e-5-0.9%
唤醒度(二分类)F10.626bonus

所有目标均超越朴素基线,唤醒度改进幅度最大。

方法论核心

核心思想

跨被试预测的关键挑战是个体差异。朴素"预测均值"基线出乎意料地强,直接在原始EEG上训练会过拟合到训练被试。

三大支柱

  1. 设计跨被试迁移的特征(试次内标准化、时序上下文)
  2. 利用共享刺激先验(所有人观看相同24个视频)
  3. 收缩到均值安全网(保证不输给朴素基线)

特征工程 (256 → 349)

  • 区域功率(20维):按头皮区域聚合,对噪声鲁棒
  • 频段比率(6维):Beta/Alpha等经典唤醒指数
  • 额叶不对称(2维):左右半球Alpha/Beta不平衡
  • 时序上下文:试次内9点滚动均值
  • 试次内Z标准化:移除个体基线(关键!)
  • 试次位置(t_norm):片段内系统趋势

模型与后处理

模型:LightGBM(唤醒度) / Ridge(心率、GSR)

后处理管道

  1. 试次内时序平滑(窗口1-15)
  2. 共享刺激先验(从训练集学习片段平均轨迹)
  3. 收缩到均值(alpha混合,保证不输基线)

消融实验

阶段唤醒度RMSE
朴素基线0.3226
原始EEG+LightGBM0.3249(更差)
+特征工程0.3172
+收缩安全网0.3137
+共享刺激先验(最终)0.3091

代码结构

11个模块 (1514行)

文件功能
prediction.py推理入口,加载模型预测
src/config.py全局配置(目标、特征池、路径)
src/data.py数据加载、缓存、解析
src/feature_engineering.py特征工程(区域、比率、时序、标准化)
src/feature_selection.py稳定性选择
src/models.py模型训练、平滑、收缩
src/stimulus_prior.py共享刺激先验
src/train.py训练主流程
src/evaluate.py评估指标(RMSE、MAE、R2、F1)
src/profile_data.py数据质量报告
src/make_slides.py生成报告PPT

依赖库

numpy, pandas, scikit-learn, scipy
lightgbm, xgboost, matplotlib
pyarrow, joblib, python-pptx

快速开始

环境要求

Python 3.8+
pip install -r requirements.txt

获取数据集

注意:EMAP数据集不在本仓库分发,需从官方渠道获取。

使用训练好的模型

python prediction.py --test_dir <Features_P*.csv文件夹> --out outputs/predictions

从头训练

python src/train.py
python prediction.py --test_dir val/ --out outputs/predictions
python src/make_slides.py

技术亮点

1. 跨被试泛化

挑战:每个人的EEG基线不同

解决:试次内Z标准化(移除个体基线)、频段比率(相对比率更一致)、区域聚合(减少噪声)

2. 时序结构

观察:情感状态缓慢变化

解决:时序上下文特征(滚动均值)、预测平滑(试次内平均)、试次位置(片段内趋势)

3. 共享刺激先验

洞察:所有人观看相同24个视频

实现:学习每个片段的平均轨迹,与个体预测混合

结果:唤醒度RMSE 0.3137 → 0.3091

4. 收缩到均值安全网

问题:弱信号目标可能不如基线

解决final = alpha * prediction + (1-alpha) * train_mean

alpha通过OOF RMSE优化,保证不输给"预测均值"。

应用场景

  • 情感计算:基于脑电的情绪识别系统
  • 人机交互:自适应UI根据用户情感调整
  • 心理健康:抑郁症、焦虑症客观评估
  • 神经科学:情感神经生理机制研究
  • 驾驶安全:疲劳和压力监测

包含内容

  • 11个Python源文件(1514行代码)
  • 训练好的模型(arousal、heartrate、gsr)
  • 选定特征CSV(每个目标64特征)
  • 预测时序图(3个目标)
  • 消融实验报告和PPT
  • 英文README + 中文README_CN
  • 完整SOLUTION.md方法论文档
  • requirements.txt依赖配置
  • MIT许可证

适用人群

  • 情感计算研究者
  • 神经科学研究者
  • 机器学习工程师
  • CEC竞赛参与者
  • 心理学研究者
  • HCI研究者

许可说明

代码采用MIT许可证,允许商业使用、修改和分发、私用。要求保留版权声明和许可证文本。EMAP数据集归其作者所有,需单独授权。

提示:本项目适合需要情感识别、生理信号分析、跨被试建模、时序预测的研究者和工程师。提供完整竞赛级框架、训练好的模型和详细方法论文档,可直接复现或二次开发。