IEEEPPG Dataset — 腕戴 PPG 运动心率估计的 TSER 回归基准

IEEE Signal Processing Cup 2015 原始腕戴 PPG 数据的 Monash 二次封装:3096 条 5 维等长时间序列(2 通道 PPG + 3 轴加速度,125 Hz,8 秒窗 6 秒重叠),用运动伪影下的脉搏波估计心率,是时间序列外回归(TSER)档案的经典健康监测样本,Zenodo CC BY 4.0 全开放

来源 Zenodo IEEEPPG Dataset v1(doi:10.5281/zenodo.3902710;概念 DOI 10.5281/zenodo.3902709):IEEEPPG_TRAIN.ts(81.4 MB)+ IEEEPPG_TEST.ts(60.2 MB),共 141.7 MB;sktime .ts 格式;5 维 = 2 通道腕戴 PPG(绿光 515nm)+ 3 轴加速度,125 Hz,8 秒窗/6 秒重叠,长度 1000,目标为 BPM 心率回归值发布时间: 2026-10-13最后更新: 2026-10-20 阅读 33
IEEEPPG Dataset — 腕戴 PPG 运动心率估计的 TSER 回归基准

信息速览

数据集名称IEEEPPG Dataset — 腕戴 PPG 运动心率估计的 TSER 回归基准
数据类型原始数据,时序数据,数值数据
规模原始竞赛:train 12 名受试者(跑步机变速跑步,每人约 5 分钟)+ test 8 名受试者共 10 个 session(4 个混合手臂运动 + 6 个高强度手臂运动);受试者年龄 18-35
接入方式Zenodo IEEEPPG Dataset v1(doi:10.5281/zenodo.3902710;概念 DOI 10.5281/zenodo.3902709):IEEEPPG_TRAIN.ts(81.4 MB)+ IEEEPPG_TEST.ts(60.2 MB),共 141.7 MB;sktime .ts 格式;5 维 = 2 通道腕戴 PPG(绿光 515nm)+ 3 轴加速度,125 Hz,8 秒窗/6 秒重叠,长度 1000,目标为 BPM 心率回归值
AI 就绪度

INFOBOX — IEEEPPG 一屏速览

维度 内容
本质 IEEE Signal Processing Cup 2015 腕戴 PPG 数据的 Monash 二次封装回归基准(非挑战赛、非新采集)
团队 Monash University(Tan / Bergmeir / Petitjean / Webb 四人)
论文 arXiv:2006.10996(2020);底层原始数据 TROIKA(IEEE TBME 2015, doi:10.1109/TBME.2014.2359372)
数据 3096 条 5 维序列(2 PPG + 3 轴加速度),train 1768 / test 1328
规格 125 Hz;8 秒窗 / 6 秒重叠(步进 2 秒);序列长度 1000;无缺失
任务 时间序列外回归(TSER):PPG + 加速度 → 心率 BPM
采集 train 12 人跑步机变速跑步;test 8 人 10 session(混合+高强度手臂运动)
文件 IEEEPPG_TRAIN.ts(81.4 MB)+ IEEEPPG_TEST.ts(60.2 MB)= 141.7 MB,sktime .ts 格式
获取 Zenodo DOI 10.5281/zenodo.3902710,CC BY 4.0 公开直链
许可 文件级 CC BY 4.0;原始数据声明学术/竞赛自由使用须引用
基准 档案 13 模型基准,Rocket 平均排名 3.6842 最准(全档案口径,非 IEEEPPG 单集)
库内互链 PPG-DaLiA(同档案同领域)、BIDMC PPG(同档案来源)、Apnea-ECG(ECG 心率主题)

IEEEPPG 是一个"把一场竞赛的腕表数据变成回归基准"的数据集:2015 年 IEEE 信号处理杯(Signal Processing Cup)出了一道题——让选手用戴在手腕上的光电容积脉搏波(PPG)传感器,在剧烈运动中估计心率,难点在于跑步和挥拳带来的运动伪影会彻底淹没脉搏信号。竞赛用 12 人的跑步机数据做训练集、8 人 10 场手臂运动数据做测试集。五年后,澳大利亚莫纳什大学(Monash University)团队把这批数据重新封装成一个标准化的时间序列回归(TSER)数据集,取名 IEEEPPG,把通道精简成 2 路 PPG + 3 轴加速度共 5 维,统一切成 1000 步的等长序列,挂在 Zenodo 上以 CC BY 4.0 全开放。于是它从"一场比赛的训练材料"变成了"时间序列回归研究的标准测试台"。

导语读法三则:

  1. 只想下数据:直奔 §6——Zenodo 两个 .ts 文件直接下载,注意是 sktime 专有格式,别用 pandas 硬读。
  2. 关心任务定义:直奔 §4——"时间序列外回归(TSER)"是这个数据集的立足点,理解它才理解为什么心率估计被包装成回归问题。
  3. 做算法评测:直奔 §5 与 §7——同档案里还有 PPG-DaLiA、BIDMC 三个兄弟数据集,横向对比更有意义。

§0 导读:这个数据集解决什么问题

心率监测的可穿戴化是一场"从胸带到腕表"的迁移,而迁移的核心障碍是运动伪影。胸带式 ECG 贴在皮肤上、波形稳定;腕表式 PPG 靠一束绿光打进皮下血管、看反射光随血容量变化——一旦戴表的手开始跑动、挥拳、抖动,血流信号和运动噪声就搅在一起,信噪比急剧下降。用数学语言说,这是一个典型的"混叠"问题:你要从一个被强干扰污染的周期信号里估出它的基频(心率),而且干扰本身也是准周期的(跑步步频、挥臂节奏),两者频率靠近时极易锁错。

IEEEPPG 的价值在于,它把这个工程难题标准化成了机器学习问题。原始竞赛数据提供了实测的 PPG + 加速度 + ECG(心率真值),Monash 团队做了三件事:第一,把任务明确定义为"时间序列外回归(Time Series Extrinsic Regression, TSER)"——输入一段多变量时间序列,输出一个与输入不同义的连续标量(这里是与 ECG 算出的心率,而非 PPG 自身周期);第二,把数据规格统一——5 维、125 Hz、8 秒窗、6 秒重叠、长度 1000、无缺失,让任何回归模型都能平等地吃进去;第三,把它编入一个 19 数据集的大档案,与能源、环境、情感等领域的回归任务并列,作为方法论的通用测试台。

§0 读法三则:

  1. 这个条目是一个"二次封装数据集":它的历史价值来自 2015 年的竞赛,学术价值来自 2020 年的标准化——理解这层双身份才能理解它的许可与血统(§1、§3)。
  2. 全文硬数字(3096 / 1768 / 1328 / 1000 / 125 Hz / 141.7 MB)均出自 Zenodo 记录页与档案论文;唯一的分窗口径冲突(1768/1328 vs 1765/1327)已在坑 2 存照。
  3. 检索时务必拼对名字——数据集叫 IEEEPPG(三个 P),而任务头/brief 写的"IEEEPG"检索极易空手(坑 1)。

§1 数据集速览:十问十答

Q1:IEEEPPG 的"3096"从哪来?
它来自 IEEE Signal Processing Cup 2015 的两批原始记录。Monash 团队把连续的 PPG/加速度信号按 8 秒窗、6 秒重叠(即每 2 秒前移一次)切成窗口,每个窗口对应一个心率标签,最终得到 3096 条 5 维等长序列。其中 1768 条来自原始训练集、1328 条来自原始测试集,沿用竞赛的 train/test 划分。

Q2:它和"IEEE Signal Processing Cup 2015"是什么关系?
是同一份数据的两代形态。竞赛(SPC 2015)提供了原始采集设备、协议与评测,数据由张喆(Z. Zhang)团队采集并支撑了著名的 TROIKA 算法;IEEEPPG 是 2020 年 Monash 团队对这批数据的回归化二次封装,去掉了 ECG 通道、统一了格式,纳入 TSER 档案。所以它不是 IEEE 官方数据集,而是 Monash 的衍生产物。

Q3:5 维具体是哪 5 个通道?
2 通道 PPG + 3 轴加速度。PPG 由腕部两只脉搏血氧仪采集(绿光 LED,波长 515 nm,两枚传感器中心间距 2 cm);加速度由同位置的三轴加速度计采集。原始数据里的 1 通道 ECG 不在封装版内——它只被用来计算每窗口的心率真值。

Q4:心率标签是怎么来的?
不是人工标注,而是由同步采集的 ECG 自动计算:对每个 8 秒窗口,取 ECG 得到的平均心率(BPM)作为该窗口的回归目标。这与竞赛规则一致——选手需要让自己的 PPG 估计逼近 ECG 参考值。

Q5:为什么任务叫"外回归(extrinsic regression)"?
因为它预测的目标值与输入序列"不同义"。普通时间序列预测(forecasting)是预测自身未来值(如用昨天的股价预测今天);而"外回归"是用一段信号预测一个外部连续量——这里是用 PPG 波形预测心率数值,二者量纲、物理意义都不同。这与库内的 PPGRR/HR/SpO2 数据集同属一类。

Q6:训练集和测试集的受试者构成?
按原始竞赛划分:训练集是 12 名受试者在跑步机上的变速跑步记录,每人约 5 分钟;测试集是 8 名受试者的 10 个 session,其中 4 个是前臂/上臂混合运动,6 个是高强度手臂运动(如拳击),每 session 约 5 分钟。受试者年龄 18-35 岁。

Q7:数据规模会很大吗?
不大。文件总共只有 141.7 MB——训练文件 81.4 MB、测试文件 60.2 MB。序列长度 1000、3096 条、5 维,属于"小而精"的经典基准规模,笔记本就能全量加载。

Q8:格式是什么、怎么读?
是 .ts 文件,即 sktime 时间序列专有格式(TSER 单文件变体),不是普通 CSV/TSV。用 pandas.read_csv 会读错;应用 sktime 的 load_from_tsfile 载入。文件命名直观:IEEEPPG_TRAIN.ts 与 IEEEPPG_TEST.ts。

Q9:许可和获取门槛如何?
Zenodo 记录页把文件许可标为 CC BY 4.0,公开直链、无需注册、无申请流程;数据集描述文案另外声明"所有数据集有版权,但可自由用于 SPC 或自己的学术研究,只要恰当引用"。所以这属于全开放数据集,唯一义务是引用 TROIKA 论文与档案论文。

Q10:为什么它对 AI-Ready 重要?
它是"信号类回归基准"的教科书样本:小体量、格式规范、许可清晰、任务定义明确、有配套论文与全档案横向对比。它也是可穿戴生理信号研究里最常被拿来当"运动伪影鲁棒性"测台的数据之一——凡是做腕表心率算法的,几乎都绕不开它或它的兄弟 PPG-DaLiA。

§2 数据构成与规格

2.1 规模与划分

IEEEPPG 的规模可以用一行说清:3096 条 5 维时间序列,train 1768 / test 1328,每条长度 1000 时间步。

项目 数值 来源
序列总数 3096 Zenodo 描述「3096, 5 dimensional time series」
训练序列 1768 档案论文 Table 1(IEEEPPG:Train 1768)
测试序列 1328 档案论文 Table 1(IEEEPPG:Test 1328)
维度 5(2 PPG + 3 轴加速度) Zenodo + 档案论文
序列长度 1000 档案论文 Table 1
缺失值 无 档案论文 Table 1(Missing: No)
采样率 125 Hz Zenodo + TROIKA 论文
总文件体积 141.7 MB Zenodo Files

