This is the official repository for the paper "Balancing Accuracy and Novelty with Sub-Item Popularity", published at the 19th ACM Conference on Recommender Systems (RecSys '25).
In the realm of music recommendation, sequential recommenders have shown promise in capturing the dynamic nature of music consumption. A key characteristic of this domain is repetitive listening, where users frequently replay familiar tracks. To capture these repetition patterns, recent research has introduced Personalised Popularity Scores (PPS), which quantify user-specific preferences based on historical frequency. While PPS enhances relevance in recommendation, it often reinforces already-known content, limiting the system’s ability to surface novel or serendipitous items—key elements for fostering long-term user engagement and satisfaction. To address this limitation, we build upon RecJPQ, a Transformer-based framework initially developed to improve scalability in large-item catalogues through sub-item decomposition. We repurpose RecJPQ’s sub-item architecture to model personalised popularity at a finer granularity. This allows us to capture shared repetition patterns across sub-embeddings—latent structures not accessible through item-level popularity alone. We propose a novel integration of sub-ID-level personalised popularity within the RecJPQ framework, enabling explicit control over the trade-off between accuracy and personalised novelty. Our sub-ID-level PPS method (sPPS) consistently outperforms item-level PPS by achieving significantly higher personalised novelty without compromising recommendation accuracy.
Our code is based on the aprec framework from this reproducibility work, so you can use the original documentation to learn how to use the framework.
This guide provides a step-by-step walkthrough to reproduce our results. The instructions have been tested on an Ubuntu 22.04 LTS machine equipped with an NVIDIA RTX 3090 GPU.
Set up the Python environment using venv with the following steps:
python3 -m venv <your working directory>/.venv
echo 'export PYTHONPATH=<your working directory>:$PYTHONPATH' >> .venv/bin/activate
source .venv/bin/activate
pip install -r requirements.txt 1.Open the evaluation directory
cd <your working directory>
cd evaluation 2.Reproducing the Experiments from the Paper
To reproduce the experiments presented in the paper, execute the run_n_experiments.sh script using the appropriate configuration file.
The configuration files corresponding to the experiments can be found in the configs/ directory.
To launch the experiments, run the following command:
Yandex music event:
sh run_n_experiments.sh yandex_common_benchmark.pyLast.fm-1K:
sh run_n_experiments.sh lastfm_common_benchmark.py