Dans le secteur telecom, l'attrition client represente une perte significative de revenus. Ce projet propose une solution predictive permettant d'identifier les clients a risque de depart, afin que les equipes commerciales puissent intervenir en amont.
| Fonctionnalite | Description |
|---|---|
| Score de risque | Chaque client recoit une probabilite de depart, calculee a partir de son historique |
| Interface web | Application accessible en ligne pour consulter les predictions sans competence technique |
| Scoring par lot | Possibilite d'analyser un fichier de clients en une seule operation |
- Precision du modele : 80%+ sur les donnees de test
- Application deployee et fonctionnelle β testable via le lien ci-dessous
- Pipeline reproductible β les resultats peuvent etre regeneres a tout moment
| Element | Lien |
|---|---|
| Application Streamlit | https://customer-churn-project-zv7e.onrender.com/ |
Note : L'application est hebergee sur Render (plan gratuit). Le premier chargement peut prendre quelques secondes si le service est en veille.
Pour tester la demo :
- Cliquez sur le lien ci-dessus
- Renseignez les caracteristiques d'un client (anciennete, charges, type de contrat)
- Cliquez sur "Calculer le risque de churn" pour obtenir la prediction
- Explorez l'onglet "Scoring par lot" pour tester avec un fichier CSV
Pipeline complet de Machine Learning pour la prediction du churn client (attrition) base sur le dataset Telco Customer Churn de Kaggle. Ce projet implemente les meilleures pratiques MLOps : versioning des donnees, suivi des experiences, optimisation des hyperparametres et deploiement conteneurise.
Objectif : Identifier les clients a risque de resiliation afin d'anticiper les actions de retention.
| Composant | Outil | Description |
|---|---|---|
| Configuration | Hydra | Gestion centralisee et modulaire des configurations YAML |
| Versioning des donnees | DVC | Reproductibilite et tracabilite des pipelines de donnees |
| Suivi des experiences | MLflow | Logging des metriques, artefacts et registre de modeles |
| Optimisation | Optuna | Recherche automatique des hyperparametres optimaux |
| API de prediction | FastAPI | Service REST haute performance avec documentation Swagger |
| Interface utilisateur | Streamlit | Application web interactive pour les predictions |
| Conteneurisation | Docker Compose | Orchestration multi-services pour le deploiement |
| CI/CD | GitHub Actions | Automatisation des tests et du deploiement |
| Element | Valeur |
|---|---|
| Dataset | blastchar/telco-customer-churn (Kaggle) |
| Variable cible | Churn (Yes/No - binaire) |
| Langage | Python 3.11+ |
| Gestionnaire de dependances | Poetry |
| Licence | MIT |
Customer_Churn_Project/
βββ README.md # Documentation principale
βββ DEPLOYMENT.md # Guide de deploiement Render
βββ pyproject.toml # Configuration Poetry et outils
βββ dvc.yaml # Definition du pipeline DVC
βββ compose.yaml # Configuration Docker Compose
βββ Makefile # Commandes utilitaires
βββ render.yaml # Configuration deploiement Render
β
βββ configs/ # Configurations Hydra
β βββ data.yaml
β βββ model.yaml
β βββ train.yaml
β
βββ src/ # Code source principal
β βββ data/ # Telechargement et preparation des donnees
β βββ features/ # Feature engineering
β βββ models/ # Entrainement, evaluation, enregistrement
β βββ serving/ # API FastAPI
β βββ ui/ # Application Streamlit
β βββ utils/ # Utilitaires partages
β
βββ docker/ # Dockerfiles
β βββ Dockerfile.train
β βββ Dockerfile.app
β
βββ data/ # Donnees (gerees par DVC)
β βββ raw/ # Donnees brutes
β βββ interim/ # Donnees intermediaires
β βββ processed/ # Donnees et artefacts prets a l'emploi
β
βββ artifacts/ # Artefacts d'entrainement
βββ mlruns/ # Experiences MLflow
βββ tests/ # Tests unitaires
βββ .github/workflows/ # Pipelines CI/CD
Avant de commencer, assurez-vous d'avoir installe :
- Python 3.11 ou superieur (via pyenv recommande)
- Poetry pour la gestion des dependances
- Git et DVC pour le versioning
- Docker et Docker Compose pour le deploiement local
- Un compte Kaggle avec le fichier d'authentification
~/.kaggle/kaggle.json
1. Cloner le repository
git clone https://github.com/Souley225/Customer_Churn_Project.git
cd Customer_Churn_Project2. Installer les dependances
poetry install3. Configurer les hooks pre-commit
poetry run pre-commit install4. Configurer l'API Kaggle
Creez le fichier d'authentification Kaggle et securisez-le :
# Linux/macOS
chmod 600 ~/.kaggle/kaggle.json
# Windows (PowerShell)
# Creez le fichier manuellement dans %USERPROFILE%\.kaggle\kaggle.jsonLe pipeline complet est orchestre par DVC et configure via Hydra.
dvc repro| Etape | Description |
|---|---|
download |
Telechargement automatique des donnees depuis Kaggle |
split |
Decoupage en ensembles train/validation/test (70/10/20) |
features |
Feature engineering et transformation des variables |
train |
Entrainement avec optimisation Optuna et logging MLflow |
evaluate |
Evaluation des metriques sur le jeu de test |
register |
Enregistrement du meilleur modele dans le registre MLflow |
- tenure_bucket : Segmentation de l'anciennete client
- num_services : Nombre total de services souscrits
- total_spend_proxy : Estimation des depenses cumulees
Le pipeline teste automatiquement plusieurs algorithmes et selectionne le meilleur :
| Modele | Description |
|---|---|
| LightGBM | Gradient boosting optimise pour la vitesse |
| XGBoost | Gradient boosting avec regularisation avancee |
| CatBoost | Gradient boosting optimise pour les variables categorielles |
| Regression Logistique | Modele de reference interpretable |
L'optimisation des hyperparametres est realisee par Optuna avec validation croisee.
# Construire les images
docker compose build
# Demarrer l'infrastructure
make up| Service | URL | Description |
|---|---|---|
| MLflow UI | http://localhost:5000 | Suivi des experiences et registre |
| API FastAPI | http://localhost:8000/docs | Documentation interactive Swagger |
| Streamlit | http://localhost:8501 | Interface utilisateur graphique |
make downPOST /predict
{
"gender": "Female",
"SeniorCitizen": 0,
"Partner": "Yes",
"Dependents": "No",
"tenure": 12,
"PhoneService": "Yes",
"MultipleLines": "No",
"InternetService": "DSL",
"OnlineSecurity": "No",
"OnlineBackup": "Yes",
"DeviceProtection": "No",
"TechSupport": "No",
"StreamingTV": "No",
"StreamingMovies": "No",
"Contract": "Month-to-month",
"PaperlessBilling": "Yes",
"PaymentMethod": "Electronic check",
"MonthlyCharges": 50.0,
"TotalCharges": "600.0"
}{
"churn_probability": 0.72,
"prediction": "Yes"
}L'application Streamlit permet de :
- Saisir manuellement les caracteristiques d'un client
- Obtenir instantanement la probabilite de churn
- Visualiser les facteurs de risque principaux
- Explorer l'interpretabilite du modele via SHAP
poetry run pytest -q# Linting et formatage
poetry run ruff .
poetry run black --check .
poetry run isort --check .
# Verification des types
poetry run mypy srcLes workflows GitHub Actions automatisent :
| Workflow | Description |
|---|---|
| Linting | Analyse statique avec Black, Ruff, isort, MyPy |
| Tests | Execution des tests unitaires avec Pytest |
| Build | Construction et publication des images Docker |
| Validation | Verification de la reproductibilite du pipeline |
Pour un deploiement sur Render, consultez le guide detaille : DEPLOYMENT.md
Le projet est pre-configure avec render.yaml pour un deploiement en un clic via Blueprint.
Le projet utilise Supabase Storage comme backend S3-compatible pour DVC et MLflow.
| Composant | Bucket | Usage |
|---|---|---|
| DVC | s3://dvc-data |
Versioning des donnees |
| MLflow | s3://mlflow-artifacts |
Artefacts d'experiences |
Configuration pour nouveaux contributeurs :
- Demandez les credentials S3 au mainteneur du projet
- Creez le fichier
.dvc/config.local:
[remote "supabase"]
access_key_id = <VOTRE_ACCESS_KEY>
secret_access_key = <VOTRE_SECRET_KEY>- Ajoutez les variables dans
.env:
AWS_ACCESS_KEY_ID=<VOTRE_ACCESS_KEY>
AWS_SECRET_ACCESS_KEY=<VOTRE_SECRET_KEY>
MLFLOW_S3_ENDPOINT_URL=https://ybjfnpppvdbpuivjnghp.supabase.co/storage/v1/s3
MLFLOW_ARTIFACT_ROOT=s3://mlflow-artifacts- Verifiez la configuration :
poetry run dvc remote list
poetry run dvc pull| Commande | Description |
|---|---|
dvc repro |
Executer le pipeline complet |
make up |
Demarrer les services Docker |
make down |
Arreter les services Docker |
make lint |
Verifier la qualite du code |
make test |
Executer les tests unitaires |
poetry run mlflow ui |
Lancer l'interface MLflow locale |
Les contributions sont bienvenues. Pour contribuer :
- Forkez le repository
- Creez une branche (
git checkout -b feature/NouvelleFeature) - Committez vos modifications (
git commit -m 'Ajout de NouvelleFeature') - Poussez la branche (
git push origin feature/NouvelleFeature) - Ouvrez une Pull Request
Assurez-vous que les tests passent et que le code respecte les standards de formatage avant de soumettre.
Auteur : Souley225
Repository : Customer_Churn_Project
Ce projet est distribue sous licence MIT. Voir le fichier LICENSE pour plus de details.
Projet MLOps de prediction du churn client