Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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"

Awesome Lists containing this project

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},
}
```