Non-collective Calibrating Strategy for Time Series Forecasting -[Paper Accepted by IJCAI 2025]

July 2, 2025 ยท View on GitHub

๐Ÿš€ Enhance pretrained time series models without full retraining!

SoP is a universal calibration strategy that resolves multi-target learning conflicts by optimizing each prediction target independently while keeping the backbone frozen. Achieves up to 22% improvement even with simple MLP Plugs.


Usage:

Install Python 3.8. For convenience, execute the following command.

pip install -r requirements.txt

๐Ÿ“‚ Prepare Data:

You can obtain the well pre-processed datasets from https://github.com/thuml/Time-Series-Library


๐Ÿš€ Quick Start

Train and evaluate model

We provide the experiment scripts for Exchange dataset under the folder ./scrip/. You can reproduce the experiment results as the following examples:

bash ./scrip/long_term_forecast/Exchange_script/iTransformer.sh

The specific operation steps are as follows๏ผš

  • Training Socket model and set the following parameters in the iTransformer. sh file:
tunmodel=0 # Not using SoP for calibration
cfintune=0

  • Start training Plug:
tunmodel=1 # Using SoP for calibration
cfintune=0 # Using step-wise SoP
tunmodel=1 # Using SoP for calibration
cfintune=1 # Using variable-wise SoP

If you want to train multiple objectives (variables or time steps) in combination:

tunmodel=1 # Using SoP for calibration
cfintune=1 # Using variable-wise SoP
cseg_len=3 # Three variables are optimized together as a group, We refer to each such group of variables as an optimized Plug

Training Modes

ModetunmodelcfintuneDescription
Baseline (No SoP)00Train Socket model only
Step-wise SoP10Optimize per time step
Variable-wise SoP11Optimize per variable
Grouped Steps10 + cseg_len=nOptimize n stps jointly
Grouped Variables11 + cseg_len=nOptimize n variables jointly

Specifically, for a prediction target YโˆˆRNร—SY \in \mathbb{R}^{N \times S}: If nn variables along the NN dimension form an optimized plug to predict YplugY_{\text{plug}} โˆˆRnร—S\in \mathbb{R}^{n \times S} , SoP creates the plug counts as M=NnM = \frac{N}{n}.


๐Ÿ› ๏ธ Develop your own model.

Add the model file to the folder ./models. You can follow the ./models/Transformer.py. Include the newly added model in the Exp_Basic.model_dict of ./exp/exp_basic.py. Create the corresponding scripts under the folder ./scrip.


๐Ÿ“œ Citation

If you find this repo useful, please cite our paper. https://arxiv.org/abs/2506.03176

@article{wang2025non,
  title={Non-collective Calibrating Strategy for Time Series Forecasting},
  author={Wang, Bin and Han, Yongqi and Ma, Minbo and Li, Tianrui and Zhang, Junbo and Hong, Feng and Yu, Yanwei},
  journal={arXiv preprint arXiv:2506.03176},
  year={2025}
}

๐Ÿ“ฉ Contact

Yongqi Han (hanyuki23@stu.ouc.edu.cn)