TS-Haystack
收藏TS-Haystack 数据集概述
数据集简介
TS-Haystack 是一个用于测试长时程时间序列(1K-1M+ 数据点)检索与推理能力的半合成基准数据集。它基于 Capture-24 加速度计数据,通过将精心设计的“针”(needle)活动插入到真实的背景数据中,生成受控的问题-答案对。该数据集旨在系统评估时间序列语言模型在长范围上下文中查找、推理和比较事件的能力,类似于文本大语言模型的“大海捞针”评估,但针对的是连续传感器数据。
数据集获取
- 直接访问地址:https://huggingface.co/datasets/nicozumarraga/capture24-ts-haystack-cot
- 下载方式:
- 通过
pip install ts-haystack[download]安装工具。 - 使用脚本
python scripts/download_from_hf.py --dataset ts-haystack-cot下载包含思维链(CoT)的数据集。 - 或使用
python scripts/download_from_hf.py --dataset ts-haystack-core仅下载用于本地生成的核心构件。
- 通过
数据内容与结构
-
数据源:基于 Capture-24 原始传感器数据。
-
上下文长度:覆盖从 2.56 秒到 2 小时的范围(例如 2.56s, 10s, 100s, 900s, 3600s, 7200s)。
-
任务数量:包含 10 种不同的推理任务。
-
数据格式:存储为 Parquet 文件。
-
目录结构:
data/capture24/ts_haystack/ ├── timelines/ # 每位参与者的活动时间线 ├── bout_index.parquet # 跨参与者的活动片段索引 ├── transition_matrix.json # 活动转移概率矩阵 └── tasks/ # 各任务数据 ├── [context_length]/ # 按上下文长度划分 ├── [task_name]/ # 按任务名称划分 ├── train/data.parquet ├── val/data.parquet └── test/data.parquet
任务类型
| 序号 | 任务名称 | 问题示例 | 答案类型 |
|---|---|---|---|
| 1 | 存在性检测 | “这段记录中有步行吗?” | 布尔值 |
| 2 | 时间定位 | “步行片段发生在什么时候?” | 时间范围 |
| 3 | 计数 | “发生了多少次步行片段?” | 整数 |
| 4 | 排序 | “步行发生在坐下之前吗?” | 布尔值/类别 |
| 5 | 状态查询 | “在上午 7:15 的活动水平是什么?” | 类别 |
| 6 | 前因推理 | “步行之前是什么活动?” | 类别 |
| 7 | 比较 | “最长的步行时段是什么?” | 时间范围 |
| 8 | 多跳定位 | “在坐下之后,第二次步行片段发生在什么时候?” | 时间范围 |
| 9 | 异常检测 | “这段记录中有异常吗?” | 布尔值 |
| 10 | 异常定位 | “是否有异常,如果有,在什么时候?” | 时间范围 |
数据模式(Parquet Schema)
| 列名 | 类型 | 描述 |
|---|---|---|
x_axis, y_axis, z_axis |
List[float] | 三轴加速度计数据 |
task_type |
str | 任务名称(例如 "existence") |
context_length_samples |
int | 窗口大小(样本数) |
recording_time_start |
str | 人类可读的开始时间 |
recording_time_end |
str | 人类可读的结束时间 |
question |
str | 生成的问题 |
answer |
str | 真实答案 |
answer_type |
str | 答案类型(boolean, integer, category, time_range, timestamp) |
needles |
str (JSON) | 插入的“针”活动元数据 |
difficulty_config |
str (JSON) | 生成参数配置 |
is_valid |
bool | 验证状态 |
生成流程架构
生成管道包含四个阶段:
- 阶段一:核心构件构建(一次性)
TimelineBuilder:从 Capture-24 数据中提取活动片段。BoutIndexer:创建用于快速采样的跨参与者索引。TransitionMatrix:学习活动转移概率。
- 阶段二:采样与风格迁移(每个样本)
BackgroundSampler:采样纯净或混合的背景窗口。NeedleSampler:从活动片段索引中采样“针”活动。StyleTransfer:通过协方差投影和边界融合,使“针”活动的统计特性与背景匹配。
- 阶段三:任务生成(每个样本)
- 10 个任务生成器利用注入的组件创建多样化的问题-答案对。
PromptTemplateBank提供自然语言多样性。
- 阶段四:思维链生成(可选)
- 基于大语言模型生成思维链推理依据。
- 向 Parquet 文件添加
rationale列。
配置选项
数据集生成通过 YAML 配置文件控制。关键参数包括:
context_lengths_seconds:上下文窗口长度(秒)。needle_length_ratio_range:“针”活动时长占上下文的比例范围。background_purity:背景纯度("pure", "mixed", "any")。needle_position:“针”活动位置("random", "beginning", "middle", "end")。style_transfer.transfer_mode:风格迁移模式("mean_only" 或 "full")。style_transfer.blend_mode:边界融合模式("cosine" 或 "linear")。
使用与扩展
- 加载数据:可使用 Polars 库直接读取 Parquet 文件。
- 自定义生成:支持使用任何时间序列数据源,通过实现自定义的
BackgroundSampler和NeedleSampler来生成样本。 - 开发与测试:提供完整的开发环境安装、测试和代码检查脚本。
引用
如果使用 TS-Haystack,请引用: bibtex @misc{Zumarraga2026TSHaystack, title = {TS-Haystack: A Multi-Scale Retrieval Benchmark for Time Series Language Models}, author = {Zumarraga, Nicolas and Kaar, Thomas and Wang, Ning and Xu, Maxwell A. and Rosenblatt, Mark and Kreft, Markus and OSullivan, Kevin and Schmiedmayer, Paul and Langer, Patrick and Jakob, Robert}, year = {2026}, eprint = {2602.14200}, archivePrefix= {arXiv}, primaryClass = {cs.LG}, url = {https://arxiv.org/abs/2602.14200}, }
许可证
本项目采用 MIT 许可证。



