Recommender Systems and Learning-to-Rank Analytics

da-38 — Recommender Systems & Learning-to-Rank Analytics

Overview

A recommender system predicts, for each user, which items from a (often huge) catalog they are most likely to engage with, then orders a small slate to show. As a data-analysis discipline it sits at the intersection of three problems: (1) modeling preference from sparse interaction data, (2) ranking candidates under a relevance objective, and (3) evaluating both offline and online while fighting the bias the system itself creates.

Scope boundaries (read first):

Core Concepts

1. Problem framing: feedback, the feedback loop, and cold-start

2. Collaborative filtering (CF) — neighborhood methods

CF predicts preference purely from the user-item interaction matrix, no content.

3. Matrix factorization (MF)

Factor R ≈ P·Qᵀ into low-rank user (P) and item (Q) latent factors; prediction = pᵤ·qᵢ.

4. Content-based, hybrid, and factorization machines

5. Modern deep recommenders

6. Learning-to-rank (LTR)

Directly optimize the order of a candidate list given relevance labels/features.

7. Offline evaluation

Evaluate on held-out interactions (time-based split more honest than random).

8. Online evaluation & off-policy estimation

9. Production concerns

Tools & Frameworks

Tool Niche
implicit Fast WRMF (ALS) + BPR for implicit feedback; Python. Production baseline.
LightFM Hybrid FM blending CF + content/metadata; great for cold-start; WARP/BPR losses.
Surprise Classic explicit-rating CF (SVD, SVD++, KNN); teaching/prototyping.
TorchRec PyTorch lib for large-scale models — sharded embedding tables across GPUs, two-tower/DLRM.
NVIDIA Merlin (NVTabular, HugeCTR) End-to-end GPU recsys: feature prep → train retrieval+ranking → Triton serving.
RecBole Research framework, 100+ algorithms, unified benchmarking.
Vespa Serving engine fusing ANN retrieval + tensor ranking + business logic.
Feast Feature store for consistent train/serve features.
Amazon Personalize / Vertex AI Recommendations Managed/turnkey — live in weeks, less control.
XGBoost / LightGBM (rank:*), RankLib LambdaMART / LTR.

Methodology

  1. Frame the problem. Implicit/explicit? Top-N, CTR, or next-item? Decides loss (BPR/WRMF vs pointwise vs LambdaMART) and metric (Recall@k/NDCG vs MRR).
  2. Baseline first. Popularity + item-item CF + WRMF/BPR — many “deep” wins vanish against a tuned MF baseline.
  3. Split honestly. Time-based (leave-last-out per user); avoid leakage; beware sampled-negative metrics.
  4. Add structure as needed. Side features → FM/LightFM/DeepFM; sequence → SASRec; cold-start → content + semantic IDs.
  5. Build the funnel at scale: two-tower retrieval → DeepFM/LambdaMART ranker → diversity/fairness/exploration re-rank.
  6. Evaluate in layers: offline → off-policy (IPS/DR) → interleaving → A/B. Never ship on offline alone.
  7. Close the loop safely: log propensities, add exploration, monitor popularity bias and exposure fairness.

Anti-Patterns

References