All Projects → asmitapoddar → nowplaying-RS-Music-Reco-FM

asmitapoddar / nowplaying-RS-Music-Reco-FM

Licence: other
#nowplaying-RS: Music Recommendation using Factorization Machines

Programming Languages

r
7636 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to nowplaying-RS-Music-Reco-FM

Fma
FMA: A Dataset For Music Analysis
Stars: ✭ 1,391 (+5947.83%)
Mutual labels:  reproducible-research, music-information-retrieval
glDelegateBenchmark
quick and dirty benchmark for TFLite gles delegate on iOS
Stars: ✭ 13 (-43.48%)
Mutual labels:  benchmark
python-pytest-harvest
Store data created during your `pytest` tests execution, and retrieve it at the end of the session, e.g. for applicative benchmarking purposes.
Stars: ✭ 44 (+91.3%)
Mutual labels:  benchmark
gpumembench
A GPU benchmark suite for assessing on-chip GPU memory bandwidth
Stars: ✭ 62 (+169.57%)
Mutual labels:  benchmark
HArray
Fastest Trie structure (Linux & Windows)
Stars: ✭ 89 (+286.96%)
Mutual labels:  benchmark
LuaJIT-Benchmarks
LuaJIT Benchmark tests
Stars: ✭ 20 (-13.04%)
Mutual labels:  benchmark
ufw
A minimalist framework for rapid server side applications prototyping in C++ with dependency injection support.
Stars: ✭ 19 (-17.39%)
Mutual labels:  benchmark
open-solution-googleai-object-detection
Open solution to the Google AI Object Detection Challenge 🍁
Stars: ✭ 46 (+100%)
Mutual labels:  reproducible-research
gl-bench
⏱ WebGL performance monitor with CPU/GPU load.
Stars: ✭ 146 (+534.78%)
Mutual labels:  benchmark
TensorTrade
This repository hosts all my code related to TensorTrade. It consists of the main program, its old versions, and some extras for more insights.
Stars: ✭ 16 (-30.43%)
Mutual labels:  benchmark
sunbeam
A robust, extensible metagenomics pipeline
Stars: ✭ 143 (+521.74%)
Mutual labels:  reproducible-research
benchmarkjs-pretty
Tiny wrapper around benchmarkjs with a nicer api
Stars: ✭ 20 (-13.04%)
Mutual labels:  benchmark
arranger
An AI for Automatic Instrumentation
Stars: ✭ 37 (+60.87%)
Mutual labels:  music-information-retrieval
SQL-ProcBench
SQL-ProcBench is an open benchmark for procedural workloads in RDBMSs.
Stars: ✭ 26 (+13.04%)
Mutual labels:  benchmark
vamp-aubio-plugins
aubio plugins for Vamp
Stars: ✭ 38 (+65.22%)
Mutual labels:  music-information-retrieval
audio to midi
A CNN which converts piano audio to a simplified MIDI format
Stars: ✭ 29 (+26.09%)
Mutual labels:  music-information-retrieval
hashcat-benchmark-comparison
Hashcat Benchmark Comparison
Stars: ✭ 22 (-4.35%)
Mutual labels:  benchmark
ITKSphinxExamples
Cookbook examples for the Insight Toolkit documented with Sphinx
Stars: ✭ 48 (+108.7%)
Mutual labels:  reproducible-research
beapi-bench
Tool for benchmarking apis. Uses ApacheBench(ab) to generate data and gnuplot for graphing. Adding new features almost daily
Stars: ✭ 16 (-30.43%)
Mutual labels:  benchmark
GeneTonic
Enjoy your transcriptomic data and analysis responsibly - like sipping a cocktail
Stars: ✭ 66 (+186.96%)
Mutual labels:  reproducible-research

#nowplaying-RS: A Benchmark Dataset for Context Aware Music Recommendation

Music recommender systems can offer users personalized and contextualized recommendation and are therefore important for music information retrieval. An increasing number of datasets have been compiled to facilitate research on different topics, such as content-based, context-based or next-song recommendation. However, these topics are usually addressed separately using different datasets, due to the lack of a unified dataset that contains a large variety of feature types such as item features, user contexts, and timestamps. To address this issue, we propose a large-scale benchmark dataset called #nowplaying-RS, which contains 11.6 million music listening events (LEs) of 139K users and 346K tracks collected from Twitter. The dataset comes with a rich set of item content features and user context features, and the timestamps of the LEs. Moreover, some of the user context features imply the cultural origin of the users, and some others—like hashtags—give clues to the emotional state of a user underlying an LE. In this paper, we provide some statistics to give insight into the dataset, and some directions in which the dataset can be used for making music recommendation. We also provide standardized training and test sets for experimentation, and some baseline results obtained by using factorization machines[1].

