microsoft/TimeCraft

Official code for TimeCraft: A Time Series Generation Framework for Real-World Applications

📚 什麼是 TimeCraft

TimeCraft 是一個基於擴散模型的 Microsoft Research 開源框架,用於 合成時間序列生成。它解決了在處理真實世界序列資料時常見的三個實際痛點:

  1. 跨領域泛化 – 借由學習的 潛在原型字典 和輕量級 原型指派模組 (PAM),單一模型僅需少量範例序列即可適應新領域(例如能源、金融、健康)。
  2. 自然語言控制 – 自然語言提示(例如「增加夏季的季節性峰值」)透過多代理系統生成模式的文本描述,並與原型提示結合,轉化為條件信號。
  3. 目標感知生成 – 合成樣本透過 影響函數引導的擴散 明確優化,以提升下游任務(預測、分類、異常檢測)的表現,即模型會觀察生成點如何改變使用者提供的下游模型的損失,並據此引導生成過程。

該儲存庫包含核心擴散引擎、資料預處理腳本,以及三個可選擴展,推動研究前沿:

  • CaTSG – 為擴散過程添加因果約束。
  • OATS – 用於大規模時間序列基礎模型預訓練的線上資料增強引擎。
  • Diff‑MN – 從不規則觀測中實現連續時間生成。

🚀 主要特性(概覽)

特性 為何重要
帶原型的通用潛在空間 可在任意領域重用少量學習到的時間模式;僅需少量領域特定範例即可創建 領域提示
少樣本領域適應 從電力資料遷移到交通資料時無需完整重訓練——只需輸入少量目標序列即可。
自由文本控制 輸入「具有週季節性上升趨勢」即可,模型將忠實執行,使非專家也能直覺創建合成資料。
目標感知擴散 生成過程由使用者下游模型的梯度引導,因此合成資料不僅真實,而且對您關心的任務 真正有用
模組化擴展(CaTSG、OATS、Diff‑MN) 無需額外程式碼變更即可插入因果推理、基礎模型預訓練的線上增強或連續時間生成。
最尖端成果 相比基線在 MMD/KL 上提升 25 %–53 %,文本到序列一致性更佳,醫療基準上的下游表現可與真實資料持平或超越。

🎯 典型應用場景

場景 TimeCraft 如何幫助
資料稀缺領域(例如罕見病 ICU 記錄) 生成高保真合成序列,保留臨床相關模式,同時保護隱私。
模擬與「如果……會怎樣」分析 使用因果擴展(CaTSG)生成符合已知因果關係的序列,實現安全的風險評估。
預測模型的快速原型設計 使用 OATS 在線生成大量多樣化訓練集,提升大規模時間序列基礎模型的零樣本性能。
領域特定的故事敘述 非技術人員可用自然語言描述期望行為,立即獲得匹配的合成資料。
基準建立 生成跨領域測試套件,用於評估新的預測或異常檢測演算法。

🛠️ 快速入門(快速開始)

# 1. 克隆並建立 conda 環境
git clone https://github.com/microsoft/TimeCraft.git
cd TimeCraft
conda env create -f environment.yml   # 安裝 PyTorch、擴散庫等
conda activate timecraft

# 2. 下載並預處理公開資料集(例如:電力)
python TimeDP/utils/prepare_datasets.py   # 從 Zenodo / GluonTS 下載資料並建立 .npy 窗口

# 3. 訓練核心模型(例如電力,96步窗口)
python main.py --dataset electricity_96 --epochs 200 --batch_size 64

# 4. 使用文本提示生成
python inference.py \
    --prompt "a weekly seasonal pattern with a rising upward trend" \
    --output generated.npy

# 5. (可選)為下游分類器進行目標感知生成
python inference.py \
    --downstream_model path/to/rnn.pt \
    --guidance_set path/to/guidance.pkl \
    --tar_diff True

該儲存庫還包含三個擴展的現成腳本(./CaTSG./OATS./Diff-MN)和範例筆記本,完整示範從資料下載到評估的流程。


📂 儲存庫結構(概覽)

TimeCraft/
├─ TimeDP/                 # 核心擴散模型、原型字典、PAM
├─ CaTSG/                  # 因果擴散擴展
├─ OATS/                   # 在線資料增強引擎
├─ Diff-MN/                # 連續時間生成模組
├─ process/                # 文本模板生成與 ts-to-text 腳本
├─ supplementary/          # 詳細文件、訓練/推理命令速查表
├─ environment.yml         # conda 環境定義
├─ main.py                 # 訓練入口點
├─ inference.py            # 生成入口點(支援所有三種輸入)
└─ README.md               # (此檔案)

📖 進一步閱讀與資源

  • Microsoft Research 博客文章 – 提供跨領域、自然語言控制、目標感知三大支柱的非技術性概述。
  • ArXiv 論文 – 每個主要組件均有獨立論文(如 CaTSG 2025、OATS 2026、Diff‑MN 2026),在 README 中均有連結。
  • 範例筆記本 – 位於 supplementary/,展示在電力基準和 MIMIC‑III ICU 住院預測任務上的端到端執行。

✅ 總結

如果您需要 合成、可控且任務感知的時間序列資料——無論是用於隱私保護的醫療研究、金融市場模擬,還是建構穩健的預測模型——TimeCraft 提供了一個研究級、基於擴散的工具箱,開箱即用,並可擴展因果或連續時間生成能力。

相關

  • 專案
  • 專案
  • 專案
  • Dispatch
  • 專案