https://github.com/chaoscodes/neural_graph_collaborative_filtering
Neural Graph Collaborative Filtering, SIGIR2019
https://github.com/chaoscodes/neural_graph_collaborative_filtering
Science Score: 10.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
○codemeta.json file
-
○.zenodo.json file
-
○DOI references
-
✓Academic publication links
Links to: arxiv.org, acm.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (10.3%) to scientific vocabulary
Last synced: 10 months ago
·
JSON representation
Repository
Neural Graph Collaborative Filtering, SIGIR2019
Basic Info
- Host: GitHub
- Owner: ChaosCodes
- Language: Python
- Default Branch: master
- Size: 11.5 MB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Fork of xiangwang1223/neural_graph_collaborative_filtering
Created over 6 years ago
· Last pushed over 6 years ago
https://github.com/ChaosCodes/neural_graph_collaborative_filtering/blob/master/
# Neural Graph Collaborative Filtering
This is our Tensorflow implementation for the paper:
>Xiang Wang, Xiangnan He, Meng Wang, Fuli Feng, and Tat-Seng Chua (2019). Neural Graph Collaborative Filtering, [Paper in ACM DL](https://dl.acm.org/citation.cfm?doid=3331184.3331267) or [Paper in arXiv](https://arxiv.org/abs/1905.08108). In SIGIR'19, Paris, France, July 21-25, 2019.
Author: Dr. Xiang Wang (xiangwang at u.nus.edu)
## Introduction
Neural Graph Collaborative Filtering (NGCF) is a new recommendation framework based on graph neural network, explicitly encoding the collaborative signal in the form of high-order connectivities in user-item bipartite graph by performing embedding propagation.
## Citation
If you want to use our codes and datasets in your research, please cite:
```
@inproceedings{NGCF19,
author = {Xiang Wang and
Xiangnan He and
Meng Wang and
Fuli Feng and
Tat{-}Seng Chua},
title = {Neural Graph Collaborative Filtering},
booktitle = {Proceedings of the 42nd International {ACM} {SIGIR} Conference on
Research and Development in Information Retrieval, {SIGIR} 2019, Paris,
France, July 21-25, 2019.},
pages = {165--174},
year = {2019},
}
```
## Environment Requirement
The code has been tested running under Python 3.6.5. The required packages are as follows:
* tensorflow == 1.8.0
* numpy == 1.14.3
* scipy == 1.1.0
* sklearn == 0.19.1
## Example to Run the Codes
The instruction of commands has been clearly stated in the codes (see the parser function in NGCF/utility/parser.py).
* Gowalla dataset
```
python NGCF.py --dataset gowalla --regs [1e-5] --embed_size 64 --layer_size [64,64,64] --lr 0.0001 --save_flag 1 --pretrain 0 --batch_size 1024 --epoch 400 --verbose 1 --node_dropout [0.1] --mess_dropout [0.1,0.1,0.1]
```
* Amazon-book dataset
```
python NGCF.py --dataset amazon-book --regs [1e-5] --embed_size 64 --layer_size [64,64,64] --lr 0.0005 --save_flag 1 --pretrain 0 --batch_size 1024 --epoch 200 --verbose 50 --node_dropout [0.1] --mess_dropout [0.1,0.1,0.1]
```
Some important arguments:
* `alg_type`
* It specifies the type of graph convolutional layer.
* Here we provide three options:
* `ngcf` (by default), proposed in [Neural Graph Collaborative Filtering](https://www.comp.nus.edu.sg/~xiangnan/papers/sigir19-NGCF.pdf), SIGIR2019. Usage: `--alg_type ngcf`.
* `gcn`, proposed in [Semi-Supervised Classification with Graph Convolutional Networks](https://openreview.net/pdf?id=SJU4ayYgl), ICLR2018. Usage: `--alg_type gcn`.
* `gcmc`, propsed in [Graph Convolutional Matrix Completion](https://www.kdd.org/kdd2018/files/deep-learning-day/DLDay18_paper_32.pdf), KDD2018. Usage: `--alg_type gcmc`.
* `adj_type`
* It specifies the type of laplacian matrix where each entry defines the decay factor between two connected nodes.
* Here we provide four options:
* `ngcf` (by default), where each decay factor between two connected nodes is set as 1(out degree of the node), while each node is also assigned with 1 for self-connections. Usage: `--adj_type ngcf`.
* `plain`, where each decay factor between two connected nodes is set as 1. No self-connections are considered. Usage: `--adj_type plain`.
* `norm`, where each decay factor bewteen two connected nodes is set as 1/(out degree of the node + self-conncetion). Usage: `--adj_type norm`.
* `gcmc`, where each decay factor between two connected nodes is set as 1/(out degree of the node). No self-connections are considered. Usage: `--adj_type gcmc`.
* `node_dropout`
* It indicates the node dropout ratio, which randomly blocks a particular node and discard all its outgoing messages. Usage: `--node_dropout [0.1] --node_dropout_flag 1`
* Note that the arguement `node_dropout_flag` also needs to be set as 1, since the node dropout could lead to higher computational cost compared to message dropout.
* `mess_dropout`
* It indicates the message dropout ratio, which randomly drops out the outgoing messages. Usage `--mess_dropout [0.1,0.1,0.1]`.
## Dataset
We provide two processed datasets: Gowalla and Amazon-book.
* `train.txt`
* Train file.
* Each line is a user with her/his positive interactions with items: userID\t a list of itemID\n.
* `test.txt`
* Test file (positive instances).
* Each line is a user with her/his positive interactions with items: userID\t a list of itemID\n.
* Note that here we treat all unobserved interactions as the negative instances when reporting performance.
* `user_list.txt`
* User file.
* Each line is a triplet (org_id, remap_id) for one user, where org_id and remap_id represent the ID of the user in the original and our datasets, respectively.
* `item_list.txt`
* Item file.
* Each line is a triplet (org_id, remap_id) for one item, where org_id and remap_id represent the ID of the item in the original and our datasets, respectively.
Owner
- Login: ChaosCodes
- Kind: user
- Repositories: 23
- Profile: https://github.com/ChaosCodes