contrastvae-eval
ContrastVAE: Contrastive Variational AutoEncoder for Sequential Recommendation — Wang et al. (2022) (arXiv:2209.00456, 2022)
What this evaluates
Evaluates sequential recommendation models on Amazon review datasets, measuring ranking quality for next-item prediction. It specifically probes performance on long-tail items, sequence sparsity, and robustness to noisy inputs.
Datasets
- Amazon Beauty — total 198502; splits: train (-1), val (-1), test (-1)
- Amazon Toys — total 167597; splits: train (-1), val (-1), test (-1)
- Amazon Tools — total 134476; splits: train (-1), val (-1), test (-1)
- Amazon Office — total 53258; splits: train (-1), val (-1), test (-1)
Metrics
Recall@20 (primary) — range: [0, 1]
- Fraction of relevant items found in the top-20 recommended items. Calculated as |predicted_top20 ∩ relevant| / |relevant|.
Recall@40 — range: [0, 1]
- Fraction of relevant items found in the top-40 recommended items. Calculated as |predicted_top40 ∩ relevant| / |relevant|.
NDCG@20 — range: [0, 1]
- Normalized Discounted Cumulative Gain at rank 20. Measures ranking quality by discounting gains logarithmically based on position.
NDCG@40 — range: [0, 1]
- Normalized Discounted Cumulative Gain at rank 40. Measures ranking quality by discounting gains logarithmically based on position.
Input / output format
Input: A chronological sequence of user-item interactions (implicit feedback) sorted by timestamp.
Output: A ranked list of top-N candidate items for recommendation.
Scoring recipe
def recall_at_n(pred_list, relevant_set, n):
top_n = set(pred_list[:n])
return len(top_n & relevant_set) / len(relevant_set)
def ndcg_at_n(pred_list, relevant_set, n):
dcg = sum(1.0 / math.log2(i + 2) for i, item in enumerate(pred_list[:n]) if item in relevant_set)
idcg = sum(1.0 / math.log2(i + 2) for i in range(min(len(relevant_set), n)))
return dcg / idcg if idcg > 0 else 0.0
Common pitfalls
- Failing to filter users and items with fewer than 5 interactions before splitting the data.
- Using random splits instead of chronological order (last item for test, penultimate for validation, rest for training).
- Treating rating scores as explicit feedback instead of implicit binary interactions.
Evidence (verbatim from paper)
We compute each user's relevance scores for all items and choose items with top-N scores for the recommendation. Then we adopt two widely used top-N metrics, Recall and NDCG, as our top-N ranking evaluation metrics. We report the experimental results when N = 20 and N = 40.
Citation
@misc{wang2022contrastvae,
title={ContrastVAE: Contrastive Variational AutoEncoder for Sequential Recommendation},
author={Wang et al. (2022)},
year={2022},
note={arXiv:2209.00456}
}
1---2name: contrastvae-eval3description: Evaluates sequential recommendation models on Amazon review datasets, measuring ranking quality for next-item prediction. It specifically probes performance on long-tail items, sequence sparsity, and robustness to noisy inputs. Use when the user wants to benchmark on Amazon Beauty, Amazon Toys, Amazon Tools, Amazon Office, or asks about evaluating this task. Reports Recall@20.4---56# contrastvae-eval78> ContrastVAE: Contrastive Variational AutoEncoder for Sequential Recommendation — Wang et al. (2022) (arXiv:2209.00456, 2022)910## What this evaluates1112Evaluates sequential recommendation models on Amazon review datasets, measuring ranking quality for next-item prediction. It specifically probes performance on long-tail items, sequence sparsity, and robustness to noisy inputs.1314## Datasets1516- **Amazon Beauty** — total 198502; splits: train (-1), val (-1), test (-1)17- **Amazon Toys** — total 167597; splits: train (-1), val (-1), test (-1)18- **Amazon Tools** — total 134476; splits: train (-1), val (-1), test (-1)19- **Amazon Office** — total 53258; splits: train (-1), val (-1), test (-1)2021## Metrics2223- `Recall@20` **(primary)** — range: [0, 1]24 - Fraction of relevant items found in the top-20 recommended items. Calculated as |predicted_top20 ∩ relevant| / |relevant|.25- `Recall@40` — range: [0, 1]26 - Fraction of relevant items found in the top-40 recommended items. Calculated as |predicted_top40 ∩ relevant| / |relevant|.27- `NDCG@20` — range: [0, 1]28 - Normalized Discounted Cumulative Gain at rank 20. Measures ranking quality by discounting gains logarithmically based on position.29- `NDCG@40` — range: [0, 1]30 - Normalized Discounted Cumulative Gain at rank 40. Measures ranking quality by discounting gains logarithmically based on position.3132## Input / output format3334**Input**: A chronological sequence of user-item interactions (implicit feedback) sorted by timestamp.3536**Output**: A ranked list of top-N candidate items for recommendation.3738## Scoring recipe3940```python41def recall_at_n(pred_list, relevant_set, n):42 top_n = set(pred_list[:n])43 return len(top_n & relevant_set) / len(relevant_set)4445def ndcg_at_n(pred_list, relevant_set, n):46 dcg = sum(1.0 / math.log2(i + 2) for i, item in enumerate(pred_list[:n]) if item in relevant_set)47 idcg = sum(1.0 / math.log2(i + 2) for i in range(min(len(relevant_set), n)))48 return dcg / idcg if idcg > 0 else 0.049```5051## Common pitfalls5253- Failing to filter users and items with fewer than 5 interactions before splitting the data.54- Using random splits instead of chronological order (last item for test, penultimate for validation, rest for training).55- Treating rating scores as explicit feedback instead of implicit binary interactions.5657## Evidence (verbatim from paper)5859> We compute each user's relevance scores for all items and choose items with top-N scores for the recommendation. Then we adopt two widely used top-N metrics, Recall and NDCG, as our top-N ranking evaluation metrics. We report the experimental results when N = 20 and N = 40.6061## Citation6263```bibtex64@misc{wang2022contrastvae,65 title={ContrastVAE: Contrastive Variational AutoEncoder for Sequential Recommendation},66 author={Wang et al. (2022)},67 year={2022},68 note={arXiv:2209.00456}69}70```7172- arXiv: 2209.00456