需要特别指出:1768 + 1328 = 3096,两个划分之和正好等于序列总数,说明 Monash 没有额外丢样本,train/test 划分是完整切分。这一致性也侧面印证了档案论文数字与 Zenodo 描述的对齐。

2.2 五维通道的物理含义

这 5 维不是随机选的,而是竞赛设备能同步输出的信号子集:

  1. PPG-1、PPG-2:两路光电容积脉搏波。传感器是两只绿光 LED 脉搏血氧仪(波长 515 nm),戴在腕部,两枚探头中心间距 2 cm。之所以是"两路",源自原始采集用了双探头设计——这为研究者提供了通道融合/去噪的空间。
  2. ACC-x、ACC-y、ACC-z:三轴加速度。同位置的三轴加速度计输出,记录腕部在三个正交方向上的运动加速度。它是运动伪影的直接代理信号——绝大多数算法都用加速度来估计并抵消运动对 PPG 的干扰。

被有意剔除的第 6 个通道是 ECG(1 通道,胸部湿电极采集)。ECG 在这个数据集中的角色是"裁判"而非"选手":它精确反映真实心动周期,被用来算出每个窗口的心率真值,然后就不提供给模型了。所以 IEEEPPG 是一个纯粹的"腕表信号 → 心率"任务,不允许模型偷看胸带答案。

2.3 序列长度为什么是 1000

1000 不是随意取的,而是采样率 × 窗长的直接乘积:

  • 采样率 125 Hz
  • 窗口长度 8 秒
  • 125 × 8 = 1000 采样点

这就是为什么所有序列都是等长 1000 步。而"6 秒重叠、步进 2 秒"决定了窗口总数:一段时长 $T$ 秒的记录,窗口数约为 $(T - 8)/2 + 1$。原始训练集 12 人各约 5 分钟(300 秒)——每人约 (300-8)/2+1 ≈ 147 个窗口——12 人合计与 1768 同量级,数字自洽。

2.4 数据集在档案中的位置

IEEEPPG 是 Monash/UEA/UCR 时间序列外回归(TSER)档案 19 个数据集中的一个,归入"健康监测(Health Monitoring)"类,与以下三个兄弟数据集同组:

数据集 Train Test 长度 维度 任务
IEEEPPG 1768 1328 1000 5 心率估计
PPGDalia 43215 21482 256, 512 4 心率估计
BIDMCRR 5471 2399 4000 2 呼吸率估计
BIDMCHR 5550 2399 4000 2 心率估计
BIDMCSpO2 5550 2399 4000 2 血氧估计

从这张表能读出 IEEEPPG 的形态特征:它是组内序列最短(1000)、维度最高(5)、样本量最小(3096)的一个。序列短意味着单窗口信息密度有限、更依赖建模先验;维度高意味着通道融合有价值;样本量小意味着容易过拟合、对跨受试者泛化是更严峻的考验。

2.5 与 PPG-DaLiA 的对照

同为 PPG 心率估计,PPGDalia 与 IEEEPPG 代表了两条采集路线的差异:

  • PPG-DaLiA:15 名受试者在真实日常活动(走路、办公、开车、家务)中记录,1 通道 PPG + 三轴加速度共 4 维,采样率 64/32 Hz,样本量大(6 万余窗口)。它测的是"日常活动下的稳健性"。
  • IEEEPPG:12+8 名受试者在受控运动场景(跑步机变速、手臂高强度运动)中记录,2 通道 PPG + 三轴加速度共 5 维,125 Hz。它测的是"剧烈运动伪影下的极限鲁棒性"。

两者互补:真正鲁棒的心率算法应在两者上都表现良好。库内 PPG-DaLiA 已有独立条目(rid 202),可对照阅读。

2.6 规格速查卡

数据集名:    IEEEPPG Dataset
序列数:      3096(train 1768 / test 1328)
维度:        5(PPG×2 + ACC×3)
序列长度:    1000 步
采样率:      125 Hz
分窗:        8 秒窗 / 6 秒重叠(步进 2 秒)
缺失值:      无
目标:        心率 BPM(回归标量,由 ECG 计算)
格式:        sktime .ts
文件:        IEEEPPG_TRAIN.ts (81.4 MB), IEEEPPG_TEST.ts (60.2 MB)
许可:        CC BY 4.0
DOI:         10.5281/zenodo.3902710

§3 采集与构建:从竞赛设备到回归基准

3.1 原始采集场景(2015)

IEEEPPG 的底层数据来自 IEEE Signal Processing Cup 2015 的官方采集。该届竞赛主题为"Heart Rate Monitoring During Physical Exercise Using Wrist-Type Photoplethysmographic (PPG) Signals"(用腕戴 PPG 在运动中监测心率),由张喆团队组织并采集数据。采集装置的关键设计如下:

  1. 腕带设备:一只可舒适佩戴的腕带,内嵌两只脉搏血氧仪(绿光 LED,515 nm)与一只三轴加速度计。两枚 PPG 探头中心间距 2 cm,加速度计与 PPG 同位置,便于做运动-脉搏的时域配准。
  2. 胸部 ECG:同步用湿电极从胸部采集单导联 ECG,作为心率真值的黄金标准。
  3. 传输与采样:所有信号 125 Hz 同步采样,经蓝牙实时传至附近计算机。
  4. 受试者:年龄 18-35 岁。

3.2 训练集协议:跑步机变速

原始训练集(IEEE_Training)由 12 名受试者构成,每人在跑步机上以变化的速度跑步,每段记录约 5 分钟。这个协议模拟的是"运动强度持续变化"的经典场景:步频随速度改变,而步频与心率的频率有时会相互靠近,制造频率歧义——这正是运动伪影鲁棒性评测的核心难点。

3.3 测试集协议:手臂高强度运动

原始测试集(IEEE_Test)由 8 名受试者、10 个 session 构成,比训练集更刁钻:

  • 4 个 session:前臂与上臂的混合运动(手臂锻炼类动作);
  • 6 个 session:高强度手臂运动,如拳击等剧烈挥臂动作。

每 session 约 5 分钟。之所以测试集故意选手臂运动,是因为腕表戴在手臂上,手臂的剧烈不规则运动制造的运动伪影远比下肢跑步更凶猛——这是对算法泛化能力的极限施压。也因此,训练(跑步)与测试(挥臂)之间存在运动类型分布偏移,这是使用该数据集时必须意识到的关键特性(见坑 5)。

3.4 二次封装流程(2020)

Monash 团队在 2020 年把原始数据加工成 IEEEPPG,流程可概括为四步:

  1. 通道裁剪:只保留 2 通道 PPG + 3 轴加速度共 5 维,丢弃 ECG(改为只在标签生成阶段使用)。
  2. 分窗:应用长度为 8 秒的滑动窗口,步进 2 秒(即 6 秒重叠),得到 1000 步的等长序列。
  3. 标签生成:对每个窗口,取同步 ECG 的平均心率作为回归目标(BPM)。
  4. 格式统一:导出为 sktime 的 .ts 格式,并提供官方 train/test 划分,使 1768/1328 的切分可直接复现。

3.5 为什么重采样到统一格式有意义

原始竞赛数据是连续记录,各受试者时长不一、格式各异;研究者每做一次实验都要自己写清洗与切窗代码,导致结果难以横向比较。IEEEPPG 的统一化解决了三个问题:

  • 可比性:所有研究者在同一份固定划分上评测,结果可复现;
  • 可接入性:sktime .ts 格式被大量时序工具链原生支持,降低上手成本;
  • 任务清晰:把模糊的"做心率算法"固化为"TSER 回归任务 + RMSE 指标",便于与其它领域的回归方法同台竞技。

3.6 采集与构建的局限

必须诚实指出这一流水线的边界:统一分窗把连续记录切成了独立样本,丢失了受试者级分组信息与连续时间上下文——研究者若要做跨受试者(leave-subject-out)评估,需要自己从窗口反推受试者归属,而封装版本并未显式提供该映射。此外,序列被填充/截断为等长 1000 也意味着边界窗口的信息完整性不一。这些都在源头上限制了该数据集能做与不能做的实验类型。

§4 任务定义:什么是时间序列外回归

4.1 从"预测未来"到"预测外部量"

大多数人对时间序列机器学习的第一印象是"预测未来"——用过去的价格预测明天的价格、用昨天的用电量预测今天的用电量。学术上这叫时间序列预测(Time Series Forecasting, TSF):目标与输入同义,都是同一条序列的未来值。

IEEEPPG 属于另一类问题:时间序列外回归(Time Series Extrinsic Regression, TSER)。

定义(Tan et al. 2020 口径):给一段单变量或多变量时间序列,预测一个连续的标量,该标量不必是序列的未来值、也不必与该序列同义,可以来自另一个信号源。

在心率的例子里:输入是腕部 PPG 波形与加速度波形(5 维时间序列),输出是一个数值——当前心率(次/分,BPM)。心率这个数值并不"存在于"PPG 波形里等待被读出,而是需要通过脉搏周期推断的外部生理量。这就是"外(extrinsic)"的含义。

4.2 与外回归相对的两类任务

为把 TSER 定位清楚,可对比三类常见任务:

任务 英文 输入 输出 例子
时间序列分类 TSC 序列 离散类别 这段 EEG 是癫痫还是正常
时间序列预测 TSF 序列 同序列未来值 用昨天用电量预测今天
时间序列外回归 TSER 序列 外部连续量 用 PPG 估计心率

IEEEPPG 正坐在第三行。理解这一点很重要:它决定了评估指标是回归指标(RMSE/MAE)而不是分类准确率,也决定了它与分类档案(UCR/UEA)在方法上不同的挑战。

4.3 为什么这个任务难

用 PPG 估计心率在受控静息条件下并不难——脉搏波的周期几乎就是心动周期。真正的难点全在"运动"二字:

  1. 运动伪影混叠:手臂运动改变皮肤与传感器的相对位置、改变局部血流,直接污染 PPG 波形。
  2. 频率歧义:跑步步频或挥臂节奏本身是准周期的,可能与心率同频段。当两者频率接近,算法容易"锁"到运动频率而非心跳频率。
  3. 个体差异:不同人的皮肤、血管、佩戴松紧都会改变 PPG 形态,跨受试者泛化是硬骨头。
  4. 真值成本:静息时心率慢变、可直接读;运动时心率快速变化,而它只能靠同步 ECG 提供——这正是多数数据集带 ECG 通道的原因。

4.4 回归目标的物理与统计性质

心率(BPM)作为回归目标有其特殊性:

  • 范围有限:静息约 60-80、运动峰值可达 180+,不同数据集区间不同。评 RMSE 时,误差的量级直接与心率区间挂钩。
  • 准周期:相邻窗口的心率高度相关(生理上不可能突变),这提示时序建模/平滑有价值。
  • 指标敏感:因为区间宽,RMSE 单看绝对值意义有限,跨数据集比较需谨慎(见 §7.4)。

4.5 与库内同类任务的对照

千方病案医数集内与 IEEEPPG 同属"生理信号回归/估计"的条目包括:PPG-DaLiA(rid 202,PPG+ACC 估心率)、BIDMC PPG(rid 74,PPG+ECG 估 RR/HR/SpO2)、MIMIC-III-EXT-PPG(rid 928,ICU PPG 波形)。它们共同构成"可穿戴/临床生理信号估计"家族:PPG-DaLiA 测日常活动、BIDMC 测临床静息、IEEEPPG 测剧烈运动,形成活动强度谱系。做方法比较时,把三者一起用能刻画算法在不同运动强度下的行为曲线。

4.6 任务的现代延伸

