一、数据集概览
WESAD(WEarable Stress and Affect Detection)是一个公开的多模态可穿戴生理信号数据集,由德国锡根大学(Universität Siegen)的 Philip Schmidt、Attila Reiss 等研究人员于 2018 年发布。该数据集旨在通过可穿戴传感器识别个体的压力与情感状态,是目前该领域引用最广泛的基准数据集之一
Tag:#WESAD #可穿戴计算 #情感计算 #生理信号处理 #时间序列 #数据预处理 #深度学习 #Wearable #AffectiveComputing #ECG #EDA #EMG #RESP #StressDetection
为什么选用 WESAD 数据集?
- 多模态、多通道外周生理信号 WESAD 同步采集了胸部(RespiBAN)和腕部(Empatica E4)两类设备的生理信号,涵盖心电图(ECG)、皮肤电活动(EDA)、肌电(EMG)、呼吸(RESP)、体温(TEMP)、及三轴加速度(ACC)等共计 8 个通道。这种丰富的信号组合为探索不同生理模态在压力与情感识别中的互补性提供了基础。
- 胸部信号质量高、标签清晰 胸部 RespiBAN 设备以 700 Hz 高采样率记录信号使得胸部数据成为模型训练的“干净”信源,尤其适合作为生理特征提取与算法验证的金标准参考。
- 腕部数据贴近实际部署场景 腕部 Empatica E4 信号采样率较低(BVP 64 Hz、EDA 4 Hz、TEMP 4 Hz),更接近消费级可穿戴设备的规格。因此,该数据集天然支持跨设备对比研究。这对于边缘计算场景下的鲁棒性分析具有重要价值。
- 情感状态区分明确且设计科学 实验通过标准化诱导材料(如风景视频建立基线、TSST 任务诱发社会压力、幽默视频诱发愉悦)获得了三类具有清晰心理学定义的情感标签。同时,数据集提供了 PANAS、STAI、SAM、SSSQ 等多套自评问卷结果,可用于探索主观感受与客观生理响应之间的关联。
- 官方向导与可视化工具降低使用门槛 数据集官网提供了详尽的文档说明(信号转换公式、同步方法、标签定义等),并配套了交互式可视化网站(WESADViz),允许研究者快速浏览任一受试者的信号波形与标签区间。这极大简化了数据探索与预处理验证过程,有助于及时发现异常片段或理解个体差异。
综上,WESAD 数据集凭借其高质量的多模态同步信号、严谨的实验设计及完善的辅助资源,成为本研究构建压力/情感识别模型的理想选择。
核心资源导航
- 数据集下载 :UbiComp 下载页面(截止目前 2026/4,UCI渠道已经失效,并且不建议使用 Kaggel 等非官方托管平台上的数据集)
- 官方可视化工具:WESAD Visualizer (wesadviz)(强烈推荐在写预处理代码前,利用该网站直观感受信号分布与标签边界)
- 论文:Introducing WESAD, a Multimodal Dataset for Wearable Stress and Affect Detection | Proceedings of the 20th ACM International Conference on Multimodal Interaction
实验设计:数据集共收录 17 名受试者的实验室数据,其中 S1 和 S12 因传感器故障被剔除,实际可用为 15 人。每位受试者依次经历以下情感状态:
| 状态 | 英文名称 | 诱导方式 | 标签 ID |
|---|---|---|---|
| 基线 | Baseline | 放松观看风景片段或阅读 | 1 |
| 愉悦 | Amusement | 观看幽默视频片段 | 3 |
| 压力 | Stress | 数学智力测试 + 社交压力(摄像头+监督者) | 2 |
完整实验还包括冥想状态(Meditation 1/2,标签 ID=4),以及过渡/未定义状态(标签 ID=0),标签 5/6/7 在数据集中应被忽略。
数据集文件组织结构
WESAD/
├── S2/
│ ├── S2_readme.txt # 受试者信息、数据采集及质量说明
│ ├── S2_quest.csv # 实验协议时间表与自评问卷答案
│ ├── S2_respiban.txt # RespiBAN 设备原始数据(700 Hz,含10列)
│ ├── S2_E4_Data.zip # Empatica E4 设备原始数据压缩包
│ └── S2.pkl # 同步后的数据字典(含 chest/wrist 信号和标签)
├── S3/
│ ├── S3_readme.txt
│ ├── S3_quest.csv
│ ├── S3_respiban.txt
│ ├── S3_E4_Data.zip
│ └── S3.pkl
├── S4/
│ └── ...
├── ...
├── S11/
│ └── ...
├── S13/ # 注意:S12 缺失
│ └── ...
├── S14/
├── S15/
├── S16/
├── S17/
└── (S1 和 S12 因传感器故障已移除)
SX.pkl 数据文件结构
这是 WESAD 数据集中最关键的预处理文件,我们通常基于该文件进行二次处理而不是使用原始数据S2_respiban.txt:
{
'subject': 'S2', # 受试者 ID
'signal': {
'chest': { # RespiBAN 数据
'ACC': np.ndarray,
'ECG': np.ndarray,
'EDA': np.ndarray,
'EMG': np.ndarray,
'Resp': np.ndarray,
'Temp': np.ndarray
},
'wrist': { # Empatica E4 数据
'BVP': np.ndarray,
'EDA': np.ndarray,
'TEMP': np.ndarray,
'ACC': np.ndarray
}
},
'label': np.ndarray # 标签序列,采样率 700 Hz
}
注意:label 数组以 700 Hz 采样,与 RespiBAN 的原始数据逐点对应。每个样本点的标签值为:
0:未定义/过渡期1:baseline2:stress(TSST)3:amusement(Fun)4:meditation5/6/7:忽略 数据规模:压缩包约 2.1 GB,解压后约 16.4 GB,包含约 6300 万条数据实例。
二、采集设备与信号参数
2.1 RespiBAN(胸戴设备)
RespiBAN Professional 佩戴于胸部,所有信号以 700 Hz 统一采样,包含 8 个传感器通道:
| 通道 | 单位 |
|---|---|
| ECG | mV |
| EDA | μS |
| EMG | mV |
| Respiration | % |
| Temperature | °C |
| ACC (XYZ) | g |
2.2 Empatica E4(腕戴设备)
E4 佩戴于受试者的非惯用手腕,各通道采样率独立:
| 通道 | 采样率 | 单位 |
|---|---|---|
| BVP(血容积脉搏) | 64 Hz | — |
| EDA(皮肤电活动) | 4 Hz | μS |
| TEMP(体温) | 4 Hz | °C |
| ACC(三轴加速度) | 32 Hz | 1/64g |
提示:E4 设备文件夹中的
HR.csv、IBI.csv、tags.csv为衍生数据,在原始数据处理时应忽略。官方文档明确指出,SX.pkl文件已包含完整的胸腕信号同步后的原始数据。
2.3 SX_quest.csv 深度解析(多维主观量表与生理基线控制)
在 WESAD 的 SX_quest.csv 文件中,除了前文提到的用于“逻辑标签对齐”的 # ORDER/START/END 时间表外,还包含了严格的受试者基线控制信息以及多套标准化心理测量问卷。这些数据构成了数据集的主观标签体系。
1. 实验前基线隔离
文件头部记录了受试者的人口统计学特征与生理状态前置条件(如 S9 的数据所示)。
- 控制变量:咖啡因摄入、剧烈运动、吸烟史、当前是否患病。
- 工程意义:这些字段是医学实验的“双盲实验”。例如在 S9 的数据中,
Do you feel ill today? YES。在严谨的临床数据清洗中,这类受试者的生理信号(如心率变异性 HRV、皮电 EDA)可能存在病理或免疫反应的异常基线漂移。这也是为什么在预处理代码中需要引入SPECIAL_SUBJECTS逻辑,对这类受试者的基线段进行截断甚至整体弃用提供简便处理。
2. 状态依从性问卷映射
在五个实验条件(Base, TSST, Medi1, Fun, Medi2)结束后,受试者需立即填写以下三套问卷。因此,在 CSV 中它们各自占据了 5 行数据,每一行严格对应按 # ORDER 排序的一个实验阶段。
| 问卷标识 | 心理学全称 | 测量维度 | 行数对应关系 | 量表尺度 |
|---|---|---|---|---|
# PANAS | 积极情感消极情感量表 | 评估当前的正向/负向情绪状态。WESAD 在标准的 20 项基础上额外增加了 4 项(Stressed, Frustrated, Happy, Sad)。 | 5 行 (对应 5 个阶段) | 1-5 分 (李克特量表) |
# STAI | 状态-特质焦虑量表 (State版本) | 评估当前瞬间的焦虑水平(区别于特质量表)。 | 5 行 (对应 5 个阶段) | 1-4 分 |
# DIM | SAM (Self-Assessment Manikins) | 在官方论文中称为 SAM,CSV 中缩写为 DIM (Dimensions)。仅评估情感的两个核心维度:效价(愉悦度) 与 唤醒度(激动度)。 | 5 行 (每行仅 2 个数值:Valence, Arousal) | 1-9 分 |
3. 特定应激反馈问卷(SSSQ)
# SSSQ(短版应激状态问卷)是 WESAD 中最特殊的存在:
- 唯一性:它仅在 TSST(压力诱导)阶段结束后填写,因此 CSV 中仅有 1 行数据。
- 去重设计:官方论文明确指出,完整的 SSSQ 包含 9 个项目,但为了减少受试者的问卷疲劳,其中前 3 项(Annoyed, Angry, Irritated / 烦恼、愤怒、易怒)已被合并入 PANAS 中。因此,
# SSSQ行中提取出的数值,实际上是去除了前 3 项后的 后 6 项(主要测量任务参与度与自我效能感)。
为何弃用主观问卷与个体信息?
尽管 PANAS、STAI、SAM、SSSQ 等标准化量表在心理学测量中具有黄金标准地位,且 SX_quest.csv 与 SX_readme.txt 中记录的个人基础信息(年龄、性别、BMI、咖啡因摄入等)看似能为模型提供额外特征维度,但在本研究的预处理与建模流程中,这些主观报告与元数据被全部过滤,仅保留同步后的生理信号与实验协议标签。这一决策基于以下五方面考量:
1. 官方数据结构混乱,整合成本高昂
个人基础信息以非结构化文本分散在 15 个 readme.txt 文件中,问卷答案则以分号分隔的异构格式嵌入 _quest.csv 的注释行内。这些元数据与 SX.pkl 中高度结构化的时序信号完全割裂,缺乏统一的解析接口与编码规范。强行整合需要为每一位受试者编写定制化文本解析逻辑,且在跨受试者对齐时极易引入人为偏差。官方文档亦未提供任何将此类离散元数据转换为机器学习特征的指导方案,任何主观处理都可能成为后续分析的潜在噪声源。
2. 样本量灾难:75 个高维向量无法支撑深度学习
若将问卷分数或个体属性作为附加特征输入神经网络,所能提供的训练样本量仅为 15 名受试者 × 5 个实验阶段 = 75 个静态特征向量。这与深度学习依赖的大规模梯度下降范式严重背离。即便采用嵌入层(如 Liapis 等人的尝试),75 个样本亦远不足以学习出具备统计意义的类别表示,模型极易在极小的元数据空间内迅速过拟合。
3. 时间粒度错配:滞后问卷与滑动窗口的不可调和矛盾
本研究以 60 秒滑动窗口切分连续生理信号流,每个窗口对应 128 Hz × 60 s = 7680 个采样点的高分辨率动态特征。而主观问卷是受试者在整个 5–15 分钟实验阶段结束后的滞后性、离散化总结。将单一的 PANAS 分数强加于阶段内的每一个滑动窗口,无异于假设受试者在整个压力任务期间的情绪状态是恒定不变的,这显然违背了情绪动态变化的生理学常识。问卷分数无法在时间维度上与具体信号切片建立逐点对应关系,强行对齐将造成严重的标签模糊与概念混淆。
4. 过拟合与泛化风险:个体信息成为模型偷懒的捷径
WESAD 仅包含 15 名有效受试者,属于典型的小样本生理数据集。在此设定下,引入性别、年龄、是否吸烟等受试者级静态属性,模型将倾向于“记住”特定受试者的身份特征(例如“27 岁男性 = 压力”)而非学习跨个体的普适生理模式。这严重违背了独立同分布假设,导致模型在训练集上表现虚高,而在未见过的受试者上泛化能力骤降。
典型案例:Liapis 等人(2021)的研究教训
该研究在 WESAD 数据集上尝试将性别、吸烟史、咖啡因摄入等类别变量通过实体嵌入(entity embeddings)融入深度神经网络。其报告的训练准确率高达 97.4% ,然而当模型被迁移至完全独立的 UX 评估数据集时,与真实用户自评的一致性(Kappa 系数)仅为 0.27(微弱一致)。
进一步剖析其训练流程发现,作者使用了被试内混合采样(从全部 15 人的 TSST 阶段共抽取 380 个 NS‑SCR 片段,随机 5‑折交叉验证),导致同一受试者的不同片段同时出现在训练集与测试集中。高达 97% 的准确率并非来自对压力生理模式的识别,而是模型窃取了个体身份信息所致。这一案例充分说明:在小样本生理数据集中引入个体元数据,即便使用先进的嵌入技术,仍难以规避被试内过拟合的陷阱。
5. 研究目标的本质解耦:用生理信号替代主观问卷
WESAD 原始论文的核心愿景之一,正是证明可穿戴传感器采集的客观生理信号足以替代繁琐、滞后且依赖受试者诚实度的主观问卷。本研究延续这一初衷,将模型构建为以多模态生理信号为输入、以实验协议时间区间为伪标签的端到端学习系统。通过完全摒弃问卷分数与个体元数据,我们迫使模型从信号波形本身挖掘与压力/情感状态相关的隐含生理表征。最终得到的模型本质上是一个隐式的、连续的生理情绪追踪器,其预测不依赖于任何事后问卷填写,更贴近真实世界可穿戴设备的无感监测场景。
小结:弃用主观问卷与受试者元数据,并非对心理学黄金标准的否定,而是基于数据工程可行性、样本效率、时序对齐精度、泛化鲁棒性及研究终极目标的综合权衡。这样能够确保了后续模型所学知识完全源于生理信号本身,为跨被试泛化能力的客观评估奠定了坚实基础。
关键内容须知:
在前文中,我们已经梳理了 WESAD 数据集的整体文件结构、双设备信号通道规格以及主客观标签体系。然而,在真正动手编写预处理代码之前,有几项官方文档中明确声明、但容易被忽略的关键细节必须提前理清。这些细节直接决定了标签对齐的准确性、数据截取的有效性,以及后续模型训练样本的纯净度。以下内容均源自 WESAD 官方 wesad_readme.pdf 文档,我将其中的核心约束摘录并解读如下。(github.com/WJMatthew/W…)
1. 标签与信号的时间基准
这一句是 WESAD 数据集所有标签对齐操作的唯一物理基准。它明确了两件事:
- 实验协议中每一段情感状态(Base、TSST、Fun 等)的起止标签,其时间零点与 RespiBAN 胸部设备开始录制的时刻完全一致。
- 后续在
SX.pkl文件中提供的label数组(700 Hz),正是以此零点为起点生成的逐点标签序列。
这意味着:无论我们如何对信号进行降采样、切片或重排,所有时间索引的换算都必须以 RespiBAN 录制开始为绝对原点。这是避免标签整体漂移的底线。
2. 阶段起止时间的精确定义与防止窗口越界
这一段给出了标签对齐的处理指南:
- 每个受试者文件夹下的
SX_quest.csv,其第 3 行(# START)和第 4 行(# END)存储了各阶段精确的起止分钟数(例如1.48表示 1 分 48 秒)。 - 结合上一条的时间基准,我们可以将这些分钟数转换为信号数组中的绝对采样点索引(例如:
start_idx = start_min × 60 × target_fs)。
在代码实现中,严格依据此处的 # START 和 # END 进行窗口截取,是防止两类致命错误的唯一手段:
- 错误一:将两个任务阶段之间的过渡期(标签为 0)误标为有效情感类别。
- 错误二:生成的滑动窗口跨越了两个不同任务的边界,导致窗口内生理信号与赋予的单一标签产生冲突(标签污染)。
3. 明确需要忽略的标签 ID
官方在提供 label 数组时,预先定义了 8 种标签值,但明确要求忽略 ID 5、6、7(通常为未使用的预留位或无关状态)。此外,ID 0 代表过渡/未定义阶段,同样不应作为分类目标。
在我们的预处理流程中,仅保留了 ID 1(Baseline)、2(Stress/TSST)、3(Amusement/Fun)三类核心情感状态,ID 4(Meditation)根据研究需要可选择保留或舍弃。明确哪些标签应当被丢弃,是净化训练集类别空间的前提,避免了模型在无效类别上浪费容量或产生歧义。
三、标签对齐机制(重点与核心)
在阅读官方文档和进行代码实现时,极易将两种不同维度的“对齐”混淆。必须将其明确拆分为物理信号层对齐与逻辑标签层对齐。
3.1 第一层:物理信号对齐(官方已完成,封装于 pkl)
RespiBAN 与 E4 之间存在时钟漂移。官方采用了一种物理对齐策略:受试者用戴 E4 的手在胸带上做双击手势,通过识别两端加速度信号的特征尖峰完成时间轴对齐。
这一步的最终成果被固化在 SX.pkl 文件中。注意:pkl 文件中的 label 数组是以 700 Hz 采样的,它与胸带数据逐点对齐,作为整个数据的绝对时间锚点。
3.2 第二层:逻辑标签对齐(需要我们代码实现)
官方的 pkl 只提供了 700Hz 的离散标签流,但并没有直接告诉你“第几分钟到第几分钟是压力状态”。 真正的逻辑标签存储在 SX_quest.csv 中,格式为 [分钟.秒](例如 start=1.30, end=6.30)。
我们要解决的核心工程问题是:将 CSV 中以“分钟”为单位的连续时间区间,精准映射到经过重采样(如统一降维至 128 Hz)后的离散采样点索引上
3.3 代码中的标签对齐逻辑
标签对齐的核心流程如下:
(1)解析 _quest.csv 获取各阶段起止时间
从非结构化的 CSV 中提取纯数值的时间边界
def parse_quest_csv(subject_id: str, wesad_root: Path) -> pd.DataFrame:
quest_path = wesad_root / subject_id / f"{subject_id}_quest.csv"
df_raw = pd.read_csv(quest_path, sep=';', header=None, skip_blank_lines=True)
# 定位包含特定标识的行,并剔除 NaN,提取 task、start_min、end_min
order_row = df_raw[df_raw[0].str.contains('# ORDER', na=False)].values[0]
start_row = df_raw[df_raw[0].str.contains('# START', na=False)].values[0]
end_row = df_raw[df_raw[0].str.contains('# END', na=False)].values[0]
return pd.DataFrame({
'task': pd.Series(order_row[1:]).dropna().tolist(),
'start_min': pd.Series(start_row[1:]).dropna().astype(float).tolist(),
'end_min': pd.Series(end_row[1:]).dropna().astype(float).tolist()
})
这里提取的时间单位是分钟(start_min, end_min),后续需转换为采样点索引。
(2)重采样到统一目标采样率
RAW_FS = 128 # 目标统一采样率,可根据实际需求,建议128-256左右
ORIGINAL_CHEST_FS = 700
WRIST_BVP_FS = 64
WRIST_EDA_FS = 4
WRIST_TEMP_FS = 4
所有原始信号(胸戴 700 Hz,腕戴 64/4/4 Hz)均被重采样到 128 Hz。这一步之后,所有信号的时间轴统一,便于窗口切分。
(3)将分钟时间转换为 128 Hz 采样点索引
start_idx = int(start_min * 60 * RAW_FS) # 例如 1.5 分钟 → 1.5×60×128 = 11520
end_idx = int(end_min * 60 * RAW_FS)
这里隐式地假定了:重采样后的第 0 个样本对应 RespiBAN 开始录制的时刻,即标签时间基准与重采样信号起点一致。由于 SX.pkl 中的信号与标签已在 700 Hz 级别同步,重采样操作保持了这个对齐关系。
(4)滑动窗口切分并赋予标签
for i in range(start_idx, end_idx - window_len + 1, stride_len):
w_start = i
w_end = i + window_len
# 提取窗口数据 ...
chest_labels.append(label) # 整个窗口赋予同一标签
注意:代码使用了滑动窗口(60 秒窗口,10 秒步长)将长序列切分为训练样本,整个窗口被赋予同一标签。这要求窗口内部标签一致,而上述切分逻辑通过
start_idx和end_idx确保了窗口不跨越阶段边界,因此不存在标签混合问题。
四、预处理代码核心逻辑梳理
预处理代码整体分为三个模块:
4.1 参数配置
- 数据根目录
WESAD_ROOT - 目标采样率
RAW_FS = 128 Hz - 滑动窗口:窗口 60 秒,步长 10 秒
- 任务映射:
{'Base':1, 'TSST':2, 'Fun':3, 'Medi1':4, 'Medi2':4}
4.2 主流程
- 遍历 15 名有效受试者(S2–S17,排除 S12)
- 加载
SX.pkl,解析SX_quest.csv - 对各通道信号重采样至 128 Hz
- 按协议时间区间切分滑动窗口
- 保存为
.npy格式:{sid}_X.npy(数据)和{sid}_y.npy(标签)
4.3 代码中值得注意的细节
(1)Special Subjects 处理
if subject_id in special_subjects and 'Base' in protocol_df['task'].values:
base_idx = protocol_df[protocol_df['task'] == 'Base'].index[0]
protocol_df.loc[base_idx, 'start_min'] = (start_min + end_min) / 2
该逻辑针对部分特殊受试者,将其基线阶段的 start_min 设置为起止时间的中点。其设计初衷在于:某些受试者在基线任务初期,生理信号(如皮肤电导 EDA)尚未完全回落至平稳水平,若直接截取整段基线,模型将被迫学习一个包含非稳态过渡信号的低质量样本。
下图以受试者 S6 为例展示了这一现象:在 Base 阶段的前半段,其 EDA 信号明显处于较高激活水平,而非预期的放松状态。
对于受试者 S6,基线任务前段的 EDA 信号并未降至低水平平稳区间。若不对该时段进行特殊裁剪,模型将不得不应对同一标签内部剧烈的分布漂移,这对分类器的鲁棒性提出了严峻的挑战。
尽管代码中预留了该修正开关,但在本研究的最终实践中,并未启用此修正逻辑。我们选择保留原始完整的时间区间,转而依赖模型架构本身的时序建模能力与数据驱动的特征学习策略,去自适应地处理任务初期可能存在的信号非平稳性。这一取舍降低了预处理阶段的人工干预程度,使整体流程更为标准化。
(2)任务筛选
if task not in ['Base', 'TSST', 'Fun']:
tqdm.write(f" - {sid}: 跳过任务 '{task}'")
continue
本研究的分类目标聚焦于基线(Base)、压力(TSST)与愉悦(Fun)三类核心情感状态。对于实验协议中的其他任务——尤其是冥想阶段(Meditation 1/2)——我们选择在预处理阶段主动过滤。
过滤依据如下:
- 生理响应高度个体化:不同受试者在冥想期间的生理反应模式差异极大,缺乏一致的群体趋势。
- 有效信号时长有限:冥想任务本身的持续时间较短,可切分出的滑动窗口数量稀少,难以支撑稳定的批次训练。
- 噪声引入风险:尽管保留冥想阶段可能在个别受试者上提升分类精度,但从全样本集评估的角度看,它更倾向于引入额外的类间混淆与训练噪声,对模型的整体泛化能力构成负面影响。
基于上述考量,仅保留 Base、TSST、Fun 三类的策略有助于纯净标签空间、稳定训练梯度,是权衡模型性能与数据质量后的理性选择。
五、总结
WESAD 数据集凭借其多模态同步生理信号、精确的时间标签对齐机制以及严谨的情感诱发范式,已成为可穿戴压力与情感计算领域最具影响力的公开基准之一。本文从实际预处理代码出发,系统梳理了该数据集的文件结构、信号规格、标签对齐原理及常见误区,并重点阐释了标签对齐的绝对基准, 主观问卷与元数据的主动弃用与任务阶段的精选策略等方面
通过上述预处理流程,我们最终构建了一个纯净、时序对齐、完全依赖客观生理信号的多模态样本集。该样本集以 128 Hz 统一采样率、60 秒滑动窗口(10 秒步长)的格式组织,可直接用于各类深度时序模型的训练与验证。
关于源代码
本文所讨论的完整预处理代码目前随相关论文处于同行评审阶段,暂未公开发布至 GitHub。若您在研究或工程中需要参考该代码实现,欢迎通过站内私信直接联系我,我将乐于在许可范围内提供必要的协助与交流。
写在最后
在 1D 生理信号与医疗 AI 这一垂直领域中,一个不容回避的现实是:高质量的开源论文与配套代码仍属稀缺资源。即便是某些发表于一区、二区顶刊的工作,其公开资料中亦不乏预处理细节缺失、关键参数模糊、标签对齐语焉不详等问题。这并非个别现象,而是整个领域在可复现性上面临的系统性困境。
我在项目启动之初并未充分意识到这一状况,以至于在数据对齐、标签净化等基础环节反复试错,前后耗费了近两个月的时间来填平这些“开源但不开放”的隐形沟壑。这段经历让我深刻体会到:一篇论文的结论或许辉煌,但通往复现结论的那条暗路,往往需要后来者独自摸索。
正是基于这份切身体会,我决定将 WESAD 数据集预处理过程中的核心逻辑、潜在陷阱与关键决策完整记录于此。如果这篇文档能够为后来者少走一些弯路,那么它便完成了我的期望。
共勉
致谢:感谢 WESAD 数据集作者 Philip Schmidt、Attila Reiss 等研究者为社区贡献了这一高质量的公开资源,以及 Kristof Van Laerhoven 团队提供的 WESADViz 可视化工具,极大降低了数据探索的门槛。
引用
[1] Liapis, A., Faliagka, E., Antonopoulos, C. P., Keramidas, G., & Voros, N. (2021). Advancing Stress Detection Methodology with Deep Learning Techniques Targeting UX Evaluation in AAL Scenarios: Applying Embeddings for Categorical Variables. Electronics, 10(13), 1550. 利用深度学习技术推进压力检测方法论,针对 AAL 场景中的用户体验评估:应用于类别变量嵌入