UltraGCN
UltraGCN is an ultra-simplified formulation of graph convolutional networks for collaborative filtering. This repo provides the official open-source implementation of our paper:
Kelong Mao, Jieming Zhu, Xi Xiao, Biao Lu, Zhaowei Wang, Xiuqiang He. UltraGCN: Ultra Simplification of Graph Convolutional Networks for Recommendation, in CIKM 2021.
Model Overview
Graph Convolutional Networks (GCN) have been widely used for collaborative filtering. GCN models allow to capture higher-order connections between users and items through its recursive message passing mechanism to aggregate neighborhood information. However, this message passing mechanism largely slows down the convergence of GCNs, especially when mini-batch sub-graph sampling is applied on large graphs. LightGCN reduces GCN models by removing feature transformations and nonlinear activations. In our work, UltraGCN was developed as an ultra-simplified formulation of GCNs, which skips explicit message passing and instead approximates infinite-layer graph convolutions using a constraint loss.
Environments
To reproduce our experimental results, we strongly suggest to use the following package settings.
- python 3.7.9
- pytorch 1.4.0
- numpy 1.19.2
- scipy 1.1.0
- tensorboard 2.4.0
Code Structure
- main.py: We organize all the code in a single file to make it easy to run UltraGCN.
- config/ultragcn_xxx.ini: Each configuration file specifies parameter settings for a target dataset.
Results
Results on Yelp18
Model | Recall@20 | NDCG@20 |
---|---|---|
NGCF [SIGIR'19] | 0.0579 | 0.0477 |
LightGCN [SIGIR'20] | 0.0649 | 0.0530 |
SGL-ED [SIGIR'21] | 0.0675 | 0.0555 |
UltraGCN [CIKM'21] | 0.0683 | 0.0561 |
-
Follow the script below to reproduce the results
python main.py --config_file ./config/ultragcn_yelp18_m1.ini
-
See the running log: results/ultragcn_yelp18_m1.log
Results on Gowalla
Model | Recall@20 | NDCG@20 |
---|---|---|
NGCF [SIGIR'19] | 0.1570 | 0.1327 |
LightGCN [SIGIR'20] | 0.1830 | 0.1554 |
UltraGCN [CIKM'21] | 0.1862 | 0.1580 |
-
Follow the script below to reproduce the results
python main.py --config_file ./config/ultragcn_gowalla_m1.ini
-
See the running log: results/ultragcn_gowalla_m1.log
Results on Amazon-Books
Model | Recall@20 | NDCG@20 |
---|---|---|
NGCF [SIGIR'19] | 0.0344 | 0.0263 |
LightGCN [SIGIR'20] | 0.0411 | 0.0315 |
SGL-ED [SIGIR'21] | 0.0478 | 0.0379 |
UltraGCN [CIKM'21] | 0.0681 | 0.0556 |
-
Follow the script below to reproduce the results
python main.py --config_file ./config/ultragcn_amazonbooks_m1.ini
-
See the running log: results/ultragcn_amazonbooks_m1.log
Results on Movielens-1M
Model | F1@20 | NDCG@20 | Recall@20 |
---|---|---|---|
NGCF [SIGIR'19] | 0.1582 | 0.2511 | 0.2513 |
LCFN [ICML'20] | 0.1625 | 0.2603 | |
LightGCN [SIGIR'20] | 0.2427 | 0.2576 | |
UltraGCN [CIKM'21] | 0.2004 | 0.2642 | 0.2787 |
-
Follow the script below to reproduce the results
python main.py --config_file ./config/ultragcn_movielens1m_m1.ini
-
See the running log: results/ultragcn_movielens1m_m1.log
Results on Amazon-Electronics
Model | F1@20 | NDCG@20 |
---|---|---|
ENMF [TOIS'20] | 0.0314 | 0.0823 |
NBPO [SIGIR'20] | 0.0313 | 0.0810 |
UltraGCN [CIKM'21] | 0.0330 | 0.0829 |
-
Follow the script below to reproduce the results
python main.py --config_file ./config/ultragcn_amazonelectronics_m1.ini
-
See the running log: results/ultragcn_amazonelectronics_m1.log
Results on Amazon-CDs
Model | Recall@20 | NDCG@20 |
---|---|---|
NGCF [SIGIR'19] | 0.1258 | 0.0792 |
BGCF [KDD'20] | 0.1506 | 0.0948 |
UltraGCN [CIKM'21] | 0.1622 | 0.1043 |
-
Follow the script below to reproduce the results
python main.py --config_file ./config/ultragcn_amazoncds_m1.ini
-
See the running log: results/ultragcn_amazoncds_m1.log