The aim of our project is to perform a comparative study between two classes of recommendation systems: Knowledge graph based Ripplenet framework and autoencoder based recommendation system.
RippleNet: RippleNet employs knowledge-graph as side information for propagation of user preferences along links of potential interest of the user. It works by the concept of preference propagation wherein a user's interests are branched out in a hierarchical manner, and the user's click rate for a given movie is predicted.
Autoencoder: An Autoencoder is a special class of neural networks where the input is the same as output. It has two major components, an encoder that encodes the input to a lower dimesional respresentation and a decoder that reconstructs the input.
Dataset:
We have resorted to MovieLens dataset that contains 1,000,209 movie ratings spanning across 3,900 different movies provided by 6,040 users. Additionally we also used the knowledge graph data provided by Microsft Satori.
The data folder comprises the following data files:
-item_index2entity_id.txt
: the mapping from item indices in the raw rating file to entity IDs in the Knowledge Graph
-ratings.dat
:File consisting of user, movieID, rating and timestamp
-movies.dat
: File with MovieID, movie name and genre information
-kg_final
: Conatins head, relation and tail entities of the knowledge graph
Steps to execute:
- Go to the root folder "Code".
- Run the command "pip install -r requirements.txt && python .\src\main.py && python .\src\autoencoder.py".
- The above command installs the dependencies required by both RippleNet and autoencoder
- Also the implementations of Ripplenet and autoencoder are run to display the results of movie recommendations