Meta 的 WearableQA 健康推理基准 (GitHub 仓库)
摘要
WearableQA 是一个基准数据集,包含 4,084 道多选题,用于基于真实世界可穿戴数据的健康推理,旨在评估 AI 模型在纵向健康数据分析方面的性能。
查看缓存全文
缓存时间: 2026/09/11 14:13
facebookresearch/WearableQA 来源:https://github.com/facebookresearch/WearableQA
WearableQA:基于真实世界可穿戴数据的健康推理基准
arXiv (https://arxiv.org/abs/2609.05405)
HuggingFace 数据集 (https://huggingface.co/datasets/facebook/WearableQA)
许可证:CC BY-NC 4.0
WearableQA 是一个包含 4,084 道十选一多项选择题 的基准测试集,基于 200 名真实用户 的可穿戴设备时间序列、血液生物标志物和人口统计学信息构建,每位用户拥有多达约 500 天的每日测量数据。与基于合成或理想化信号构建的基准测试集不同,它保留了真实的可穿戴数据分布——包括设备噪声、缺失天数以及个体间差异。每个问题要求模型基于单个用户的纵向记录进行推理:对原始测量值进行计算、进行生理学解读,或两者兼需。
WearableQA 分类法
这 16 种问题类型沿两个互补的轴组织:
- 数据 vs. 健康推理 — 对纵向测量值进行计算(如相关性分析、异常计数、恢复时间、趋势形态)与对其进行生理学解读(如风险评估、鉴别诊断、预后预测)。
- 单信号 vs. 跨信号推理 — 基于单一指标推理与整合多个指标进行推理。
| 轴 | 类别 | 数量 |
|---|---|---|
| 推理组 | 数据 / 健康 | 2,724 / 1,360 |
| 信号复杂度 | 单信号 / 跨信号 | 1,682 / 2,402 |
| 依据来源 | 群体统计 / 文献依据 | 3,154 / 930 |
在每个推理组内,标准答案在选项 A–J 之间均匀平衡,因此随机基线为 10%。
本仓库包含什么
三个文件,两种格式——一个可直接使用的已渲染数据集,以及其来源的结构化数据。
| 文件 | 大小 | 说明 |
|---|---|---|
WearableQA.jsonl | 306 MB | 预渲染基准数据集。 每行一个问题,提示词已展平为文本。用于评估模型。 |
WearableQA_raw.json | 39 MB | 结构化源文件。 包含问题及完整的逐用户时间序列,您可以按任意方式渲染数据。 |
render_raw.py | 10 KB | 渲染器,可将结构化源文件转换为 .jsonl 格式,支持四种序列化方式。 |
1. WearableQA.jsonl —— 预渲染基准数据集
共 4,084 行,每个 JSON 对象对应一个问题。如果您只想将模型运行于该基准测试,使用此文件即可:所有提示词都已为单个字符串,无需组装。
{
"id": "Lit_user_25_2024-08-06",
"question": "You are given a user's demographics, wearable health sensor history, ...",
"choices": {
"A": "an elevated resting heart rate with low daily activity ...",
"...": "..."
},
"answer": "A",
"category": "fitness_prediction",
"reasoning_group": "health",
"signal": "cross",
"grounding": "literature",
"representation": "row"
}
| 字段 | 含义 |
|---|---|
id | 唯一问题ID(__) |
question | 完整提示词:指令、用户档案、传感器历史、血液检查、队列百分位、问题题干和选项 |
choices | 十个选项,键为 A–J |
answer | 标准答案选项字母 |
category | 16 种问题类型之一 |
reasoning_group | data(数据)或 health(健康) |
signal | single(单信号)或 cross(跨信号) |
grounding | population(基于队列统计)或 literature(基于文献关系) |
representation | 本文件使用的传感器序列化格式(发布文件中为 row) |
question 字符串由以下部分组装而成:
(指令)
=== USER PROFILE === 年龄、性别、BMI、种族
=== SENSOR DATA (row:每日一行) === 最多约500天的每日指标
=== BLOOD BIOMARKER PANEL === 如有,包含17种生物标志物
=== COHORT REFERENCE (population percentiles) === 5项指标的p10/p25/p50/p75/p90百分位
=== QUESTION === 问题题干
=== OPTIONS === A-J 选项
不适用的部分会被省略——有些问题特意不提供时间序列,模型必须仅凭血液检查面板进行推理;有些则省略队列参考。提示词很大:中位数约 86k 字符,最大约 124k。请相应配置上下文长度。
每位用户最多出现 16 项每日指标:步数、静息心率(RHR)、心率变异性(HRV)、最大摄氧量(VO2 max)、睡眠时长、睡眠效率、深睡占比(Deep%)、快速眼动占比(REM%)、就寝时间标准差、活动卡路里(Active Cal)、基础代谢率卡路里(BMR Calories)、平均压力水平(Stress)、运动次数(Exercise count)、运动时长(Exercise hours)、运动代谢当量(Exercise METs)和运动平均心率(Exercise average HR)。
真实记录是稀疏的——某一天缺失的指标在该天的行中简单地不出现。
2. WearableQA_raw.json —— 结构化源文件
这是渲染前的同一基准数据集,因此您可以以不同方式序列化时间序列,将数值馈送给使用工具的代理,或构建自己的提示模板。
{
"description": "...",
"n_mcqs": 4084,
"n_unique_users": 200,
"gt_balancing": "uniform A-J within each reasoning group (data / health)",
"cohort_reference": {
"": {p10, p25, p50, p75, p90, _min, _max, ...}
}, // 5项指标
"user_histories": {
"": [
{date, : value, ...}, ...
]
}, // 200位用户
"mcqs": [
{ ... }, ...
] // 4,084个问题
}
mcqs 中的每个条目包含:
| 字段 | 含义 |
|---|---|
id, user_id | 问题ID及其所属用户 |
stem, options, gt_letter | 问题文本、十个选项、标准答案字母 |
question_type, reasoning_group, signal, grounding | 分类标签 |
context | 该用户的 demographics(人口统计学信息)和 blood_panel(血液检查面板) |
end_date | 问题观察窗口的最后一天 |
window_size | 问题所询问的窗口长度(天数,全程为28) |
full_dropped_metrics | 本问题故意不提供的指标 |
no_cohort | 是否省略了队列参考 |
user_histories 存储每位用户的完整记录——渲染器会为每个问题切出所需的窗口。渲染一个问题需要28天的观察窗口加上最多500天的前置历史记录作为上下文。
3. render_raw.py —— 渲染器
从结构化源文件重建 .jsonl 文件。不加参数时,它逐字节复现发布的 WearableQA.jsonl(已验证:md5 82bb783e147db78501d35ffab4a5392f)。
# 重新生成发布的文件(row 格式)
python3 render_raw.py
# 以不同方式渲染传感器数据
python3 render_raw.py --format markdown --out WearableQA_markdown.jsonl
python3 render_raw.py --format csv --out WearableQA_csv.jsonl
python3 render_raw.py --format col --out WearableQA_col.jsonl
| 标志 | 默认值 | 含义 |
|---|---|---|
--data | WearableQA_raw.json | 结构化源文件 |
--format | row | row、col、csv 或 markdown |
--out | WearableQA.jsonl | 输出路径 |
只有 === SENSOR DATA === 块在不同格式间变化;提示词中的其他所有部分都相同。
row —— 每日一行,稀疏(缺失指标省略):
2023-10-20: Active Cal=1255, Stress=21.0, Deep%=30.7, RHR=38.0, Sleep(h)=5.05, Steps=27858, ...
2023-10-21: Active Cal=831.0, Stress=29.0, RHR=39.0, Steps=25463, VO2max=54.0
col —— 每个指标一个块,展示每个指标的整体轨迹:
Active Cal: 2023-10-20=1255, 2023-10-21=831.0, 2023-10-22=989.0, 2023-10-23=575.0, ...
csv —— 密集表格,缺失值为空字段:
date,Active Cal,Stress,Deep%,RHR,Sleep(h),Steps,VO2max
2023-10-20,1255,21.0,30.7,38.0,5.05,27858,54.0
2023-10-21,831.0,29.0,,39.0,,25463,54.0
markdown —— markdown 格式的同一表格。
格式选择很重要:在我们的实验中,序列化方式影响了几个百分点的准确度,并且相同数据的图像渲染远差于任何文本形式。
输出文件大小差异显著——csv 约 132 MB,row 306 MB,col 330 MB——这是因为稀疏格式重复指标名称,而密集格式重复分隔符。
render_raw.py 仅需 Python 3 —— 无第三方依赖。
获取数据(Git LFS)
数据集文件使用 Git LFS(https://git-lfs.com)存储。 克隆前请先安装 LFS,否则您将获得小型文本指针文件而非实际数据。
# 每台机器只需执行一次
git lfs install
git clone https://github.com/facebookresearch/WearableQA.git
cd WearableQA
已经克隆但未使用 LFS?请用以下命令获取实际文件:
git lfs pull
要检查您是否拥有实际数据而非指针:
$ ls -lh WearableQA.jsonl # 应约为 306M,而非约 134 字节
$ head -c 60 WearableQA.jsonl # 应为 JSON,而非 "version https://git-lfs..."
如果您只需要结构化源文件而不需要 306 MB 的渲染文件,可以在克隆时不拉取 LFS 内容,然后只拉取所需的文件:
GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/facebookresearch/WearableQA.git
cd WearableQA
git lfs pull --include="WearableQA_raw.json"
python3 render_raw.py # 在本地重建渲染文件
快速开始
该数据集也托管在 Hugging Face Hub,这是最快获取方式——无需克隆,无需 LFS 设置:
from datasets import load_dataset
ds = load_dataset("facebook/WearableQA", split="test")
ds[0]["question"] # 完整的提示词,可直接发送给模型
ds[0]["choices"] # {"A": ..., ..., "J": ...}
ds[0]["answer"] # "A"
Hub 上的副本也包含其他三种传感器序列化方式以及一个 structured 配置,提供原始数值而非渲染提示:
load_dataset("facebook/WearableQA", "markdown", split="test") # 另一种序列化方式
load_dataset("facebook/WearableQA", "structured", split="test") # 构建您自己的提示
如果您使用本仓库中的文件:
import json
with open("WearableQA.jsonl") as f:
questions = [json.loads(line) for line in f]
print(len(questions)) # 4084
q = questions[0]
prompt = q["question"] # 可直接发送给模型
gold = q["answer"] # 例如 "A"
# 在分类法的某个切片上评估
health = [q for q in questions if q["reasoning_group"] == "health"]
cross = [q for q in questions if q["signal"] == "cross"]
只有当模型选择的字母与 answer 匹配时,我们才评分为正确;无法解析字母的回答计为不正确。
引用
@misc{lee2026wearableqa,
title={{WearableQA}: A Benchmark for Health Reasoning over Real-World Wearable Data},
author={Ji Soo Lee and Xilun Chen and Pierce Chuang and Ashish Shenoy and Jason Wei and Dohwan Ko and Hyunwoo J. Kim and Benoit Corda},
year={2026},
eprint={2609.05405},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2609.05405},
}
许可证
数据采用知识共享署名-非商业性使用 4.0 国际许可协议(CC BY-NC 4.0)授权,并受以下附加条款约束: (i) 禁止尝试重新识别或重新识别用户; (ii) 禁止用于与临床、诊断或治疗决策相关的用途; (iii) 禁止以对健康相关结果具有歧视性、有害性或误导性的方式使用; (iv) 数据集按“原样”提供,不附带任何明示或暗示的保证,包括但不限于准确性、完整性或特定用途适用性,并且仅用于研究和基准测试目的。完整文本请参见 LICENSE。
相似文章
WearableQA:一个基于真实世界可穿戴数据的健康推理基准
WearableQA 是一个用于评估大型语言模型在真实世界可穿戴健康数据上推理能力的基准,它使用从纵向测量中衍生的多选题。
介绍 HealthBench
OpenAI 推出了 HealthBench,这是一个用于评估医疗保健环境中人工智能系统的新基准。该基准由来自 60 个国家的 262 名医生共同创建,包含 5,000 个逼真的健康对话和医生编写的评分标准,用于评估模型在有意义、可信和可改进的指标上的性能。
OpenMHC:加速可穿戴基础模型科学研究
OpenMHC推出了最大的开放获取可穿戴健康数据集,包含超过6000万小时的数据,并提供了可穿戴基础模型的开源实现,包括用于预测、插补和时序预测的统一基准测试。
Reasoning-Medical0.1-27B(Qwen3.5-27B 医疗微调版本,声称超越 MedGemma)
EpistemeAI 发布了 Reasoning-Medical0.1-27B,这是 Qwen3.5-27B 的医疗推理微调版本,声称通过在精心策划的 10 万条记录数据集上引入链式思维推理,在多项医疗基准测试中超越了 MedGemma。
医疗模型:Reasoning-Medical-27B (Qwen3.6-27B微调)
Reasoning-Medical-27B 是一个基于 Qwen3.6-27B 微调的高级医学推理模型,使用 GRPO 和 Unsloth 优化方法,在 37 万个问答示例上通过思维链推理进行训练。