Skip to content
Back to skills

Coat Ranking Eval

ASecurity

Evaluates the ability of debiasing frameworks to transform biased (MNAR) recommendation data into unbiased (MAR) representations, measuring how well debiased rankings align with ground-truth user preferences. It probes whether reweighting or perturbation mechanisms successfully mitigate selection and staleness biases without degrading predictive performance. Use when the user wants to benchmark on Coat, or asks about evaluating this task. Reports AUC.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 11, 2026
researchpythongoperformance

Works with

  • cli

Security analysis

A100/100

Scanned September 11, 2026

npx -y skills add qhjqhj00/research-skills-pool --skill coat-ranking-eval --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Coat Ranking Eval?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Coat Ranking Eval
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/qhjqhj00-coat-ranking-eval/badge)](https://www.skillsdirectory.com/skills/qhjqhj00-coat-ranking-eval)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: coat-ranking-eval
description: Evaluates the ability of debiasing frameworks to transform biased (MNAR) recommendation data into unbiased (MAR) representations, measuring how well debiased rankings align with ground-truth user preferences. It probes whether reweighting or perturbation mechanisms successfully mitigate selection and staleness biases without degrading predictive performance. Use when the user wants to benchmark on Coat, or asks about evaluating this task. Reports AUC.
metadata:
  skill_kind: dataset_eval
  source_arxiv: 2504.03997
  bibtex_key: [REDACTED]
  confidence: high
---

# coat-ranking-eval

> Towards Robust Offline Evaluation: A Causal and Information Theoretic Framework for Debiasing Ranking Systems — Khatami et al. (2025) (arXiv:2504.03997, 2025)

## What this evaluates

Evaluates the ability of debiasing frameworks to transform biased (MNAR) recommendation data into unbiased (MAR) representations, measuring how well debiased rankings align with ground-truth user preferences. It probes whether reweighting or perturbation mechanisms successfully mitigate selection and staleness biases without degrading predictive performance.

## Datasets

- **Coat** — total 11600; splits: train (6960), test (4640)

## Metrics

- `AUC` **(primary)** — range: [0, 1]
  - Area under the Receiver Operating Characteristic curve. Measures the probability that a randomly chosen positive instance (rating ≥4) is ranked higher than a randomly chosen negative instance (rating <4).
- `Precision` — range: [0, 1]
  - Fraction of predicted positive clicks that are actually positive: TP / (TP + FP).
- `Recall` — range: [0, 1]
  - Fraction of actual positive clicks that are correctly predicted: TP / (TP + FN).
- `F1` — range: [0, 1]
  - Harmonic mean of Precision and Recall: 2 * (Precision * Recall) / (Precision + Recall).
- `Wasserstein Distance` — range: other
  - Earth Mover's Distance between the predicted click distribution P(C|X^r) and the true distribution P(C|X^r, X^{nr}). Quantifies the distributional shift after debiasing.

## Input / output format

**Input**: User and item feature vectors (X^r), exposure/bias features (X^{nr}), and propensity scores. Explicit 1-5 ratings are binarized as positive (≥4) or negative (<4) for evaluation.

**Output**: Predicted click probability or ranking score for each user-item pair.

## Scoring recipe

```python
def compute_metrics(predictions, gold_labels):
    # predictions and gold_labels are binary (0/1) or probabilities
    tp = sum(p and g for p, g in zip(predictions, gold_labels))
    fp = sum(p and not g for p, g in zip(predictions, gold_labels))
    fn = sum(not p and g for p, g in zip(predictions, gold_labels))
    precision = tp / (tp + fp) if (tp + fp) > 0 else 0
    recall = tp / (tp + fn) if (tp + fn) > 0 else 0
    f1 = 2 * precision * recall / (precision + recall) if (precision + recall) > 0 else 0
    auc = roc_auc_score(gold_labels, predictions)
    return {'AUC': auc, 'Precision': precision, 'Recall': recall, 'F1': f1}
```

## Common pitfalls

- Confusing biased (MNAR) training/evaluation data with unbiased (MAR) golden data, leading to overoptimistic metric scores that do not reflect true user preference.
- Using sparse down-funnel signals like 'saves' for model training or direct evaluation instead of debiasing the more prevalent click data, which causes instability.
- Failing to binarize explicit 1-5 ratings into ≥4 vs <4 before computing Precision/Recall/F1, violating the paper's evaluation protocol.

## Evidence (verbatim from paper)

> Our method (E5) shows the lowest drift from E1 in AUC and F1-score, which balances recall and precision, compared to all baselines.

## Citation

```bibtex
@misc{khatami2025robust,
  title={Towards Robust Offline Evaluation: A Causal and Information Theoretic Framework for Debiasing Ranking Systems},
  author={Khatami et al. (2025)},
  year={2025},
  note={arXiv:2504.03997}
}
```

- arXiv: 2504.03997

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.