Causal Decomposition and User-Controlled Recommendations
Recommendation algorithms claim to surface the best content. This paper formally tests that claim — and proposes a remedy.
Author: Mohamad El Jouzou — MSc Artificial Intelligence, Imperial College London
Course: ELEC70122 — Machine Learning for Safety-Critical Decision Making
Paper: paper/main.pdf (ICML-format, 9 pages + appendix)
Across 1,000 simulated creators × 10,000 users × 100 timesteps:
| Finding | Number |
|---|---|
| Engagement variance uniquely attributable to content quality | 7–18% |
| Variance absorbed into the inseparable algorithm-quality shared component | 63–73% |
| Confounding bias growth over the feedback loop ( |
0.37 → 1.84 (≈5×) |
| Best platform intervention (visibility floor) | +7.8% meritocracy |
| Worst "fairness" intervention (Gini constraint) | −12.2% meritocracy |
| User-tunable algorithm weights vs. platform default | +26.6% rank correlation |
| Adoption needed to capture 68% of those gains | just 5% of users |
The headline: the majority of what looks like merit is manufactured by the feedback loop, not earned. And — counterintuitively — the cleanest fix isn't a fairness constraint imposed by the platform. It's giving each user a slider.
A recommendation algorithm allocates visibility. Visibility produces engagement. Engagement updates the algorithm's "history" feature. History allocates more visibility. The loop conflates two distinct causal pathways:
- Quality pathway — users genuinely prefer better content
- Visibility pathway — the algorithm amplifies what it previously promoted
Standard ML tools cannot tell these apart from observational engagement data, because they are confounded by the algorithm itself. This is a textbook safety-critical ML failure mode (objective misspecification + distribution shift + confounding, à la Lectures 1, 7, 9 of Imperial's ELEC70122).
Because we control the simulation, we know each creator's true quality — something no observational dataset can give us. This lets us measure the gap between "what the algorithm rewards" and "what the algorithm should reward" directly.
- 1,000 creators with drawn quality + power-law initial followings
- 10,000 users with category preferences and (in later experiments) heterogeneous multi-objective utilities
- A simplified Instagram-Reels-style ranker with tunable weights on history, early engagement, and quality signal:
score = α·history + β·early_engagement + γ·quality + noise - 100-timestep feedback loop with 20 random seeds per configuration, 95% CIs throughout
Three complementary methods from Pearl-style causal inference:
| Method | Tool | What it answers |
|---|---|---|
| Covariate adjustment (partial R²) | OLS at each timestep | How much variance is uniquely explained by quality vs. visibility vs. history? |
| Inverse Propensity Weighting (IPW) | DoWhy / EconML | What is the average treatment effect of visibility on engagement, stripped of confounding? |
| Ground-truth comparison | Direct from sim | Spearman ρ between true quality and engagement — the meritocracy ratio |
| Intervention | Δ Meritocracy | Δ Engagement |
|---|---|---|
| Visibility floor (min 50 impressions) | +7.8% | −3.7% |
| Exploration bonus (ε=0.15) | +4.8% | −1.7% |
| History dampening | −10.6% | +2.9% |
| Gini constraint | −12.2% | +5.5% |
A Gini constraint sounds fair and makes things worse. Why? Because compressing the visibility distribution doesn't restore the quality signal — it just redistributes the manufactured engagement.
The novel contribution: instead of the platform choosing the algorithm's weights (α, β, γ), let each user pick their own.
- Heterogeneous user weights Pareto-dominate the platform default, improving Spearman ρ by +26.6% with negligible engagement loss
- Even 5% adoption captures 68% of the achievable meritocracy gain — non-adopters benefit through positive externalities
- Naïve adaptation produces a homogenisation paradox (all users converge to identical weights within 14–57 timesteps), but realistic multi-objective users (engagement + novelty + niche preference, with exposure-based boredom) maintain diverse preferences naturally at equilibrium
User agency turns out to be self-sustaining, but only when users actually have different goals — which, empirically, they do.
.
├── paper/main.pdf # The paper itself — start here
├── paper/main.tex # LaTeX source (ICML 2026 style)
├── src/
│ ├── engine/ # Simulation core (state, feedback loop, user adaptation)
│ ├── models/ # Creator / Content / User entity models
│ ├── algorithm/ # Ranker (weighted_score) + base interface
│ ├── analysis/ # IPW, regression, ground-truth metrics, quality definitions
│ ├── experiments/ # E1 (static), E2 (archetypes), E3 (adoption), E4 (adaptive), interventions, sweeps
│ └── visualization/ # Paper figure generators
├── tests/ # pytest unit tests
├── notebooks/ # Exploratory analysis
├── run_all.py # Reproduce every experiment end-to-end
├── run_e2.py / run_e4.py # Run specific experiments
└── pyproject.toml # Deps: numpy, pandas, scikit-learn, dowhy, econml, matplotlib
git clone https://github.com/Jouzou-M/critical-decision-paper.git
cd critical-decision-paper
pip install -e .
# Reproduce every experiment (E1–E4 + interventions + sweeps)
python run_all.py
# Or run them individually
python run_replication.py # Mansoury et al. CIKM 2020 baseline
python run_causal_analysis.py # Covariate adjustment + IPW
python run_experiments.py # Platform interventions
python run_e2.py # User archetype heterogeneity
python run_e4.py # Realistic adaptive usersAll experiments use 20 seeds (42–61) with 95% CIs reported throughout.
| Lecture | Used in this project |
|---|---|
| L1 — Objective misspecification | Algorithm optimises engagement (proxy), not quality (true objective) |
| L3 — Distribution shift | Feedback loop creates self-reinforcing covariate shift; calibration of "quality estimates" degrades over time |
| L6 — Off-Policy Evaluation | "What would engagement look like under a different ranker?" is an OPE question |
| L7 — Causal Inference | Core method. Confounding, ATE/CATE, IPW, covariate adjustment |
| L9 — Robustness | Algorithm uses history as a shortcut for quality — classic shortcut learning |
@misc{eljouzou2026meritocracy,
title = {From Algorithmic Meritocracy to User Agency: Causal Decomposition and User-Controlled Recommendations},
author = {El Jouzou, Mohamad},
year = {2026},
note = {MSc coursework, ELEC70122 Machine Learning for Safety-Critical Decision Making, Imperial College London},
url = {https://github.com/Jouzou-M/critical-decision-paper}
}- Chaney, Stewart & Engelhardt (RecSys 2018) — How Algorithmic Confounding in Recommendation Systems Increases Homogeneity and Decreases Utility
- Mansoury et al. (CIKM 2020) — Feedback Loop and Bias Amplification in Recommender Systems
- Strauss, Yang & Mazzucato (UCL IIPP 2025) — Rich-Get-Richer? Platform Attention and Earnings Inequality
- Salganik, Dodds & Watts (Science 2006) — MusicLab
- Horvitz & Thompson (1952), Rosenbaum & Rubin (1983) — IPW foundations
Full bibliography in paper/references.bib.