IEEEPPG 原始任务(单窗口 → 单心率)在深度学习时代衍生出若干变体:

  • 逐窗口独立回归:最朴素,直接对每个 1000 步窗口回归一个 BPM;
  • 时序平滑回归:利用相邻窗口相关先验做后处理或端到端建模;
  • 频域回归:把 PPG 变换到时频域后回归(如 CNN 吃频谱图);
  • 级联去噪回归:先用加速度估计运动伪影并从 PPG 中扣除,再估心率。

这些延伸说明:数据集定义了任务接口,但方法空间很宽——这也是一个"小数据集"能长期被引用的原因。

§5 基准与模型

5.1 档案论文的基准设置

Tan 等人在档案论文(arXiv:2006.10996)中对包括 IEEEPPG 在内的 19 个数据集做了统一的基线评测,其协议要点:

  • 指标:RMSE(均方根误差);
  • 非确定性算法:运行 5 次取平均;
  • 统计检验:对每个数据集按 RMSE 排名(1 为最优),计算算法平均排名,用 Friedman 检验,若拒绝原假设再做 Nemenyi 事后检验($\alpha=0.05$,$k=13$,$N=19$,临界差 CD = 4.186)。

5.2 被评测的 13 个回归算法

档案论文评估了来自经典统计、树模型、最近邻与深度学习的 13 个方法:

类别 算法
函数型回归 FPCR、FPCR with B-spline
核方法 Grid-search optimised SVR
树集成 Random Forest(100 树)、XGBoost(100 树)
最近邻(欧氏) 1-NN-ED、5-NN-ED
最近邻(DTW) 1-NN-DTW、5-NN-DTW
深度学习 FCN、ResNet、Inception
卷积核方法 Rocket

这套组合很有代表性:既有最朴素的最近邻,又有当时的 SOTA 深度学习,还有树模型,便于回答"到底哪种范式适合 TSER"。

5.3 论文的核心结论

档案论文(全档案 19 数据集口径,非 IEEEPPG 单集)的报告结论:

  1. Rocket 最准确:平均排名 3.6842;
  2. Rocket 显著优于 SVR、NN-ED 与 1-NN-DTW;
  3. 最先进的时间序列算法与经典回归算法之间没有显著差异——这既是方法论的清醒认识,也是对"需要为 TSER 开发专门算法"的呼吁;
  4. XGBoost 与 Random Forest 也很有竞争力。

必须强调:论文没有公布 IEEEPPG 单独的逐数据集 RMSE 数值,上述排名是全档案层面的统计结论。若需要 IEEEPPG 单集的绝对值,应回到主论文 Tan et al. “Time series extrinsic regression”(档案论文的参考文献 [40])查证——这一"数字缺口"是使用该数据集做对标时的现实约束(见坑 4)。

5.4 IEEEPPG 的典型用法

在后续文献中,IEEEPPG 常被这样使用:

  • 作为心率估计方法的多数据集评测之一:例如 Bidirectional Generative Pre-training(arXiv:2402.09558)把 IEEEPPG 列为回归任务数据集,报告其 5 维、3096 序列、长度 1000,用于验证时序表示学习模型。
  • 作为时频/深度学习方法的对比基准:PPGnet(arXiv:1903.08912)等工作在 IEEE SPC 2015 数据上评测端到端深度模型。
  • 作为 TSER 方法论的测试台:在回归算法研究中作为"信号类回归"的代表。

5.5 心率估计的常用指标体系

虽然 IEEEPPG 官方用 RMSE,实际文献中报告心率估计精度常用:

  1. MAE(平均绝对误差,BPM)——最直观;
  2. RMSE(均方根误差,BPM)——放大离群点;
  3. SD/SE(标准差/标准误差);
  4. Error1 / Error2(TROIKA 竞赛定义):Error1 为心率误差的绝对平均,Error2 为误差百分比的平均;竞赛用二者综合评判。
  5. Pearson r 与 Bland-Altman——衡量相关性与一致性。

5.6 与竞赛时代评测的对照

竞赛(2015)与档案(2020)的评测口径不同,容易混淆,必须分清:

维度 竞赛 SPC 2015 档案 IEEEPPG
单位 受试者/session 窗口化序列
指标 Error1/Error2(BPM) RMSE(BPM)
划分 12 训练 / 8 测试(人) 1768 训练 / 1328 测试(窗口)
排名方式 竞赛榜单 档案平均排名

同一个物理任务,被两套术语系统讨论。写论文引用时务必指明是哪一套口径,否则数字会对不上。

§6 获取与许可

6.1 一句话获取

IEEEPPG 是全开放数据集:访问 Zenodo 记录页(DOI 10.5281/zenodo.3902710),直接下载两个 .ts 文件即可,无需注册、无需申请、无需签署协议。

6.2 文件清单

文件名 大小 MD5
IEEEPPG_TRAIN.ts 81.4 MB 9e6a90b3ee7d58278ba4d99e542b755a
IEEEPPG_TEST.ts 60.2 MB 723ba838cf50f0f07085fdc05130f094
合计 141.7 MB —

6.3 许可的双口径

这里存在一个需要存照的许可双口径:

  • Zenodo 文件级:记录页把文件的 License 标为 Creative Commons Attribution 4.0 International(CC BY 4.0)——署名即可自由使用、修改、再分发,无 share-alike、无商用限制。
  • 数据集描述文案:正文另写"All datasets have copyrights. But you can freely use them for the Signal Processing Cup or your own academic research, as long as you suitably cite the data in your works."——即强调版权仍存、学术/竞赛自由使用、须引用。

两段话并不冲突(CC BY 也是要求署名),但表述宽严有别。稳妥做法:按 CC BY 4.0 使用并严格引用。这与库内 Apnea-ECG(ODC-By 1.0)类似,都是宽松开放许可。

6.4 引用规范

使用 IEEEPPG 时,规范做法是同时引用两篇文献(上游原始数据 + 本封装):

  1. 原始数据集论文(TROIKA):
    Z. Zhang, Z. Pi, B. Liu. TROIKA: A general framework for heart rate monitoring using wrist-type photoplethysmographic signals during intensive physical exercise. IEEE Transactions on Biomedical Engineering, 62(2):522-531, 2015. DOI: 10.1109/TBME.2014.2359372
  2. 档案论文:
    C. W. Tan, C. Bergmeir, F. Petitjean, G. I. Webb. Monash University, UEA, UCR Time Series Extrinsic Regression Archive. arXiv:2006.10996, 2020.

Zenodo 页面本身也提供了 BibTeX 引用(chang_wei_tan_2020_3902710),可直接引用。

6.5 DOI 体系

  • 版本 DOI(指向 v1):10.5281/zenodo.3902710
  • 概念 DOI(指向最新版本):10.5281/zenodo.3902709

引用具体数据时用版本 DOI,引用"这个数据集"整体时用概念 DOI。截至抓取时点,该数据集仅有一个版本(v1,2020-06-21),尚无后续更新。

6.6 加载代码骨架

sktime .ts 格式需专用加载器,下面给出骨架(示意,非官方 API 逐字保证):

# 载入 IEEEPPG(sktime TSER .ts 格式)
import numpy as np
# 方式一:若你的 sktime 版本支持 load_from_tsfile
# from sktime.datasets import load_from_tsfile
# X_train, y_train = load_from_tsfile("IEEEPPG_TRAIN.ts", return_data_type="numpy3d")
# X_test,  y_test  = load_from_tsfile("IEEEPPG_TEST.ts",  return_data_type="numpy3d")

# 方式二:轻量手工解析(.ts 为文本格式,含元数据头 + 数据段)
def read_ts_simple(path):
    rows = []
    with open(path, "r") as f:
        lines = [ln.rstrip("\n") for ln in f]
    in_data = False
    for ln in lines:
        if ln.strip() == "@data":
            in_data = True
            continue
        if in_data and ln.strip():
            parts = ln.split(":")            # 维度段以 ':' 分隔,末段为目标值
            dims = [np.array(p.split(","), dtype=float) for p in parts[:-1]]
            target = float(parts[-1])
            rows.append((np.vstack(dims), target))   # (5, 1000) 与 标量
    return rows

train = read_ts_simple("IEEEPPG_TRAIN.ts")
print(len(train), train[0][0].shape, train[0][1])   # 1768 (5, 1000) <BPM>

说明:不同 sktime 版本 API 略有差异,实际使用时请以你所用版本的文档为准;上面的手工解析仅示意 .ts 是"文本头 + @data 段"结构,避免误用 pandas.read_csv 直接读取。

6.7 获取决策树

需要 IEEEPPG?
├─ 要原始竞赛数据(含 ECG 通道)?
│   └─ 原始下载页已失效 → 只能走 Zenodo 封装版(无 ECG)
└─ 要回归基准(PPG+ACC → HR)?
    ├─ 走 Zenodo 3902710 → 下载 TRAIN.ts / TEST.ts
    └─ 想要更多数据集横向对比?
        └─ 访问 tseregression.org 下载全部 19 个 TSER 数据集

6.8 AI-Ready 评估小结

从 AI-Ready(数据可被 AI 直接使用)的角度,IEEEPPG 的得分要点:

  • ✅ 获取零门槛:CC BY 4.0、公开直链、无需申请;
  • ✅ 格式规范:sktime .ts 标准格式,工具链支持;
  • ✅ 任务明确:TSER 回归,指标固定;
  • ⚠️ 规模偏小:3096 条、141.7 MB,深度学习容易过拟合;
  • ⚠️ 无受试者映射:封装版丢失受试者分组,跨受试者评估需自行反推;
  • ⚠️ 单集基准数字缺失:论文只给全档案排名,无 IEEEPPG 逐集 RMSE。

§7 生态与影响

7.1 血统:一颗数据的两个时代

IEEEPPG 的生态价值必须放在"两代形态"中理解:

  • 2015 年(竞赛时代):它是 IEEE Signal Processing Cup 的官方训练/测试数据,催生了 TROIKA 等一批经典心率估计算法,把"腕表测心率"从产业难题变成学术赛道。
  • 2020 年(档案时代):它是 Monash TSER 档案的回归基准之一,与能源、环境、情感等领域的回归任务并列,把心率估计的方法论价值推广到时序回归的公共话语中。

同一份物理信号,在竞赛里是"要打败对手的赛道",在档案里是"要理解方法的测试台"。这种"竞赛数据 → 学术基准"的转化,是经典数据集获得长生命周期的常见路径。

7.2 在 TSER 档案中的横向地位

TSER 档案共 19 个数据集、5 大领域(能源监测、环境监测、健康监测、情感分析、预测)。IEEEPPG 属于健康监测类四兄弟之一(另三个为 PPGDalia、BIDMCRR/HR/SpO2)。

其横向比较价值在于:

  1. 多变量:5 维,是档案中维度较高的数据集之一,适合研究通道融合;
  2. 等长无缺失:1024,1000 步整齐划一,是"干净"的回归测试台,不引入缺失值处理的干扰变量;
  3. 领域独特:生理信号的时间结构(准周期)与能源/环境序列(趋势+季节性)差异显著,能让方法评测覆盖更多时间序列形态。

7.3 下游研究地图

围绕或用及 IEEEPPG / 其母数据(IEEE SPC 2015)的研究可粗分为四类:

  1. 经典信号处理:TROIKA(谱分析 + 稀疏重构 + 跟踪)、JOSS、NLMS+OSC-ANF、自适应滤波组合等——用频域与自适应滤波对抗运动伪影。
  2. 深度学习端到端:PPGnet(CNN+LSTM)、基于时频谱的 CNN 等——把波形或频谱直接喂给网络回归心率。
  3. 时序表示学习:BiTimelyGPT 等自监督预训练工作(arXiv:2402.09558)把 IEEEPPG 作为回归数据集之一,验证表示迁移。
  4. 可穿戴产业研究:智能手表/手环厂商常用 SPC 2015 或 IEEEPPG 做心率算法基线与鲁棒性验证。