Here, you can find the codes for implementation of the experiments conducted on the #nowplaying-RS dataset.

More details about the dataset and experiments can be found in our paper:

@inproceedings{smc18,
title = {#nowplaying-RS: A New Benchmark Dataset for Building Context-Aware Music Recommender Systems},
author = {Asmita Poddar and Eva Zangerle and Yi-Hsuan Yang},
url = {http://mac.citi.sinica.edu.tw/~yang/pub/poddar18smc.pdf},
year = {2018},
date = {2018-07-04},
booktitle = {Proceedings of the 15th Sound & Music Computing Conference},
address = {Limassol, Cyprus},
note = {code at https://github.com/asmitapoddar/nowplaying-RS-Music-Reco-FM},
tppubtype = {inproceedings}
}

Data

The #nowplaying-RS dataset can be downloaded from https://zenodo.org/record/3248543.
Since the #nowplaying-RS is an implicit dataset, the train-test splits provided contain Listening Events (LEs) with positive ratings. However, for model training and evaluation of Factorization Machines, negative examples are needed. Here, we provide the scripts that have been used to creating the final training and test sets that can be input to the FM.

Environment

Python 3.5
R 3.4.3

Dependencies

Python

  • numpy  
  • sklearn
  • pyfm
  • pandas
  • math
  • time

R

  • plyr
  • dplyr
  • data.table
  • Stack

Creating Final Training and Test Sets

  1. Context_POP_RND: This folder contains the scripts train_POP_RND.r and test_POP_RND.r to create the traning and test set splits respectively for context-aware recommendation in the POP_RND setting.
  2. Context_POP_USER: This folder contains the scripts train_POP_USER.r and test_POP_USER.r to create the traning and test set splits respectively for context-aware recommendation in the POP_USER setting.
  3. Sequence: This folder contains the scripts train_seq.r and test_seq.r to create the traning and test set splits respectively for context-aware next-song recommendation.

Code

The following scripts, stored in this repository, have been developed for implementing Factorization Machines for music recommendation using the dataset.

  1. main.py: The main file from which the other scripts are called.
  2. group.py: The test set is ordered according to the user_id. However, this is optional as the test set provided has already been ordered according to user_id.
  3. load.py: Shows how to load the dataset. You can enter the attributes with which you want to train the Factorization Machine here. (In this file, for example, the attributes user_id + track_id + tempo(context) have been used to train the FM for context-aware recommendation. You could also do next-song recommendation by using the attributes: user_id + track_id + previous_track_id + context to train the FM).
  4. runFM.py: Training of the Factorization Machine takes place and prediction.
  5. calcMRR.py: Calculation of Mean Reciprocal Rank (MRR).

Usage

1. Downloading the dataset.

You can download the datasets and uncompress the archives using the following commands:

wget http://dbis-nowplaying.uibk.ac.at/wp-content/uploads/nowplayingrs.zip
wget http://dbis-nowplaying.uibk.ac.at/wp-content/uploads/nowplayingrs_train_test.zip
unzip nowplayingrs.zip
unzip nowplayingrs_train_test.zip
2. Cloning the repository.
git clone https://github.com/asmitapoddar/nowplaying-RS-Music-Reco-FM.git
cd nowplaying-RS-Music-Reco-FM
3. Installing the dependencies as have been mentioned above.
4. Creating the final train-test splits which can be used as input to the FM.

For example, to make context-aware recommendation in the POP_RND setting, create the final training and test sets using the following commands:

Rscript train_POP_RND.r   
Rscript test_POP_RND.r   

The required training and test sets would be created, which can be input to the FM by specifying the file names in main.py

4. Running the code.
python3.5 main.py

Please make sure that the code files and the downloaded datasets are in the same folder, and the path to the datasets have been set correctly.

[1]Steffen Rendle. 2012. Factorization Machines with libFM. ACM Trans. Intell. Syst. Technol. 3, 3, Article 57 (May 2012), 22 pages. DOI=http://dx.doi.org/10.1145/2168752.2168771

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].