Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/CRIPAC-DIG/SR-GNN
[AAAI 2019] Source code and datasets for "Session-based Recommendation with Graph Neural Networks"
https://github.com/CRIPAC-DIG/SR-GNN
graph-neural-networks machine-learning recommender-systems session-based-recommendation
Last synced: 3 months ago
JSON representation
[AAAI 2019] Source code and datasets for "Session-based Recommendation with Graph Neural Networks"
- Host: GitHub
- URL: https://github.com/CRIPAC-DIG/SR-GNN
- Owner: CRIPAC-DIG
- Archived: true
- Created: 2018-11-12T10:04:32.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2021-11-12T07:45:36.000Z (almost 3 years ago)
- Last Synced: 2024-06-24T05:53:23.956Z (5 months ago)
- Topics: graph-neural-networks, machine-learning, recommender-systems, session-based-recommendation
- Language: Python
- Homepage:
- Size: 127 KB
- Stars: 816
- Watchers: 11
- Forks: 272
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- StarryDivineSky - CRIPAC-DIG/SR-GNN
README
# SR-GNN
## Paper data and code
This is the code for the AAAI 2019 Paper: [Session-based Recommendation with Graph Neural Networks](https://arxiv.org/abs/1811.00855). We have implemented our methods in both **Tensorflow** and **Pytorch**.
Here are two datasets we used in our paper. After downloaded the datasets, you can put them in the folder `datasets/`:
- YOOCHOOSE: or
- DIGINETICA: or
There is a small dataset `sample` included in the folder `datasets/`, which can be used to test the correctness of the code.
We have also written a [blog](https://sxkdz.github.io/research/SR-GNN) explaining the paper.
## Usage
You need to run the file `datasets/preprocess.py` first to preprocess the data.
For example: `cd datasets; python preprocess.py --dataset=sample`
```bash
usage: preprocess.py [-h] [--dataset DATASET]optional arguments:
-h, --help show this help message and exit
--dataset DATASET dataset name: diginetica/yoochoose/sample
```Then you can run the file `pytorch_code/main.py` or `tensorflow_code/main.py` to train the model.
For example: `cd pytorch_code; python main.py --dataset=sample`
You can add the suffix `--nonhybrid` to use the global preference of a session graph to recommend instead of the hybrid preference.
You can also change other parameters according to the usage:
```bash
usage: main.py [-h] [--dataset DATASET] [--batchSize BATCHSIZE]
[--hiddenSize HIDDENSIZE] [--epoch EPOCH] [--lr LR]
[--lr_dc LR_DC] [--lr_dc_step LR_DC_STEP] [--l2 L2]
[--step STEP] [--patience PATIENCE] [--nonhybrid]
[--validation] [--valid_portion VALID_PORTION]optional arguments:
-h, --help show this help message and exit
--dataset DATASET dataset name:
diginetica/yoochoose1_4/yoochoose1_64/sample
--batchSize BATCHSIZE
input batch size
--hiddenSize HIDDENSIZE
hidden state size
--epoch EPOCH the number of epochs to train for
--lr LR learning rate
--lr_dc LR_DC learning rate decay rate
--lr_dc_step LR_DC_STEP
the number of epochs after which the learning rate
decay
--l2 L2 l2 penalty
--step STEP gnn propogation steps
--patience PATIENCE the number of epoch to wait before early stop
--nonhybrid only use the global preference to predict
--validation validation
--valid_portion VALID_PORTION
split the portion of training set as validation set
```## Requirements
- Python 3
- PyTorch 0.4.0 or Tensorflow 1.9.0## Other Implementation for Reference
There are other implementation available for reference:
- Implementation based on PaddlePaddle by Baidu [[Link]](https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/gnn)
- Implementation based on PyTorch Geometric [[Link]](https://github.com/RuihongQiu/SR-GNN_PyTorch-Geometric)
- Another implementation based on Tensorflow [[Link]](https://github.com/jimanvlad/SR-GNN)
- Yet another implementation based on Tensorflow [[Link]](https://github.com/loserChen/TensorFlow-In-Practice/tree/master/SRGNN)## Citation
Please cite our paper if you use the code:
```
@inproceedings{Wu:2019ke,
title = {{Session-based Recommendation with Graph Neural Networks}},
author = {Wu, Shu and Tang, Yuyuan and Zhu, Yanqiao and Wang, Liang and Xie, Xing and Tan, Tieniu},
year = 2019,
booktitle = {Proceedings of the Twenty-Third AAAI Conference on Artificial Intelligence},
location = {Honolulu, HI, USA},
month = jul,
volume = 33,
number = 1,
series = {AAAI '19},
pages = {346--353},
url = {https://aaai.org/ojs/index.php/AAAI/article/view/3804},
doi = {10.1609/aaai.v33i01.3301346},
editor = {Pascal Van Hentenryck and Zhi-Hua Zhou},
}
```