7.4 为什么"误差数字"要谨慎引用

不同论文报告的 IEEEPPG 相关误差往往不可直接比较,原因有四:

  1. 评测划分不同:有人在官方 1768/1328 上评,有人用自定义受试者划分;
  2. 指标不同:RMSE vs MAE vs Error1/Error2 混用;
  3. 预处理不同:是否带通滤波、是否归一化、是否降采样,都会改变结果;
  4. 真值对齐不同:ground truth 的计算窗口与对齐方式若不同,误差基线随之漂移。

因此,看到"某方法在 IEEEPPG 上误差 X BPM"时,必须回溯其完整实验设置,不能跨论文裸比数字。

7.5 产业与监管语境(背景性)

腕戴心率监测已进入消费电子与医疗设备的交叉地带:消费级手表心率为"健康参考",而医疗级需要更严格的验证。SPC 2015 与 IEEEPPG 这类数据在算法研发阶段有重要价值,但不能直接等同于医疗器械注册所需的临床验证证据(后者需要专门设计的临床研究)。这一边界对做可穿戴健康算法的人至关重要。

7.6 局限与批判视角

对 IEEEPPG 应持两条批判意识:

  • 规模与多样性:20 名受试者不足以代表全球人口的皮肤色素、血管条件、佩戴习惯差异,跨人群泛化存疑——近期研究反复指出 PPG 算法在不同肤色人群上的性能偏差。
  • 运动分布偏移:训练(跑步)与测试(挥臂)运动类型不同,意味着"测试集误差"里混入了分布外泛化难度,解读时需扣掉这一因素。

§8 方法学启示

8.1 竞赛数据可以二次生命化

IEEEPPG 最大启示是:一场比赛的原始数据,经过标准化封装可以成为跨领域方法基准。关键动作有三:统一格式、固化划分、明确任务与指标。这对任何有历史积累的数据集都适用——不要因为"数据旧"就放弃,换个封装角度往往能焕发新生。

8.2 任务定义决定方法走向

把"心率监测"定义为外回归而非分类,直接改变了可用方法的集合与评估标准。这说明:数据集的价值一半在数据,一半在任务定义。定义得越清晰、越通用,数据集被复用的概率越高。

8.3 信号质量与真值来源的分离

IEEEPPG 用 ECG 做真值、用 PPG+ACC 做输入,本质是把"信号"与"裁判"分离。这种设计的普适性很强:任何"从易受污染信号估计可靠量"的任务,都应确保真值来自独立可靠的通道,而非被估计的信号自身。

8.4 小数据集的长尾价值

IEEEPPG 只有 141.7 MB、3096 条,却在十年间被反复引用。这提示:数据集影响力与规模非线性相关。任务经典、划分固定、许可干净的小数据集,往往比体量庞大但任务模糊的数据集更有长尾价值。

8.5 归档策略:DOI 与版本管理

Monash 团队用 Zenodo 提供版本 DOI + 概念 DOI,解决了"数据集会更新,但引用要稳定"的矛盾。这是数据治理的最佳实践:每一个可复现的结果都应绑定一个不可变的版本 DOI。

§9 与库内条目的关系

9.1 家族图谱

IEEEPPG(rid 待发布)在千方病案医数集内的亲缘条目:

                    可穿戴/临床生理信号估计家族
                            │
   ┌────────────────────────┼────────────────────────┐
   │                        │                        │
PPG-DaLiA(202)          IEEEPPG(本条目)          BIDMC PPG(74)
日常活动 PPG+ACC        剧烈运动 PPG+ACC         临床静息 PPG+ECG
4 维 / 64 Hz            5 维 / 125 Hz            2-4 维
估心率                  估心率                   估 RR/HR/SpO2
   │                        │                        │
   └────────────┬───────────┴───────────┬────────────┘
                │                       │
        MIMIC-III-EXT-PPG(928)     MIMIC-IV-EXT-ECG-GLUCOSE(998)
        ICU PPG 波形                 ICU ECG+血糖
                │
        Apnea-ECG(658) —— ECG 逐分钟呼吸事件(同属心脏-生理信号)

9.2 同源与同档案关系

  • 同 TSER 档案内:PPGDalia(202) 与 IEEEPPG 同属健康监测组,最宜并列使用;
  • 同源数据:BIDMCRR/HR/SpO2 对应库内的 BIDMC PPG 家族,与 IEEEPPG 共享"来自 PhysioNet/Monash 封装"的血统;
  • 同类任务:库内所有"信号→生理量"条目均可与 IEEEPPG 组成多任务评测矩阵。

9.3 检索路径建议

  • 想做运动伪影鲁棒性 → IEEEPPG(本条目)+ PPG-DaLiA(202);
  • 想做临床静息估计 → BIDMC PPG(74);
  • 想做心电图相关任务 → Apnea-ECG(658)、MIMIC-IV-ECG(172);
  • 想做PPG 主题全景 → IEEEPPG + PPG-DaLiA + BIDMC + BUTPPG(803)。

9.4 可互链点清单(库内 rid)

rid slug 关系
202 ppg-dalia 同档案同领域,PPG 心率估计,最直接对照
74 bidmc-ppg 同档案来源(BIDMC 系),PPG+ECG 估 RR/HR/SpO2
928 mimic-iii-ext-ppg PPG 波形估计,ICU 场景
803 butppg PPG 信号数据集
998 mimic-iv-ext-ecg-glucose ECG 相关多变量信号
658 apnea-ecg ECG 心率/呼吸事件,心脏生理信号主题
172 mimic-iv-ecg ECG 波形数据集
162 physionet-cinc-2017 挑战赛信号数据集(同类"竞赛→基准"路径)

§10 避坑清单:十个已踩过的坑

下列坑点均经三源核验或明确存照,编号沿用「坑 N:」制。

坑 1:名字是 IEEEPPG,不是 IEEEPG(也常见拼成 IEEEPG)
真相:官方名 IEEEPPG(IEEE + PPG 三个 P)。任务头/brief 写的"IEEEPG"少了一个 P。用"IEEEPG dataset"检索常空手或命中无关结果;正确检索词是「IEEEPPG」「IEEE Signal Processing Cup 2015 healthcare dataset」或直接搜 Zenodo 3902710。这是本条目最容易踩的第一坑。

坑 2:窗口数双口径(1768/1328 vs 1765/1327)
档案论文(arXiv:2006.10996 Table 1)报 IEEEPPG:Train 1768 / Test 1328;而 PPGnet 论文(arXiv:1903.08912)报 IEEE SPC training 1765 / test 1327。差异源于分窗边界与丢弃策略(如丢弃不完整窗)不同。本条目采用档案官方口径 1768/1328;引用他人结果时须确认对方用的是哪套。

坑 3:ECG 通道不在封装版里
Zenodo 描述文案提到原始数据含 “one-channel ECG signals”,容易让人误以为下载后能拿到 ECG。实际上 IEEEPPG 封装版只有 5 维(2 PPG + 3 ACC),不含 ECG——ECG 仅用于生成心率标签。想要 ECG 通道的,封装版给不了。

坑 4:论文没有 IEEEPPG 逐数据集 RMSE
档案论文只给全档案 19 数据集的平均排名(Rocket 3.6842 最优),没有公布 IEEEPPG 单独的 RMSE 数值。若论文里需要 IEEEPPG 单集绝对值对标,必须回到主论文 Tan et al. “Time series extrinsic regression”(档案论文 ref [40])或自行实验,切勿凭排名臆测数字。

坑 5:训练(跑步)测试(挥臂)运动类型不同
原始 train 是跑步机变速跑步(12 人),test 是手臂混合/高强度运动(8 人 10 session)。这意味着测试集天然包含运动类型分布偏移——测试误差里既有"方法鲁棒性"也有"分布外泛化"成分,解读收敛性时要扣掉这一因素。

坑 6:.ts 不是 CSV,别用 pandas.read_csv
文件扩展名 .ts 是 sktime 时间序列专有格式(文本头 + @data 段,维度用 : 分隔),不是制表符分隔的普通文本。用 pandas.read_csv 或 read_table 会解析失败或得到错误结构;应用 sktime load_from_tsfile 或按 §6.6 手工解析。

坑 7:许可表述双口径
Zenodo 文件级标 CC BY 4.0(宽松),而描述文案另写"copyrights… 可自由用于 SPC 或学术研究须引用"。两段不冲突但宽严有别。稳妥做法:按 CC BY 4.0 使用并严格引用两篇论文。切勿只看到"copyright"就误判为限制性许可而放弃使用。

坑 8:它不是 IEEE 官方数据集
名字带 IEEE 容易让人以为"IEEE 官方发布"。真相:IEEEPPG 是 Monash University 团队对 IEEE 竞赛数据的二次封装,托管在 Zenodo。追责/引用时应指向 Monash 作者与 Zenodo,而非 IEEE 官方。IEEE 的角色只是原始数据的竞赛背景。

坑 9:别与 PPG-DaLiA / UTOKYO 混淆
三个数据集都做 PPG 心率估计,极易混用:PPG-DaLiA(UCI,15 人,日常活动,4 维,64/32 Hz)、UTOKYO(20 人,智能戒指,红/红外光)、IEEEPPG(12+8 人,运动,5 维,125 Hz 绿光)。IEEEPPG 独有指纹 = 训练 12 人跑步 + 测试 8 人挥臂、5 维、长度 1000、125 Hz、绿光 515 nm。引用前先核指纹。

坑 10:受试者级分组信息丢失
封装版把连续记录切成独立窗口后,没有显式提供窗口→受试者的映射。若要做 leave-one-subject-out 等严格跨受试者评估,必须自行反推归属(而封装版并未保证可反推)。这是做严谨泛化实验时最隐蔽的坑——直接用窗口随机划分会标签泄漏,虚高估计性能。

§11 总结

11.1 三句话总结

  1. 它是什么:Monash 团队把 IEEE Signal Processing Cup 2015 的腕戴 PPG 竞赛数据重新封装成的 TSER 回归基准,3096 条 5 维序列测"运动中的心率估计"。
  2. 为什么重要:它是可穿戴生理信号研究里最经典的"运动伪影鲁棒性"测台之一,任务定义清晰、许可干净、格式规范,十年长尾引用。
  3. 怎么用:Zenodo 直下两个 .ts 文件,按 1768/1328 官方划分做 RMSE 回归评测,并与 PPG-DaLiA、BIDMC 组成多强度评测矩阵。

11.2 适合谁

  • 做可穿戴心率/PPG 信号处理的研究者与工程师;
  • 研究**时间序列外回归(TSER)**方法论的机器学习学者;
  • 需要运动伪影鲁棒性基线的算法团队;
  • 做多数据集横向评测的基准构建者。

11.3 不适合谁

  • 需要大规模、多样化人群训练数据的深度学习团队(3096 条太小、20 人太少);
  • 需要 ECG 通道的研究者(封装版不含);
  • 需要临床级验证证据的医疗器械开发者(该数据非临床注册证据);
  • 需要受试者级划分做严格泛化的研究者(需自行反推,且可能不可行)。

11.4 30 秒决策卡

