This repository contains supplimentary experiment code for
Recommender Systems via Graph Neural Networks
We address:
- Fundamental proof of concept for the Message Passing paradigm
- MLN baselines for different RS data sets
- GNN experiments for different RS data sets using
- GCMC
- IGMC
Only relevant files and folders are listed:
-
00_zachary
To warm-up, we showcase several versions of the ZKC separation both in Pytorch Geometric (PyG) and Deep Graph Library (DGL).
The model is comprised of two GCN Layers:
The separation process per eproch looks as follows:
- Zachary_GCN_DGL.ipynb: Node classification show case using DGL
- Zachary_GCN_pyG.ipynb: Alternative node classification approach using PyG.
- Zachary_GCN_untrainded.ipynb: Vanilla implementation, even without training some separation is noticeable.
-
01_mln-baselines
As baseline we use a standard MLN in three sizes.
- amazon-electronic
- amazon-electronic-descriptive-analysis.ipynb: Descriptive analysis for Amazon Electronic Products data set
- amazon-electronic-mln.ipynb: MLN models for Amazon Electronic Products data set
- goodreads
- goodreads-descriptive-analysis.ipynb: Descriptive analysis for Goodreads data set
- goodreads-mln.ipynb: MLN for Goodreads data set
- movielens
- movielens-descriptive-analysis.ipynb: Descriptive analysis for ML-100k, ML-1M and ML-10M
- movielens-mln-ml-100k.ipynb: MLN models for ML-100k data set
- movielens-mln-ml-1m.ipynb: MLN models for ML-1M data set
- movielens-mln-ml-10m.ipynb: MLN models for ML-10M data set
- amazon-electronic
-
02_gcmc
As first GNN we evaluate Graph Convolutional Matrix Completion
Link to the paper: https://arxiv.org/pdf/1706.02263
- amazon-electronic
- train.py: GCMC training for Amazon Electronic Products data set
- train_sampling.py: GCMC training with sampling for Amazon Electronic Products data set
- model.py: GCMC model for Amazon Electronic Products data set
- amazon_gcmc_training_visualization.ipynb: Loss visualization for Amazon Electronic Products data set
- goodreads
- train.py: GCMC training for Goodreads data set
- train_sampling.py: GCMC training with sampling for Goodreads data set
- model.py: GCMC model for Goodreads data set
- goodreads_gcmc_training_visualization.ipynb: Loss visualization for Goodreads data set
- movielens
- train.py: GCMC training for Movielens data sets (all used variants)
- train_sampling.py: GCMC training with sampling for Movielens data sets (all used variants)
- model.py: GCMC model for Movielens data sets (all used variants)
- movielens_gcmc_training_visualization.ipynb: Loss visualization for Movielens data sets (all used variants)
- amazon-electronic
-
03_igmc
As second GNN we evaluate Inductive Graph-based Matrix Completion
Link to the paper: https://openreview.net/pdf?id=ByxxgCEYDS
It is suggested to use a dedicated python instance.
We use conda. Required packages can be found in environment.yml
.
See conda docs for further instructions.
For our experiments we heavily rely on other people's work. We thank everyone who made her research and code publicly available. The original sources are marked in the individual files.
Here is the list of GNN frameworks (which we suggest as a starting point for others interested in crafting GNNs):