• Stars
    star
    172
  • Rank 221,201 (Top 5 %)
  • Language
    Python
  • License
    Other
  • Created about 7 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Code for the NeurIPS'17 paper "DropoutNet: Addressing Cold Start in Recommender Systems"

NeurIPS'17 DropoutNet: Addressing Cold Start in Recommender Systems

Authors: Maksims Volkovs, Guangwei Yu, Tomi Poutanen
[paper]

UPDATE: We added TensorFlow2 and PyTorch implimentations!

Introduction

This repository contains full implementation of the DropoutNet model and includes both training and evaluation routines. We also provide the ACM RecSys 2017 Challenge dataset that we further split into three subsets for warm start, user cold start and item cold start evaluation. The aim is to train a single model that can be applied to all three tasks and we report validation accuracy on each task during training.

Furthermore per request, we also provide scripts and all necessary data to run the Citeulike cold-start experiment. See section on Citeulike below for further details as well as links to the packaged data.

Dataset

To run the model, download the dataset from here. With this dataset we have also included pre-trained Weighted Factorization model (WMF)[Hu et al., 2008], that is used as preference input to the DropoutNet. WMF produces competitive performance on warm start but doesn't generalize to cold start. So this code demonstrates how to apply DropoutNet to provide cold start capability to WMF. The format of the data is as follows:

recsys2017.pub				
└─ eval					// use path to this folder in --data-dir
   ├─ trained				// WMF model
   │  └─ warm				
   │     ├─ U.csv.bin			// numpy binarized WMF user preference latent vectors (U)
   │     └─ V.csv.bin			// numpy binarized WMF item preference latent vectors (V)
   ├─ warm				
   │  ├─ test_cold_item.csv		// validation interactions for item cold start 
   │  ├─ test_cold_item_item_ids.csv	// targets item ids for item cold start
   │  ├─ test_cold_user.csv    		// validation interactions for user cold start
   │  ├─ test_cold_user_item_ids.csv	// target user ids for user cold start
   │  ├─ test_warm.csv			// validation interactions for warm start
   │  ├─ test_warm_item_ids.csv		// target item ids for warm start
   │  └─ train.csv			// training interactions
   ├─ item_features_0based.txt		// item features in libsvm format
   └─ user_features_0based.txt		// user features in libsvm format
      
interactions are stored in csv as:
  <USER_ID>,<ITEM_ID>,<INTERACTION_TYPE>,<TIMESTAMP>
where INTERACTION_TYPE is one of:
  0: impression
  1: click
  2: bookmark
  3: reply
  5: recruiter interest

Running training code

  1. Download the dataset, extract and keep the directory structure.

  2. run main.py

    • for usage, run with main.py --help
    • default setting trains a two layer neural network with hyperparameters selected for the RecSys data
    • gpu is used for training by default and cpu for inference
  3. (Optionally) launch tensorboard to monitor progress by tensorboard --logdir=<log_path>

During training recall@50,100,...,500 accuracy is shown every 50K updates for warm start, user cold start and item cold start validation sets.

Notes:

  • Make sure --data-dir points to the eval/ folder, not the root
  • On our environment (described above) 50K updates takes approximately 14 minutes with the default GPU/CPU setting.
  • By default, training happens on GPU while inference and batch generation is on CPU.

Validation Curves

Citeulike

In addition to Recsys, we also provide pipeline to run the publicly available Citeulike data. Note that, as mentioned in the paper, we evaluate cold start the same way as the CTR paper while the warm start evaluation is modified. For convenience, we have proivded our evaluation split for both cold and warm start, item features, as well as the WMF user item preference latent vectors available here.

The citeulike warm and cold models are trained separately as their validation sets differ. Please use the scripts main_cold_citeu.py and main_warm_citeu.py to run the experiments on the Citeulike dataset.

Point --data-dir to your extracted eval folder after extracting citeu.tar.gz. Sample training runs with respective validation performance are shown below per 1000 updates.

More Repositories

1

dgm-eval

Codebase for evaluation of deep generative models as presented in Exposing flaws of generative model evaluation metrics and their unfair treatment of diffusion models
Jupyter Notebook
117
star
2