要解决的问题是"从腕表信号可靠估计心率"吗?
├─ 否 → 本数据集不适用
└─ 是 → 继续
    ├─ 需要 ECG 通道? → IEEEPPG 不含,找其它数据
    ├─ 只是快速要个运动心率基准? → 用它,Zenodo 直下
    └─ 要做严格跨受试者泛化?
        ├─ 能从窗口反推受试者? → 可以做
        └─ 不能 → 注意标签泄漏风险,或改用 PPG-DaLiA(202)

11.5 一句话评价

IEEEPPG 是一个"以小见大"的经典数据集:体量不大,却把腕戴心率监测的核心难点——运动伪影、跨受试者泛化、真值分离——浓缩进了一个干净、开放、可复现的回归基准里。

§12 深度解析:PPG 心率估计的信号处理基础

12.1 PPG 信号是怎么产生的

PPG(光电容积脉搏波)的物理原理是光吸收随血容量脉动而变化。LED 向皮肤发射光线(IEEEPPG 用 515 nm 绿光——绿光对血红蛋白吸收强、穿透浅,最适合腕部表浅血管),光电探测器接收反射/透射光。心脏每次搏动把血液泵入外周血管,血容量增加→光吸收增加→探测器接收光强下降;心搏间隙血容量回落→光强回升。于是接收光强的周期性波动就间接反映心动周期。

关键洞察:PPG 记录的不是"心率"本身,而是血容量的相对变化波形。心率是从这个波形里"读出来"的——通常靠检测波峰间隔(峰峰间期)或做频谱分析找主频。这就解释了为什么它是"外回归":输入是波形,输出是频率派生量。

12.2 为什么腕部比指尖难

临床指夹式血氧仪(pulse oximeter)用透射式 PPG,透过指尖的薄组织,信号干净。腕表用反射式 PPG,光线要穿过较厚的皮肤、脂肪、血管层再返回,路径长、衰减大、易受散射影响。更糟的是腕部佩戴稳定性差——手腕一转动,传感器与皮肤的接触压力变化就引入巨大干扰。这是腕戴 PPG 误差率天然高于指夹的根本原因。

12.3 运动伪影的两种机理

运动污染 PPG 有两条路径,理解它们对建模很重要:

  1. 接触压力调制:运动改变传感器与皮肤的贴合力,直接改变局部血流灌注,产生与运动同步的伪影。
  2. 运动导致的静脉回流与组织位移:肢体摆动改变静脉血容量分布与组织光学特性,叠加在脉搏信号上。

这两条都与加速度信号强相关——这正是为什么加速度通道被同时提供:它既是干扰源的"测量仪",也是可以去噪的"参考信号"。

12.4 加速度辅助去噪的三种思路

既然加速度能反映运动,用它辅助去噪有三类思路:

思路 原理 代表
自适应滤波 用加速度作为参考信号,自适应抵消 PPG 中的运动成分 LMS/NLMS 类
谱域联合 在频谱上联合 PPG 与加速度,抑制运动频率、保留心率频率 TROIKA、JOSS
端到端学习 网络自行学习从 (PPG, ACC) 到心率的映射,隐式去噪 PPGnet 等

这三条线索贯穿了 SPC 2015 以来的全部方法史,也是 IEEEPPG 数据集"5 维"设计的方法论意义所在。

12.5 频率歧义:为什么它会锁错

跑步步频常在 120-180 步/分(2-3 Hz),与心率区(0.7-3.5 Hz ≈ 42-210 BPM)高度重叠。当步频与心率接近甚至相等(谐波锁定),频谱上会出现两个相近峰,算法可能选错峰——这就是"锁错频率"。加速度信号此时成为救兵:如果某频率峰在加速度谱里也很强,它就更可能是运动频率而非心率频率。这是所有基于加速度的方法的共同逻辑。

12.6 时域 vs 频域方法

心率估计方法可分两大流派:

  • 时域:检测 PPG 波峰,算峰峰间期(IBI),取倒数得心率。优点直观,缺点在运动伪影下波峰难辨。
  • 频域:对窗口做 FFT/STFT,在心率频带内找主峰。优点对噪声鲁棒(能量在频域集中),缺点受窗口长度与频率分辨率限制。

IEEEPPG 的 8 秒窗在频域上给出约 0.125 Hz 的分辨率——对心率估计够用,但边界处会有泄漏。这也解释了为什么工程上常用 8 秒窗(约 2-3 个心动周期)。

12.7 机器学习视角的三个层次

从严格意义上,用 IEEEPPG 做心率估计可以在三个层次上建模:

  1. 特征+传统回归:手工提取频谱峰值、谱熵、加速度相关性等特征,喂给 SVR/RF/XGBoost。档案论文的经典方法多在这一层。
  2. 表示学习+回归:用 CNN/RNN 从原始序列学表示,再回归。PPGnet 等在这一层。
  3. 自监督预训练+微调:大规模预训练后迁移到 IEEEPPG 回归。BiTimelyGPT 等在这一层。

三个层次的方法都能在 IEEEPPG 上评测,使这个数据集成为"方法代际对比"的绝佳舞台。

§13 使用指南:从零到第一次实验

13.1 环境准备

Python >= 3.8
sktime(含 load_from_tsfile)
numpy, scipy(信号处理)
scikit-learn(基线回归)
可选:torch / tensorflow(深度学习)

13.2 五步上手流程

  1. 下载:从 Zenodo 3902710 获取 IEEEPPG_TRAIN.ts 与 IEEEPPG_TEST.ts。
  2. 加载:用 load_from_tsfile 或 §6.6 手工解析为 (N, 5, 1000) 张量。
  3. 预处理:带通滤波(0.5-5 Hz)、逐受试者归一化、通道标准化。
  4. 建模:从简单基线开始(如谱峰法、GBDT+频谱特征),再上 CNN。
  5. 评估:在官方测试划分上算 RMSE/MAE,并与档案基线排名对照。

13.3 预处理清单

  • 去趋势:去除基线漂移(低频噪声),常用高通或中值滤波。
  • 带通:保留 0.5-5 Hz,去除呼吸(<0.5 Hz)与高频噪声。
  • 归一化:PPG 幅值因个体/佩戴差异巨大,逐受试者 min-max 或 z-score 归一化几乎是必须的。
  • 异常值:PPG 常有尖刺伪影,可做中值滤波或三西格玛裁剪。
  • 对齐:确保 PPG 与加速度时间对齐(原始数据已同步采样 125 Hz)。

13.4 常见基线及其预期量级

虽然论文未给 IEEEPPG 单集数字,文献中对 SPC 2015 数据的典型误差量级可作参考(注意:非 IEEEPPG 官方数字,仅供量级感知):

方法类型 典型 MAE 量级(BPM)
纯谱峰(无加速度) 较大,运动场景常 >10
TROIKA 类谱+稀疏 约 2-3
自适应滤波 约 1-3
深度学习端到端 约 1-3

强调:上表是 SPC 2015 相关文献的大致量级,IEEEPPG 官方基准未公布单集 RMSE,勿据此宣称"某方法在 IEEEPPG 上达到 X"。

13.5 评估陷阱清单

  1. 划分陷阱:务必用官方 1768/1328 划分才能与他人的结果比较;自定义划分会用错口径。
  2. 标签泄漏:同受试者的窗口若同时进训练和测试,会虚高精度。
  3. 指标选择:RMSE 与 MAE 对离群点敏感度不同,报告时应说明。
  4. 预处理不一致:滤波/归一化差异会显著改变绝对误差,跨论文比较要当心。
  5. 相对 vs 绝对:心率区间不同,同样 RMSE 的"临床意义"不同。

13.6 一个最小的实验骨架

import numpy as np

# 假设已加载 Xtr (1768,5,1000), ytr (1768,), Xte (1328,5,1000), yte (1328,)
def spectral_feature(x):          # x: (5, 1000)
    ppg = x[0]                    # 取第一路 PPG
    ppg = ppg - ppg.mean()
    spec = np.abs(np.fft.rfft(ppg * np.hanning(len(ppg))))
    freqs = np.fft.rfftfreq(len(ppg), d=1.0/125)
    band = (freqs >= 0.7) & (freqs <= 3.5)
    return spec[band]

Ftr = np.stack([spectral_feature(x) for x in Xtr])
Fte = np.stack([spectral_feature(x) for x in Xte])

from sklearn.ensemble import GradientBoostingRegressor
model = GradientBoostingRegressor(n_estimators=200, random_state=0).fit(Ftr, ytr)
pred = model.predict(Fte)
rmse = np.sqrt(np.mean((pred - yte) ** 2))
print("RMSE (BPM) =", round(rmse, 3))

13.7 复现性建议

  • 固定随机种子;
  • 记录预处理超参数(滤波阶数、频带、归一化方式);
  • 保存 MD5 校验下载文件版本;
  • 明确报告是"官方划分"还是"自定义划分"。

§14 数据质量与偏倚讨论

14.1 样本代表性

IEEEPPG 的 20 名受试者(12 训练 + 8 测试)来自单一采集批次,年龄集中在 18-35 岁。这意味着:

  • 年龄偏倚:无老人、无儿童,心率区间与血管特性偏青壮年;
  • 肤色偏倚:未报告受试者肤色构成。近期大量研究表明 PPG 精度受皮肤色素影响显著,深肤色人群误差往往更高。这是 IEEEPPG 作为"普适心率算法基准"的重大局限——在其上表现好不等于对全人群好。
  • 健康状态偏倚:受试者为健康青壮年(能跑跑步机、做高强度手臂运动),不含心血管疾病患者。

14.2 运动多样性

训练(跑步)与测试(挥臂)覆盖了"下肢周期运动"和"上肢剧烈运动"两类,但缺少:

  • 日常低强度活动(走路、打字、办公)——这正是 PPG-DaLiA 的覆盖域;
  • 力量训练、游泳、骑行等其他运动形态;
  • 静止状态(供对照的基线)。

因此 IEEEPPG 更接近"运动鲁棒性极限测试"而非"全场景心率基准"。

14.3 标签质量

心率标签由同步 ECG 自动计算,质量高、主观性低——这是相对人工标注数据集的一大优势。但需注意:

  • 边界窗口(记录开头/结尾)的有效性;
  • ECG 与 PPG 的时间对齐精度;
  • 平均心率对心率快速变化段的平滑效应。

14.4 使用中的伦理提醒

  • 数据为去标识的生理信号,但不可用于重新识别个人;
  • 算法在真实医疗场景使用前必须经过独立临床验证;
  • 报告结果时应说明其人群偏倚,避免过度泛化宣称。

14.5 与"公平性"研究的接口

IEEEPPG 本身不含肤色/性别等人口属性标签,这使直接做公平性分析困难。研究者若关心算法公平性,需:

  1. 用 IEEEPPG 做方法基线;
  2. 用带人口属性的数据集(或新采集)做偏倚分析。

这一"属性缺失"是数据集设计上的一个可改进点。

§15 与其他 PPG 数据集的系统对照

15.1 三强对照表

维度 IEEEPPG PPG-DaLiA BIDMC PPG
来源 IEEE SPC 2015 UCI / 日常活动 PhysioNet / MIMIC
受试者 12+8 人 15 人 ICU 病人
场景 跑步 + 挥臂 日常活动 临床静息/监护
通道 2 PPG + 3 ACC 1 PPG + 3 ACC PPG + ECG
采样率 125 Hz 64/32 Hz 125 Hz
维度 5 4 2-4
序列长度 1000 256/512 4000
目标 心率 心率 RR/HR/SpO2
库内 rid 本条目 202 74

