Implementation of Bayesian Personalized Ranking (BPR) for Multiple Feedback Channels
This repository contains Python implementations and combination of interesting scientific papers on recommender systems.
I will support my implementations with explanations on the theory using summaries and JuPyter Notebooks. Each section references a new paper which results I try to reproduce or apply to other datasets.
This paper builds upon the famous paper by Rendle on Bayesian Personalized Ranking for triplets (u,i,j)
with a user prefering an item i over j. This pairwise learning-to-rank approach was extended to better capture the individual preferences regarding different feedback channels and preferences degreees associated with those channels.
cd multi_channel_bpr
pandas
, numpy
and scikit-learn
installed in your environmentpython setup.py install
multi_channel_bpr
followed by the respective parameters:-d
(int): no. of latent features for user and item representations-beta
[(float)]: share of unobserved feedback within the overall negative feedback-lr
(float): learning rate for stochastic gradient descent-reg
[(float)]: regularization parameters for user, positive and negative item-k
(int): no. of most relevant items rating-rd_seed
(int): random number generator seed-folds
(int): no. of folds for crossfold evaluation-epochs
(int): no. of training epochs-sampling
[(str)]: list of negative item sampling modes, uniform
and/or non-uniform
-data
(str): path to read input data from-results
(str): path to write results intomulti_channel_bpr -v -d 50 -beta 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 -k 10 -epochs 100 -v -sampling 'uniform' 'non-uniform' -seed 42
and report resultsThis project has been set up using PyScaffold 3.0.3. For details and usage
information on PyScaffold see http://pyscaffold.org/.