Key words: graph convolution, recommender system, recommendation, vertex representation, interaction sequence
This is our implementation for the paper:
Yanan Xu, Yanmin Zhu, Yanyan Shen, and Jiadi Yu (2019). Learning Shared Vertex Representation in Heterogeneous Graphs with Convolutional Networks for Recommendation. In Proceedings of IJCAI'19, Macao, China, August 10-16, 2019.
Two graph convolutional neural networks: PGCN-C and PGCN-A.
PGCN-C uses static transition probability as the weights of neighbors in convolution. PGCN-A utilizes attention mechanism to calculate weights of neighbors.
Please cite our IJCAI'19 paper if you use our codes. Thanks!
Author: Yanan Xu
The user-item graph, item-item graph, user-subseq graph denote user preference, item dependency, and user similarity on behaviors, respectively.
(1) Cluster neighbors of each vertex according to their distance and path type.
(2) Perform neighbor pooling operation on each cluster and generate a virtual vertex.
We provide two kinds of neighbor pooling operation: using transition probability (PGCN-C) or attention mechanism (PGCN-A).
(3) Apply convolution to virtual vertexes and generate representations for each user and item.
We use TensorFlow to implement our model.
- TensorFlow version: '1.4.0'
|
|-README.md
|-pgcna.py // PGCN-A model
|-pgcnaMain.py // Main file of PGCN-A
|-pgcnc.py // PGCN-C model
|-pgcncMain.py // Main file of PGCN-C
|-processData.py // Load data
|-settings.py // Default settings of models
|-evaluate.py // Model evaluation
|-data|-ml_100k_top100 // MovieLens 100k dataset
|-retail10_30_top100 // Retailrocket dataset
$ python pgcnaMain.py
or
$ python pgcncMain.py
We provide two processed datasets: MovieLens-100k and Retailrocket.
The processed data are stored with pickle.
Last Update Date: May 30, 2019