15.2 选择逻辑

  • 测剧烈运动鲁棒性 → IEEEPPG;
  • 测日常活动稳健性 → PPG-DaLiA;
  • 测临床静息估计 → BIDMC;
  • 测全场景泛化 → 三者联用(跨数据集迁移实验)。

15.3 跨数据集迁移的挑战

把在 IEEEPPG(125 Hz,5 维,运动)训练的模型迁移到 PPG-DaLiA(64 Hz,4 维,日常)会遇到:

  • 采样率不匹配:需重采样;
  • 通道数不匹配:需降维或补齐;
  • 序列长度不匹配:需重切窗;
  • 域偏移:运动类型、人群、设备都不同。

这些不匹配本身就是"可穿戴算法泛化"研究的核心课题。

15.4 与 ECG 系数据集的互补

心率估计的上游真值来自 ECG,因此 IEEEPPG 与库内 ECG 数据集天然互补:

  • Apnea-ECG(658):ECG 逐分钟呼吸事件,可与 PPG 心率估计形成"ECG↔PPG"双向研究;
  • MIMIC-IV-ECG(172):大规模临床 ECG,可与 PPG 数据组合做跨模态学习。

15.5 档案内健康数据的整体图景

TSER 档案的 5 个健康数据集构成一个"生理量估计"矩阵:

                心率        呼吸率      血氧
IEEEPPG         ✓           -           -
PPGDalia        ✓           -           -
BIDMCRR         -           ✓           -
BIDMCHR         ✓           -           -
BIDMCSpO2       -           -           ✓

可以看到:心率估计是这些健康回归任务中最受关注的(3/5 数据集都涉及),也印证了"腕表测心率"的产业热度。

FAQ(高频问答 40 问)

A. 基础认知

Q1:IEEEPPG 到底是什么?
一个时间序列外回归(TSER)数据集,由 Monash 大学团队从 IEEE Signal Processing Cup 2015 的腕戴 PPG 竞赛数据封装而来,任务是"用 PPG + 加速度估计心率"。3096 条 5 维等长序列,train 1768 / test 1328。

Q2:IEEEPG 和 IEEEPPG 是同一个吗?
是。正确拼写是 IEEEPPG(三个 P:IEEE + PPG)。任务头/brief 写的"IEEEPG"是笔误,本条目 slug 沿用 ieeepg 但正式名以 IEEEPPG 为准。

Q3:它是 IEEE 官方数据集吗?
不是。它是 Monash 大学的二次封装,托管于 Zenodo。IEEE 只是原始数据的竞赛主办背景。

Q4:它属于哪个学科领域?
生理信号处理 + 时间序列机器学习。具体是"可穿戴传感器信号分析"。

Q5:一句话说清它解决的问题。
在剧烈运动中,腕表 PPG 信号被运动伪影污染,如何仍能准确估计心率。

Q6:它和"心率监测"有什么区别?
"心率监测"是应用目标;IEEEPPG 是把该目标固化为回归任务的基准数据集。

Q7:它有分类标签吗?
没有。目标是连续的 BPM 数值,纯回归任务。

Q8:数据集有多大?
3096 条序列、141.7 MB(train 81.4 MB + test 60.2 MB)。很小,笔记本可全量加载。

Q9:它是什么时候发布的?
原始竞赛数据 2015 年;IEEEPPG 封装版 2020-06-21 上架 Zenodo。

Q10:谁做的?
Monash University 的 Chang Wei Tan、Christoph Bergmeir、Francois Petitjean、Geoffrey I. Webb。

B. 数据与规格

Q11:5 维是哪 5 个?
2 通道 PPG(绿光 LED 515 nm,两探头间距 2 cm)+ 3 轴加速度。

Q12:为什么不含 ECG?
ECG 仅用于生成心率真值(裁判角色),不提供给模型(选手角色),避免"偷看答案"。

Q13:序列长度为什么统一是 1000?
125 Hz × 8 秒 = 1000 采样点。所有窗口被切成等长。

Q14:8 秒窗、6 秒重叠是什么意思?
每个样本取 8 秒波形,但每隔 2 秒前移一次取下一个样本(重叠 6 秒),即步进 2 秒。

Q15:1768 + 1328 = 3096 对吗?
对,两个划分之和正好等于总序列数,说明没有样本被丢弃。

Q16:心率标签怎么算出来的?
对每个 8 秒窗口,取同步 ECG 的平均心率(BPM)作为该窗口目标。

Q17:有缺失值吗?
没有。档案论文明确标注 IEEEPPG 无缺失值。

Q18:采样率是多少?
125 Hz,PPG 与加速度同步采样。

Q19:数据文件格式是什么?
sktime 的 .ts 时间序列格式(文本头 + @data 段),不是 CSV。

Q20:文件 MD5 是多少?
TRAIN: 9e6a90b3ee7d58278ba4d99e542b755a;TEST: 723ba838cf50f0f07085fdc05130f094。

C. 采集与协议

Q21:训练数据是什么场景?
12 名受试者在跑步机上以变化速度跑步,每人约 5 分钟。

Q22:测试数据是什么场景?
8 名受试者、10 个 session:4 个前臂/上臂混合运动 + 6 个高强度手臂运动(如拳击),每段约 5 分钟。

Q23:受试者年龄范围?
18-35 岁。

Q24:为什么训练和测试的运动类型不一样?
原始竞赛设计如此:训练用下肢跑步,测试用上肢剧烈运动,故意制造分布偏移,考察泛化。

Q25:采集设备是什么?
腕带内嵌两只脉搏血氧仪(绿光)与一只三轴加速度计;胸部湿电极 ECG 同步采集;蓝牙传输至计算机。

Q26:两枚 PPG 探头的间距有意义吗?
2 cm 间距提供了两路空间上分离的脉搏信号,可用于通道融合/去噪研究。

D. 任务与评估

Q27:什么是"外回归(extrinsic regression)"?
指预测一个与输入序列不同义的连续外部量。这里是用 PPG 波形预测心率数值。

Q28:官方评估指标是什么?
档案论文用 RMSE。

Q29:竞赛时代用什么指标?
Error1(BPM 绝对误差均值)与 Error2(误差百分比均值),由 TROIKA 竞赛定义。

Q30:论文有给出 IEEEPPG 的单集误差吗?
没有。只给了全档案 19 数据集的平均排名(Rocket 3.6842 最优)。

Q31:档案论文的统计检验怎么做?
按 RMSE 排名 → 平均排名 → Friedman 检验 → 必要时 Nemenyi 事后检验(CD=4.186)。

Q32:论文的主要结论是什么?
Rocket 最准且显著优于 SVR/NN-ED/1-NN-DTW;SOTA 时序算法与经典回归无显著差异;需要为 TSER 开发专门方法。

Q33:常用的衍生指标有哪些?
MAE、RMSE、SD/SE、Error1/Error2、Pearson r、Bland-Altman。

E. 获取与许可

Q34:怎么下载?
访问 Zenodo DOI 10.5281/zenodo.3902710,直接下载两个 .ts 文件,无需注册。

Q35:许可是什么?
Zenodo 文件级:CC BY 4.0(署名即可自由使用);描述文案另声明版权与学术自由使用须引用。按 CC BY 4.0 使用并引用即可。

Q36:怎么引用?
同时引用 TROIKA 论文(Zhang, Pi, Liu 2015, doi:10.1109/TBME.2014.2359372)与档案论文(Tan et al. 2020, arXiv:2006.10996)。

Q37:版本 DOI 和概念 DOI 有什么区别?
版本 DOI(3902710)指向 v1 具体版本;概念 DOI(3902709)指向最新版本。引用具体结果用版本 DOI。

Q38:有后续版本吗?
截至抓取时点只有 v1(2020-06-21),无更新。

F. 复用与工程

Q39:用 pandas 能读吗?
不能直接读。.ts 是 sktime 专有格式,需 load_from_tsfile 或按 §6.6 手工解析。

Q40:能做跨受试者评估吗?
封装版未提供窗口→受试者映射,做 leave-subject-out 需自行反推;直接用随机划分会有标签泄漏风险。


事实清单(硬事实 40 条)

  1. 官方数据集名:IEEEPPG Dataset(非 IEEEPG)。
  2. 打包机构:Monash University(澳大利亚)。
  3. 打包作者:Chang Wei Tan、Christoph Bergmeir、Francois Petitjean、Geoffrey I. Webb(四人全部隶属 Monash)。
  4. 数据集上架日期:2020-06-21。
  5. 托管平台:Zenodo。
  6. 版本 DOI:10.5281/zenodo.3902710。
  7. 概念 DOI:10.5281/zenodo.3902709。
  8. 文件许可:CC BY 4.0。
  9. 描述文案许可口径:版权保留,SPC/学术自由使用须引用。
  10. 档案论文:arXiv:2006.10996(Tan et al. 2020)。
  11. 档案论文版本:v1 2020-06-19,v3 2020-10-20。
  12. 档案数据集总数:19 个,分 5 大领域。
  13. IEEEPPG 所属领域:健康监测(Health Monitoring)。
  14. 原始数据来源:IEEE Signal Processing Cup 2015。
  15. 原始数据论文:TROIKA(Zhang, Pi, Liu),IEEE TBME 62(2):522-531,2015。
  16. TROIKA DOI:10.1109/TBME.2014.2359372。
  17. 序列总数:3096。
  18. 训练序列数:1768。
  19. 测试序列数:1328。
  20. 维度:5(2 PPG + 3 ACC)。
  21. 序列长度:1000 时间步。
  22. 采样率:125 Hz。
  23. 分窗:8 秒窗 / 6 秒重叠(步进 2 秒)。
  24. 缺失值:无。
  25. 训练文件:IEEEPPG_TRAIN.ts,81.4 MB。
  26. 测试文件:IEEEPPG_TEST.ts,60.2 MB。
  27. 总文件体积:141.7 MB。
  28. 训练文件 MD5:9e6a90b3ee7d58278ba4d99e542b755a。
  29. 测试文件 MD5:723ba838cf50f0f07085fdc05130f094。
  30. PPG 波长:515 nm(绿光 LED)。
  31. 两枚 PPG 探头中心间距:2 cm。
  32. 训练受试者:12 名,跑步机变速跑步,每人约 5 分钟。
  33. 测试受试者:8 名,10 个 session(4 混合 + 6 高强度手臂运动)。
  34. 受试者年龄:18-35 岁。
  35. ECG 角色:仅用于生成心率真值,不在封装版内。
  36. 心率真值算法:每窗口取同步 ECG 平均心率(BPM)。
  37. 档案评测算法数:13 个。
  38. 档案最优算法:Rocket,平均排名 3.6842。
  39. 统计检验临界差 CD:4.186(Friedman + Nemenyi)。
  40. Zenodo 统计(抓取时点):浏览量 3,250 / 下载量 1,564。

术语表(32 条)

