Official Implementation of "FedSkeleton: Secure Multi-Party Graph Skeleton Construction for Privacy-Preserving Federated Time-Series Forecasting" (AAAI 2026 Submission).
FedSkeleton is a privacy-preserving Federated Graph Learning (FGL) framework designed to tackle the challenge of data silos in time-series forecasting. It explicitly addresses the dilemma between capturing cross-party global dependencies and protecting sensitive graph topology.
The framework consists of two key components:
- Skeleton Construction Module: Securely constructs a global graph skeleton to capture intrinsic topological dependencies without revealing local sub-graph structures.
- Dual-stream Forecasting Module: Integrates local private dynamics with global skeleton-based information to achieve accurate time-series prediction.
Henggang Deng¹, Yuchao Tang¹, Wenjie Fu², Huandong Wang¹†, Kun Chen³†, Tao Jiang² ¹Tsinghua University, ²Huazhong University of Science and Technology, ³Ant Group
This project uses Conda for environment management.
# 1. Create the environment
conda env create -f environment.yml
# 2. Activate the environment
conda activate FedBone
# 3. (Optional) Install plotting dependencies if necessary
pip install SciencePlots
Note: The internal codename for this project is
FedBone. You may see this name in some script files (e.g.,training_mode: FedBone), which corresponds to the FedSkeleton method described in the paper.
The system will automatically check the data/ directory. If datasets (e.g., PowerGrid, Social) are missing, simulator.py will attempt to generate or download the necessary sub-graph data.
To reproduce the main results of FedSkeleton:
python main_train.py
You can override configuration parameters (defined in config.yaml) via the command line:
# Example: Run on GPU 0 with specific dynamics
python main_train.py --device cuda:0 --dynamics PowerGrid
Key hyperparameters in config.yaml:
| Section | Parameter | Description |
|---|---|---|
| Method | training_mode |
Set to FedBone to enable the FedSkeleton framework. |
| Model | FedSke.n_dim |
Dimension for the Hyperbolic Skeleton embedding. |
FedSke.ratio |
Skeleton extraction ratio (compression rate). | |
| Data | dynamics |
Dataset: Net (Synthetic), PowerGrid, Social, Airport. |
| Privacy | Attack |
Set to True to simulate reconstruction attacks for privacy evaluation. |
| FL | num_clients |
Number of parties (clients) in the federated setting. |
FedSkeleton/
├── config.yaml # Hyperparameters (Skeleton ratio, embedding dim, etc.)
├── main_train.py # Main entry point for Dual-stream Forecasting training
├── FLClient.py # Base Federated Client
├── client.py # FedSkeleton Client (Local Stream + Skeleton Construction)
├── server.py # Server (Global Skeleton Aggregation)
├── model.py # BackboneODE & Hyperbolic Embedding Modules
├── dynamics.py # Differential Equation Models
├── simulator.py # Graph Topology & Time-series Generator
└── utils.py # Visualization & Metrics
If you find this code useful for your research, please cite our paper:
@inproceedings{Deng2025FedSkeleton,
title={FedSkeleton: Secure Multi-Party Graph Skeleton Construction for Privacy-Preserving Federated Time-Series Forecasting},
author={Henggang Deng, Yuchao Tang, Wenjie Fu, Huandong Wang, Kun Chen, Tao Jiang},
booktitle={AAAI Conference on Artificial Intelligence},
year={2025}
}
For any questions, please contact:
- Henggang Deng:
denghenggang2003@163.com - Huandong Wang:
wanghuandong@tsinghua.edu.cn