Skip to content

Latest commit

 

History

History
193 lines (121 loc) · 4.63 KB

File metadata and controls

193 lines (121 loc) · 4.63 KB

09 — Implementation Roadmap

Phase 0 — Setup

Objectif

Avoir un environnement propre et testable.

Tâches

  • Créer l'environnement virtuel.
  • Installer les dépendances core.
  • Vérifier que pytest passe.
  • Vérifier que src/uplift_study est importable.

Done when

  • make test passe.
  • python -c "import uplift_study" fonctionne.

Statut : fait en smoke.

Phase 1 — Data audit

Objectif

Charger le dataset et verrouiller la réalité des colonnes.

Tâches

  • Implémenter load_criteo().
  • Supporter les modes smoke, dev, full.
  • Calculer les taux : treatment, exposure, visit, conversion.
  • Sauvegarder reports/tables/data_audit.csv.
  • Compléter la section finale de docs/02_dataset_card.md.

Done when

  • Le data audit produit une table stable.
  • La variante du dataset est documentée.

Statut : fait en smoke.

Phase 2 — EDA minimale

Objectif

Comprendre le problème sans produire 50 graphiques inutiles.

Tâches

  • Distribution des features.
  • Taux d'outcome traité vs contrôle.
  • Déséquilibre des groupes.
  • Outcome visit vs conversion.

Figures attendues

  • reports/figures/outcome_rates_by_treatment.png
  • reports/figures/feature_distributions_sample.png

Statut : fait en smoke. Figure supplémentaire : reports/figures/feature_balance_by_treatment.png.

Phase 3 — Baselines

Objectif

Établir une référence claire.

Tâches

  • Random policy.
  • ATE global.
  • Propensity Logistic Regression.
  • Propensity Gradient Boosting.

Done when

  • Les scores de propension sont sauvegardés.
  • AUC classique est disponible mais non centrale.
  • Les métriques uplift pour la politique propension sont calculées.

Statut : fait en smoke.

Phase 4 — Uplift simple

Objectif

Construire le cœur de la comparaison.

Tâches

  • T-Learner Logistic Regression.
  • T-Learner Gradient Boosting.
  • Analyse par décile.
  • Qini curve.

Done when

  • Une première figure montre random vs propensity vs uplift.

Statut : fait en smoke. Les diagnostics incluent Qini, uplift@k, déciles, bootstrap et overlap top-k.

Phase 5 — Causal ML avancé

Objectif

Montrer un niveau technique avancé.

Tâches

  • Tester X-Learner ou DRLearner.
  • Tester CausalForestDML si possible.
  • Comparer coût computationnel et performance.
  • Ajouter bootstrap.

Done when

  • Au moins un modèle causal avancé est comparé à T-Learner.
  • Les limites sont documentées.

Statut : optionnel, à faire si l'objectif est de renforcer la partie causal ML avancée.

Phase 6 — Outcome conversion

Objectif

Passer au label plus rare et plus business.

Tâches

  • Rejouer pipeline sur conversion.
  • Comparer stabilité vs visit.
  • Adapter les commentaires.

Done when

  • La conclusion distingue outcome comportemental (visit) et outcome business (conversion).

Statut : fait en dev. Le pipeline conversion est disponible dans reports/minimal_pipeline_dev_conversion.md et intégré au rapport final.

Phase 7 — Rapport final

Objectif

Produire une étude publiable.

Tâches

  • Écrire reports/final_report.md.
  • Exporter toutes les figures.
  • Créer une table synthétique.
  • Ajouter limites, bibliographie et recommandations.

Done when

Le lecteur comprend en moins de 5 minutes pourquoi propensity ≠ uplift.

Statut : fait en dev. Le rapport principal est reports/final_report.md. La table consolidée est reports/tables/experiment_results.csv.

Timeline indicative de travail

Bloc Durée réaliste Sortie
Setup + data audit 0.5 jour dataset verrouillé
EDA + baselines 1 jour premières figures
T-Learner + métriques 1 jour comparaison principale
causal ML avancé 1–2 jours différenciation technique
rapport final 1 jour prêt pour lecture externe

Priorité absolue

Ne pas commencer par DRLearner ou CausalForest. Commencer par la comparaison pédagogique : random → propensity → uplift simple. Les modèles avancés viennent renforcer l'histoire, pas la remplacer.

Commandes actuelles

make test
python scripts/00_data_audit.py --mode smoke --outcome visit --treatment treatment --random-state 42
python scripts/02_run_eda.py --mode smoke --outcome visit --treatment treatment --random-state 42
python scripts/01_run_minimal_pipeline.py --mode smoke --outcome visit --treatment treatment --random-state 42 --bootstrap-iterations 50 --selection-metric qini_auc --selection-k 0.20
python scripts/03_build_smoke_report.py --selection-k 0.20

Commandes de consolidation actuelles :

make test
make final-report
make experiment-results