术语 英文 释义
PPG Photoplethysmography 光电容积脉搏波:用光照射皮肤、测反射光随血容量变化以反映脉搏
腕戴 PPG Wrist-type PPG 佩戴在腕部的 PPG 传感器形式,移动场景下运动伪影重
加速度计 Accelerometer 测量三轴加速度的传感器,此处用于感知腕部运动
运动伪影 Motion Artifact 身体运动引入信号中的干扰,是腕表心率的主要误差源
心率 Heart Rate (HR) 每分钟心搏次数,单位 BPM
BPM Beats Per Minute 心率单位:次/分
ECG Electrocardiogram 心电图:胸带电极采集的心电信号,此处作为心率真值
真值 Ground Truth 用于监督学习的参考标准值,此处由 ECG 计算
TSER Time Series Extrinsic Regression 时间序列外回归:从序列预测外部连续量
TSC Time Series Classification 时间序列分类
TSF Time Series Forecasting 时间序列预测(预测自身未来值)
回归 Regression 预测连续数值的任务类型
RMSE Root Mean Square Error 均方根误差,回归评估指标
MAE Mean Absolute Error 平均绝对误差
SD / SE Standard Deviation / Error 标准差 / 标准误差
Error1 — TROIKA 定义:心率误差(BPM)绝对均值
Error2 — TROIKA 定义:心率误差百分比均值
Bland-Altman Bland-Altman plot 一致性分析图,评估两种测量方法的一致性
Pearson r Pearson correlation 皮尔逊相关系数
滑动窗 Sliding Window 用固定长度窗沿信号滑动切分样本
重叠 Overlap 相邻窗共享的信号长度,此处 6 秒
步进 Shift / Step 窗每次前移的长度,此处 2 秒
通道融合 Channel Fusion 多路信号联合建模
分布偏移 Distribution Shift 训练与测试数据分布不一致
跨受试者泛化 Cross-subject Generalization 模型在新受试者上的表现
标签泄漏 Label Leakage 评估时训练/测试信息意外共享导致虚高性能
leave-subject-out — 留一受试者交叉验证
sktime — 时序机器学习 Python 库,定义 .ts 格式
.ts 文件 TS file format sktime 时间序列文本格式(头 + @data 段)
Signal Processing Cup IEEE SPC IEEE 信号处理学会举办的年度学生竞赛
TROIKA — SPC 2015 提出的经典心率估计框架
CC BY 4.0 Creative Commons Attribution 4.0 署名即可自由使用的开放许可

附录

附录 A:条目信息速查卡

条目 slug:      ieeepg
官方名:         IEEEPPG Dataset
类别:           生理信号 / 可穿戴传感 / 时序回归
数据规模:       3096 序列(1768/1328),5 维,长度 1000
文件体积:       141.7 MB
许可:           CC BY 4.0
DOI:            10.5281/zenodo.3902710
论文:           arXiv:2006.10996 + TROIKA (IEEE TBME 2015)
抓取时点:       2026-10-13

附录 B:DAIMS 评估全表

DAIMS(Data and AI Management/Use Maturity Score)从多维度评估数据集对 AI 就绪程度:

维度 评分 说明
可发现性(Discoverability) 高 有固定 DOI、Zenodo 可检索、论文明确
可获取性(Accessibility) 高 CC BY 4.0 公开直链,零门槛
格式规范(Format) 高 sktime .ts 标准格式,非私有格式
文档完备(Documentation) 中高 Zenodo 描述 + 档案论文;缺单集基准数字
任务定义(Task Definition) 高 TSER 回归任务清晰,指标固定
标注质量(Label Quality) 高 真值来自 ECG 自动计算,非人工主观
数据规模(Scale) 低 3096 条偏小,深度模型易过拟合
人群多样性(Diversity) 低 20 名受试者,跨人群泛化存疑
可复现性(Reproducibility) 高 固定划分 + 固定文件 + MD5
伦理合规(Ethics) 中高 无显式伦理声明;去标识、匿名受试者
综合 AI-Ready 中高 格式/许可/任务优秀,规模/多样性是短板

附录 C:逐项证据链自证

事实 一手来源
名称 IEEEPPG、作者、日期 Zenodo 记录页 3902710
3096 序列、5 维、125 Hz、515 nm Zenodo 描述
train 1768 / test 1328、长度 1000、无缺失 arXiv:2006.10996 Table 1
12 训练人 / 8 测试人 / 10 session PPGnet arXiv:1903.08912;Siegen UbiComp 论文
文件体积/MD5 Zenodo Files 列表
许可 CC BY 4.0 Zenodo License 字段
TROIKA 引用 Zenodo Citation request 字段
Rocket 3.6842 / CD 4.186 arXiv:2006.10996 正文图 15
原始数据不可用 PMC10529422 明载 “original data set is no longer available”

附录 D:数据获取决策树

需要 IEEEPPG?
├─ 只需快速拿到基准数据
│   └─ Zenodo 3902710 → 下载 TRAIN.ts + TEST.ts → 完成
├─ 需要 ECG 通道
│   └─ 封装版不含 → 放弃或寻找原始竞赛数据(已失效)
├─ 需要多数据集横向评测
│   └─ tseregression.org → 下载全部 19 个 TSER 数据集
└─ 需要严格跨受试者评估
    └─ 先在窗口中反推受试者归属;不可行则改用 PPG-DaLiA(202)

附录 E:sktime .ts 格式结构说明

.ts(TSER 单文件变体)基本结构:

# 元数据头(@problemName / @timeStamps / @univariate / @dimensions / @classLabel ...)
@problemName IEEEPPG
@timeStamps false
@univariate false
@dimensions 5
@classLabel false
@targetLabel true
@data
6.02,6.10,...,6.02:0.31,0.29,...,0.30:...:72.5
...                                ↑ 各维度以 ':' 分隔,最后一个字段为回归目标

要点:每行一条样本;维度段用 : 分隔;最后一个字段是目标值(BPM);维度内数值用逗号分隔。

附录 F:加载与预处理骨架

import numpy as np

def load_ieeepg(path):
    X, y = [], []
    data = False
    for ln in open(path, encoding="utf-8"):
        ln = ln.strip()
        if ln == "@data":
            data = True; continue
        if not data or not ln:
            continue
        segs = ln.split(":")
        dims = [np.fromstring(s, sep=",") for s in segs[:-1]]
        X.append(np.vstack(dims))          # (5, 1000)
        y.append(float(segs[-1]))           # BPM
    return np.array(X), np.array(y)

Xtr, ytr = load_ieeepg("IEEEPPG_TRAIN.ts")
Xte, yte = load_ieeepg("IEEEPPG_TEST.ts")
print(Xtr.shape, ytr.shape)                 # (1768, 5, 1000) (1768,)

预处理常见步骤:带通滤波(0.5-5 Hz)、按受试者归一化、通道标准化。注意归一化策略会显著影响回归结果。

附录 G:回归评估指标公式

  • RMSE = $\sqrt{\frac{1}{n}\sum_{i=1}^{n}(\hat{y}_i - y_i)^2}$
  • MAE = $\frac{1}{n}\sum_{i=1}^{n}|\hat{y}_i - y_i|$
  • Error1 = $\frac{1}{W}\sum_{w=1}^{W}|BPM_{est}(w) - BPM_{ref}(w)|$
  • Error2 = $\frac{1}{W}\sum_{w=1}^{W}\frac{|BPM_{est}(w) - BPM_{ref}(w)|}{BPM_{ref}(w)}\times 100%$
  • Pearson r = $\frac{cov(y,\hat{y})}{\sigma_y \sigma_{\hat{y}}}$

其中 $y$ 为真值 BPM,$\hat{y}$ 为预测 BPM,$n$(或 $W$)为样本/窗口数。

附录 H:档案 19 数据集全表

# 领域 数据集 Train Test 长度 维度 缺失
1 能源 AppliancesEnergy 96 42 144 24 否
2 能源 HouseholdPowerConsumption1 746 694 1440 5 是
3 能源 HouseholdPowerConsumption2 746 694 1440 5 是
4 环境 BenzeneConcentration 3433 5445 240 9 是
5 环境 BeijingPM25Quality 12432 5100 24 9 是
6 环境 BeijingPM10Quality 12432 5100 24 9 是
7 环境 LiveFuelMoistureContent 3493 1510 365 7 否
8 环境 FloodModeling1 471 202 266 1 否
9 环境 FloodModeling2 389 167 266 1 否
10 环境 FloodModeling3 429 184 266 1 否
11 环境 AustraliaRainfall 112186 48081 24 3 否
12 健康 PPGDalia 43215 21482 256,512 4 否
13 健康 IEEEPPG 1768 1328 1000 5 否
14 健康 BIDMCRR 5471 2399 4000 2 否
15 健康 BIDMCHR 5550 2399 4000 2 否
16 健康 BIDMCSpO2 5550 2399 4000 2 否
17 情感 NewsHeadlineSentiment 58213 24951 144 3 否
18 情感 NewsTitleSentiment 58213 24951 144 3 否
19 预测 Covid3Month 140 61 84 1 否

附录 I:档案 13 个基准模型一览

类别 模型 说明
函数型回归 FPCR 函数型主成分回归
函数型回归 FPCR-Bspline 带 B 样条的 FPCR
核方法 SVR 网格搜索优化支持向量回归
树集成 Random Forest 100 棵树
树集成 XGBoost 100 棵树
最近邻 1-NN-ED / 5-NN-ED 欧氏距离最近邻
最近邻 1-NN-DTW / 5-NN-DTW 动态时间规整最近邻
深度学习 FCN 全卷积网络
深度学习 ResNet 残差网络
深度学习 Inception Inception 网络
卷积核 Rocket 随机卷积核变换

附录 J:许可条款细读

  • Zenodo 文件许可字段:Creative Commons Attribution 4.0 International(CC BY 4.0)。
    • 允许:使用、复制、修改、分发、商用。
    • 要求:署名(attribution)。
  • 数据集描述文案:“All datasets have copyrights. But you can freely use them for the Signal Processing Cup or your own academic research, as long as you suitably cite the data in your works.”
    • 强调版权归属、学术/竞赛自由使用、须引用。
  • 实践建议:按 CC BY 4.0 使用,署名时同时引用 TROIKA 论文与档案论文。

附录 K:引用 BibTeX 模板