xpool

https://layer6ai-labs.github.io/xpool/
Python
112
star
3

T-Fixup

Code for the ICML'20 paper "Improving Transformer Optimization Through Better Initialization"
Python
89
star
4

RecSys2018

1'st Place Approach by Layer6 AI to the 2018 ACM RecSys Challenge
Java
84
star
5

GSS

Code for the NeurIPS'19 paper "Guided Similarity Separation for Image Retrieval"
Python
64
star
6

ProxyFL

Code accompanying the paper "Decentralized Federated Learning through Proxy Model Sharing"
Python
63
star
7

HGCF

Code for the WWW'21 paper "HGCF: Hyperbolic Graph Convolution Networks for Collaborative Filtering"
Python
49
star
8

fusemix

Data-Efficient Multimodal Fusion on a Single GPU
Python
47
star
9

SGG-Seq2Seq

Code for the ICCV'21 paper "Context-aware Scene Graph Generation with Seq2Seq Transformers"
Python
44
star
10

EGT

Code for the CVPR'19 paper "Explore-Exploit Graph Traversal for Image Retrieval"
Java
31
star
11

ASL

Code for CVPR'21 paper "Weakly Supervised Action Selection Learning in Video"
Python
22
star
12

WinIT

Code for the ICLR'23 paper "Temporal Dependencies in Feature Importance for Time Series Prediction"
Jupyter Notebook
19
star
13

DuETT

Code for "DuETT: Dual Event Time Transformer for Electronic Health Records"
Python
19
star
14

TAFA

Code for the RecSys'20 paper "TAFA: Two-headed Attention Fused Autoencoder for Context-Aware Recommendations"
Python
19
star
15

CMLMC

Code for the ICLR'22 paper "Improving Non-Autoregressive Translation Models Without Distillation"
Python
17
star
16

tr0n

Python
14
star
17

MCL

Code for the WWW'22 paper "MCL: Mixed-Centric Loss for Collaborative Filtering"
Python
11
star
18

fair-dp

Code accompanying the paper "Disparate Impact in Differential Privacy from Gradient Misalignment".
Python
10
star
19

lfr

Code for the ICLR'24 paper "Self-supervised Representation Learning From Random Data Projectors
Python
9
star
20

two_step_zoo

Codebase accompanying the paper "Diagnosing and Fixing Manifold Overfitting in Deep Generative Models"
Jupyter Notebook
8
star
21

CNNEmbed

Python
7
star
22

rectangular-flows

Code for the NeurIPS'21 paper "Rectangular Flows for Manifold Learning"
Python
7
star
23

UoMH

Python
7
star
24

CEF

Code for the NeurIPS'21 paper "Tractable Density Estimation on Learned Manifolds with Conformal Embedding Flows"
Python
6
star
25

semi-supervised-egt

Code for CVPR'19 paper Semi-Supervised Exploration for Image Retrieval
Python
6
star
26

BNPO

Python
5
star
27

hitl-conformal-prediction

Human in the Loop Conformal Prediction
Python
5
star
28

ssl-robustness

Codebase for benchmarking robustness of Self-Supervised Learning across diverse downstream tasks
Python
4
star
29

implicit-manifolds

Jupyter Notebook
4
star
30

msc-sql

Text-2-SQL
3
star
31

CAE

Code for the ICLR'21 paper "C-Learning: Horizon-Aware Cumulative Accessibility Estimation"
Python
3
star
32

hgnn-dr

Python
2
star
33

denoising_dgms

Python
2
star
34

dgm_ood_detection

Code for the paper "A Geometric Explanation of the Likelihood OOD Detection Paradox"
Jupyter Notebook
2
star
35

Tabular-Class-Conditioned-SSL

Jupyter Notebook
2
star
36

dgm_geometry

Jupyter Notebook
1
star
37

dp-cert

A framework for providing certified robustness guarantees with differentially private models
Jupyter Notebook
1
star
38

calo-forest

A scalable implementation of diffusion and flow-matching with XGBoost models, applied to calorimeter data.
Python
1
star
39

DropoutNet-Data

data for DropoutNet
1
star
40

dgm_manifold_survey

1
star