Avoir un environnement propre et testable.
- Créer l'environnement virtuel.
- Installer les dépendances core.
- Vérifier que
pytestpasse. - Vérifier que
src/uplift_studyest importable.
make testpasse.python -c "import uplift_study"fonctionne.
Statut : fait en smoke.
Charger le dataset et verrouiller la réalité des colonnes.
- 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.
- Le data audit produit une table stable.
- La variante du dataset est documentée.
Statut : fait en smoke.
Comprendre le problème sans produire 50 graphiques inutiles.
- Distribution des features.
- Taux d'outcome traité vs contrôle.
- Déséquilibre des groupes.
- Outcome
visitvsconversion.
reports/figures/outcome_rates_by_treatment.pngreports/figures/feature_distributions_sample.png
Statut : fait en smoke. Figure supplémentaire : reports/figures/feature_balance_by_treatment.png.
Établir une référence claire.
- Random policy.
- ATE global.
- Propensity Logistic Regression.
- Propensity Gradient Boosting.
- 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.
Construire le cœur de la comparaison.
- T-Learner Logistic Regression.
- T-Learner Gradient Boosting.
- Analyse par décile.
- Qini curve.
- 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.
Montrer un niveau technique avancé.
- Tester X-Learner ou DRLearner.
- Tester CausalForestDML si possible.
- Comparer coût computationnel et performance.
- Ajouter bootstrap.
- 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.
Passer au label plus rare et plus business.
- Rejouer pipeline sur
conversion. - Comparer stabilité vs
visit. - Adapter les commentaires.
- 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.
Produire une étude publiable.
- Écrire
reports/final_report.md. - Exporter toutes les figures.
- Créer une table synthétique.
- Ajouter limites, bibliographie et recommandations.
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.
| 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 |
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.
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.20Commandes de consolidation actuelles :
make test
make final-report
make experiment-results