@dataset{chang_wei_tan_2020_3902710,
  author    = {Chang Wei Tan and Christoph Bergmeir and
               Francois Petitjean and Geoffrey I Webb},
  title     = {IEEEPPG Dataset},
  month     = jun,
  year      = 2020,
  publisher = {Zenodo},
  doi       = {10.5281/zenodo.3902710},
  url       = {https://doi.org/10.5281/zenodo.3902710}
}

@article{zhang2015troika,
  author  = {Z. Zhang and Z. Pi and B. Liu},
  title   = {TROIKA: A general framework for heart rate monitoring
             using wrist-type photoplethysmographic signals during
             intensive physical exercise},
  journal = {IEEE Transactions on Biomedical Engineering},
  volume  = {62}, number = {2}, pages = {522--531}, year = {2015},
  doi     = {10.1109/TBME.2014.2359372}
}

附录 L:与库内条目的关系声明

本条目与库内以下条目构成"生理信号估计"家族,建议交叉引用:

  • PPG-DaLiA(rid 202):同为 PPG 心率估计,同属 Monash TSER 档案,日常活动场景,最直接对照。
  • BIDMC PPG(rid 74):同档案来源(BIDMC 系),临床静息场景,RR/HR/SpO2 估计。
  • MIMIC-III-EXT-PPG(rid 928):ICU PPG 波形。
  • Apnea-ECG(rid 658):ECG 逐分钟呼吸事件标注,心脏生理信号主题。

附录 M:检索决策树

想找"用 PPG 估计心率"的数据集?
├─ 运动场景(跑步/挥臂)
│   └─ IEEEPPG(本条目)
├─ 日常活动场景
│   └─ PPG-DaLiA(rid 202)
├─ 临床静息场景
│   └─ BIDMC PPG(rid 74)
└─ 想一次拿到全部回归基准
    └─ tseregression.org(19 个 TSER 数据集)

附录 N:常见下游方法一览

方法 年份 思路
TROIKA 2015 谱分析 + 稀疏信号重构 + 心率跟踪
JOSS 2015 联合稀疏谱
NLMS + OSC-ANF — 自适应滤波组合
SpaMa / SpaMaPlus 2017+ 频谱峰值跟踪
PPGnet 2019 CNN + LSTM 端到端
时频谱 CNN 2018 时频图 + CNN
时序预训练模型 2024 自监督表示学习(BiTimelyGPT 等)

附录 O:双口径登记表

项目 口径 A 口径 B 本条目采用
数据集名 IEEEPPG(官方) IEEEPG(brief 笔误) IEEEPPG
训练窗口数 1768(档案论文) 1765(PPGnet) 1768
测试窗口数 1328(档案论文) 1327(PPGnet) 1328
许可 CC BY 4.0(文件级) copyright 学术自由(文案) 按 CC BY 4.0
测试人数 8 人 10 session(下游论文) Zenodo 未拆(仅年龄) 8 人 10 session
档案最优算法 Rocket 3.6842(全档案) IEEEPPG 单集未给 全档案口径标注

附录 P:维护计划与触发点

  • 触发点 1:若 Zenodo 出现 v2 或后续版本 → 更新 §6.5 版本信息与附录 O。
  • 触发点 2:若档案论文发表期刊版并有新 DOI → 在 §6.4 补期刊引用。
  • 触发点 3:若出现 IEEEPPG 逐数据集基准结果 → 在 §5.3 补实际数字,撤下"数字缺口"提示。
  • 触发点 4:若 tseregression.org 变更或迁移 → 更新 §6.7 获取路径。

附录 Q:坑点档案(与 §10 对照)

坑号 简述 后果 规避
坑 1 名字拼错 IEEEPG 检索空手 用 IEEEPPG
坑 2 窗口数双口径 数字对不上 注明口径来源
坑 3 以为含 ECG 拿不到 ECG 知封装版仅 5 维
坑 4 无单集 RMSE 无法对标绝对值 回主论文或自测
坑 5 训练/测试运动不同 误判鲁棒性 扣分布外因素
坑 6 用 pandas 读 .ts 解析失败 用 sktime
坑 7 许可双口径误判 放弃使用 按 CC BY 4.0
坑 8 误以为 IEEE 官方 引用错对象 引 Monash/Zenodo
坑 9 与 PPG-DaLiA 混淆 数据用错 核 5 维指纹
坑 10 受试者映射缺失 标签泄漏 反推或改数据集

附录 R:心率估计算法骨架(示意)

# 经典基线:频谱峰值 + 加速度辅助选峰
import numpy as np

def estimate_hr_window(ppg2, acc3, fs=125):
    # ppg2: (2, 1000)  acc3: (3, 1000)
    ppg = ppg2.mean(axis=0)
    ppg = ppg - ppg.mean()
    spec = np.abs(np.fft.rfft(ppg * np.hanning(len(ppg))))
    freqs = np.fft.rfftfreq(len(ppg), d=1.0/fs)
    # 心率合理频带 0.7-3.5 Hz (~42-210 BPM)
    band = (freqs >= 0.7) & (freqs <= 3.5)
    f_hr = freqs[band][np.argmax(spec[band])]
    return f_hr * 60.0        # BPM

这是最朴素的谱估计基线,实际系统会用加速度做运动伪影抑制、多通道融合与时序跟踪。仅供理解任务形态。

附录 S:本条目核验记录

  • 核验日期:2026-10-13
  • 检索次数:WebSearch 3 次 + WebFetch 4 次
  • 三源互证:Zenodo 记录页(3902710)+ arXiv 论文(2006.10996 摘要+全文)+ 下游论文(PPGnet arXiv:1903.08912、PMC10529422、Siegen UbiComp)
  • 关键消歧:brief 写"IEEEPG",核验确认真实名为 IEEEPPG,slug 沿用 ieeepg
  • 库内查重:url_name ILIKE '%ieee%' 命中 0 行,writing/ 无同名目录 → 无撞库

附录 U:IEEEPPG 与竞赛原版数据对照

项目 竞赛原版(SPC 2015) IEEEPPG 封装版
组织方 IEEE Signal Processing Society Monash University
通道 2 PPG + 3 ACC + 1 ECG 2 PPG + 3 ACC(去 ECG)
形态 连续记录(受试者/session) 切窗序列(8s/6s 重叠)
训练单位 12 名受试者 1768 条窗口
测试单位 8 名受试者 10 session 1328 条窗口
评测指标 Error1 / Error2 RMSE
数据格式 原始记录文件 sktime .ts
获取 官网(已失效) Zenodo 3902710(可用)
许可 竞赛规则 CC BY 4.0

附录 V:通道语义与单位备忘

通道 物理量 单位 备注
PPG-1 光强变化(第一探头) 任意单位(ADC) 绿光 515 nm
PPG-2 光强变化(第二探头) 任意单位(ADC) 与 PPG-1 间距 2 cm
ACC-x x 轴加速度 m/s²(或 g) 腕部运动
ACC-y y 轴加速度 m/s²(或 g) 腕部运动
ACC-z z 轴加速度 m/s²(或 g) 腕部运动
目标 心率 BPM(次/分) 由 ECG 计算

注:PPG 幅值为相对量,跨记录不可直接比较绝对值,需归一化。

附录 W:常见问题排查表

现象 可能原因 排查
加载报错 用了 pandas 改用 sktime 或手工解析
形状不对 未按 : 拆维度 检查 .ts 解析逻辑
精度异常高 标签泄漏 检查训练/测试是否同受试者
精度异常低 未滤波/未归一化 加带通与逐受试者归一化
与论文对不上 口径不同 核对窗口数 1768/1328
拿不到 ECG 误以为含 ECG 封装版仅 5 维

附录 X:术语中英对照速查

中文 英文
光电容积脉搏波 Photoplethysmography (PPG)
时间序列外回归 Time Series Extrinsic Regression (TSER)
运动伪影 Motion Artifact
心率 Heart Rate (HR)
同步心电图 Synchronized ECG
滑动窗 Sliding Window
均方根误差 Root Mean Square Error (RMSE)
平均绝对误差 Mean Absolute Error (MAE)
跨受试者泛化 Cross-subject Generalization
标签泄漏 Label Leakage
分布偏移 Distribution Shift
自适应滤波 Adaptive Filtering
频谱分析 Spectral Analysis
峰峰间期 Inter-Beat Interval (IBI)

附录 Y:文献与资源链接汇总

资源 链接/标识
Zenodo 数据集(v1) https://doi.org/10.5281/zenodo.3902710
Zenodo 概念 DOI https://doi.org/10.5281/zenodo.3902709
档案论文 arXiv:2006.10996
TROIKA 论文 doi:10.1109/TBME.2014.2359372
TSER 档案主页 http://tseregression.org/
PPGnet 论文 arXiv:1903.08912
时序预训练(用及 IEEEPPG) arXiv:2402.09558
原始竞赛页(已失效) sites.google.com/site/researchbyzhang/ieeespcup2015

附录 Z:版本与变更记录

版本 日期 变更
v1 2020-06-21 首发(当前唯一版本)
本条目 2026-10-13 首版撰写完成

附录 AA:给数据集维护者的改进建议

基于本条目分析,若 Monash 团队未来更新 IEEEPPG,建议:

  1. 补受试者映射:提供窗口→受试者 ID 映射,支持严格的跨受试者评估,杜绝标签泄漏。
  2. 补人口属性:在隐私合规前提下提供受试者肤色/性别/年龄分层,支持公平性研究。
  3. 公布单集基准:在档案论文或仓库 README 给出 IEEEPPG 逐数据集的基线 RMSE,方便对标。
  4. 保留原始时间上下文:提供连续记录(而非仅切窗)版本,支持时序平滑与在线估计研究。
  5. 补测试集运动分层标签:标注每个 session 的运动类型,支持细粒度鲁棒性分析。

附录 AB:三分钟速览讲稿(口播版)

“IEEEPPG 是一个心率估计的数据集。它来自 2015 年 IEEE 信号处理杯的竞赛数据——那道题是:让选手用戴在手腕上的 PPG 传感器,在运动状态下估计心率。数据来自 12 个人跑步、8 个人做手臂剧烈运动。2020 年,莫纳什大学把这批数据重新打包,去掉心电图、统一成 5 维、切成 1000 步的等长序列,命名为 IEEEPPG,放在 Zenodo 上,用 CC BY 4.0 开放。它一共 3096 条序列,训练 1768、测试 1328,文件才 141.7 MB。它的价值在于:任务定义清晰、格式规范、许可干净,是可穿戴心率算法最经典的测试台之一。要注意的是:它不含 ECG、只测了 20 个人、训练和测试的运动类型还不一样——用的时候别踩这些坑。”

附录 AC:本条目与其他百科条目的区别

维度 本条目定位
与通用百科不同 侧重 AI-Ready 视角:格式、许可、任务定义、可复现性
与论文摘要不同 补齐了论文未给的工程细节(格式、加载、坑点)
与数据手册不同 增加了批判视角(偏倚、局限、改进建议)
与教程不同 兼顾"能不能用"与"该不该这样用"两个问题

附录 T:一句话速记卡(供背诵)

IEEEPPG = 20 个人(12 跑 8 挥)的腕表 PPG + 加速度,3096 条 5 维序列估心率,125 Hz × 8 秒 = 长度 1000,1768/1328 划分,Zenodo CC BY 4.0。


尾注

  1. 命名:本条目 slug 为 ieeepg(沿用任务头),但官方数据集名为 IEEEPPG Dataset;正文一律以官方名为准,slug 与标题保留 ieeepg 以便检索对齐。
  2. 数字口径:全文窗口数以档案论文 Table 1 的 1768/1328 为准;PPGnet 论文的 1765/1327 已作为双口径存照于坑 2 与附录 O。
  3. 许可:以 Zenodo 文件级 CC BY 4.0 为准,描述文案的 copyright 声明作为补充口径存照。
  4. 基准数字:档案论文只给全档案平均排名(Rocket 3.6842 / CD 4.186),IEEEPPG 单集 RMSE 未公布,此为明确遗留缺口(坑 4)。
  5. 来源清单:
  6. 互链:库内 PPG-DaLiA(202)、BIDMC PPG(74)、MIMIC-III-EXT-PPG(928)、Apnea-ECG(658) 等可交叉引用(详见 §9 与附录 L)。
  7. 维护:触发点见附录 P。
  8. 免责:本条目为数据集百科整理,所有硬数字来自公开一手来源,不构成任何医疗或投资建议。使用数据请遵守其许可条款(CC BY 4.0)与引用规范。

相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • bidsleep-dataset — 共享标签:生理信号 / 可穿戴传感 / 心电信号 / 评测基准 / 时序数据
  • scientisst-move — 共享标签:生理信号 / 可穿戴传感 / 心电信号 / 评测基准
  • sisfall — 共享标签:生理信号 / 可穿戴传感 / 评测基准 / 时序数据
  • wisdm — 共享标签:生理信号 / 可穿戴传感 / 评测基准 / 时序数据
  • shanghai-t1dm-t2dm-cgm — 共享标签:生理信号 / 可穿戴传感 / 评测基准 / 时序数据
  • mmash — 共享标签:生理信号 / 可穿戴传感 / 心电信号 / 评测基准
  • wearable-exam-stress — 共享标签:生理信号 / 可穿戴传感 / 评测基准 / 时序数据
  • icentia11k — 共享标签:生理信号 / 可穿戴传感 / 心电信号 / 评测基准
  • auricle-wearable-cv — 共享标签:生理信号 / 可穿戴传感 / 心电信号 / 评测基准
  • daphnet-fog — 共享标签:生理信号 / 可穿戴传感 / 时序数据

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集