BenchTemp
收藏BenchTemp: A General Benchmark for Evaluating Temporal Graph Neural Networks
Overview
BenchTemp is a general Benchmark Python Library for evaluating Temporal Graph Neural Networks (TGNNs) quickly and efficiently on various workloads. It provides Benchmark Datasets, and unified pipelines (DataPreprocessor, DataLoader EdgeSampler, Evaluator, EarlyStopMonitor, BenchTempLoss, BenchTempOptimizer, and Leaderboard) for evaluating Temporal Graph Neural Networks on both link prediction task and node classification task.
- Paper: BenchTemp: A General Benchmark for Evaluating Temporal Graph Neural Networks
- Datasets: Zenodo
- Code: GitHub
- Leaderboards: Website
News
- 5/1/2024 - The Myket Dataset used in paper has been added to BenchTemp. Data preprocess code at preprocess/Myket.py
- 2/9/2023 - All datasets have been hosted on Zenodo with DOI 10.5281/zenodo.8267846.
- 20/8/2023 - Four large-scale datasets (eBay-Large, DGraphFin-Large, YouTubeReddit-Large, and Taobao-Large) have been added.
- 12/7/2023 - Experimental codes uploaded in folder experimental_codes.
- 25/6/2023 - BenchTemp website updated.
- 24/6/2023 - Reference of BenchTemp updated on GitHub.
Installation
Requirements
- numpy >= 1.18.0
- pandas >= 1.2.0
- sklearn >= 0.20.0
PyPI install
bash pip install benchtemp
Usage Example
Dynamic Link Prediction
BenchTemp provides components for dynamic link prediction task: python import benchtemp as bt
data = bt.lp.DataLoader(dataset_path="./data/", dataset_name=mooc) node_features, edge_features, full_data, train_data, val_data, test_data, new_node_val_data, new_node_test_data, new_old_node_val_data, new_old_node_test_data, new_new_node_val_data, new_new_node_test_data, unseen_nodes_num = data.load()
train_rand_sampler = bt.lp.RandEdgeSampler(train_data.sources, train_data.destinations) monitor = bt.EarlyStopMonitor()
model = TGNN(parameters) for epoch in range(args.epochs): size = len(train_data) _, negatives_batch = train_rand_sampler.sample(size) pre_positive, pre_negative = model(positive_batch, negatives_batch) loss = loss_function(pre_positive, pre_negative, labels) val_ap = model(val_data) if monitor.early_stop_check(val_ap): break
pre = model(test_data) results = bt.evaluator(pre, labels)
Dynamic Node Classification
BenchTemp provides components for dynamic node classification task: python import benchtemp as bt
data = bt.nc.DataLoader(dataset_path="./data/", dataset_name=mooc) node_features, edge_features, full_data, train_data, val_data, test_data = data.load()
model = TGNN(parameters) for epoch in range(args.epochs): size = len(train_data) pre_positive, pre_negative = model(positive_batch, negatives_batch) loss = loss_function(pre_positive, pre_negative, labels) val_ap = model(val_data) if monitor.early_stop_check(val_ap): break
pre = model(test_data) results = bt.evaluator(pre, labels)
BenchTemp Reference
DataPreprocessor
Preprocesses datasets for TGNNs: python import benchtemp as bt
processor = bt.DataPreprocessor(data_path="./data/", data_name="mooc") processor.data_preprocess(bipartite=True)
TemporalGraph
Represents a temporal graph: python import benchtemp as bt
graph_df = pd.read_csv("dataset_path") full_data = bt.TemporalGraph(sources, destinations, timestamps, edge_idxs, labels)
lp.DataLoader
DataLoader for link prediction tasks: python import benchtemp as bt
data = bt.lp.DataLoader(dataset_path="./data/", dataset_name=mooc) node_features, edge_features, full_data, train_data, val_data, test_data, new_node_val_data, new_node_test_data, new_old_node_val_data, new_old_node_test_data, new_new_node_val_data, new_new_node_test_data, unseen_nodes_num = data.load()
lp.RandEdgeSampler
Negative edge sampler for link prediction: python import benchtemp as bt
train_rand_sampler = bt.lp.RandEdgeSampler(train_data.sources, train_data.destinations) _, negatives_batch = train_rand_sampler.sample(size)
nc.DataLoader
DataLoader for node classification tasks: python import benchtemp as bt
data = bt.nc.DataLoader(dataset_path="./data/", dataset_name=mooc, use_validation=True) node_features, edge_features, full_data, train_data, val_data, test_data = data.load()
EarlyStopMonitor
Early stopping monitor: python import benchtemp as bt
early_stopper = bt.EarlyStopMonitor(max_round=args.patience) if early_stopper.early_stop_check(val_ap): break
Evaluator
Evaluator for different tasks: python import benchtemp as bt
evaluator = bt.Evaluator(task_name="LP") results = evaluator.eval(pred_score, true_label)

- 1BenchTemp: A General Benchmark for Evaluating Temporal Graph Neural Networks · 2023年



