项目作者: mkurovski

项目描述 :
Implementation of Bayesian Personalized Ranking (BPR) for Multiple Feedback Channels
高级语言: Python
项目地址: git://github.com/mkurovski/multi_channel_bpr.git
创建时间: 2018-07-28T14:29:03Z
项目社区:https://github.com/mkurovski/multi_channel_bpr

开源协议:MIT License

下载


Recommender System Theory put into Practice

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.

Bayesian Personalized Ranking with Multi-channel User Feedback - Loni et al. (2016)

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.

Usage

  1. Clone the repository
  2. Obtain the MovieLens 1M Dataset from grouplens and unzip it
  3. Change to the cloned folder cd multi_channel_bpr
  4. Make sure you have pandas, numpy and scikit-learn installed in your environment
  5. Install the package with python setup.py install
  6. Call the package with the command 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 into

Results

  • run multi_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 results

Open Points

  • Create JuPyter notebook to reproduce a single graph of the paper and use the different modules
  • Add results of own experiments

Backlog

Note

This project has been set up using PyScaffold 3.0.3. For details and usage
information on PyScaffold see http://pyscaffold.org/.