FPS (Fraud Prediction System) est un projet pédagogique de machine learning appliqué à la détection de fraude dans des transactions crypto / Web3.
Le cœur du projet est le notebook FPS.ipynb, qui illustre deux approches complémentaires :
- une approche supervisée avec labels synthétiques
- une approche réaliste sans labels basée sur la détection d’anomalies
L’objectif n’est pas de “prédire la fraude réelle”, mais de démontrer une compréhension rigoureuse des pipelines ML, des métriques, et des pièges classiques du domaine.
Ce projet vise à démontrer :
- la construction d’un pipeline ML propre (sans data leakage)
- le choix de métriques adaptées aux classes déséquilibrées
- la différence entre labels artificiels et signaux exploitables
- une approche réaliste en absence de labels
- la capacité à expliquer les limites d’un modèle
python -m venv .venv
# activer l'environnement, puis :
pip install -r requirements.txt
jupyter notebookOuvrir ensuite : notebooks/FPS.ipynb
- Source : Kaggle — Synthetic Crypto/Web3 Transaction Dataset
- Type : données transactionnelles synthétiques
- Lien : https://www.kaggle.com/datasets/chusmman/synthetic-cryptoweb3-transaction-dataset
- Aucun label de fraude réel fourni
Colonnes principales :
tx_hashfrom_wallet,to_wallettokenamountgas_fee_usdplatformtx_typetimestamp
⚠️ Les données sont synthétiques et utilisées uniquement à des fins pédagogiques.
Objectif : Illustrer un pipeline supervisé classique lorsque des labels sont disponibles.
Étapes :
- Split train/test avant toute création de label
- Création de labels synthétiques (
is_suspicious) basés sur :- montants extrêmes (percentiles)
- gas fees élevés
- self-transfers
- Analyse du déséquilibre de classes
- Baseline naïve (toujours prédire la classe majoritaire)
- Modèles supervisés :
- Régression Logistique
- Random Forest
- Évaluation avec :
- Recall (classe minoritaire)
- PR AUC (métrique clé)
- ROC AUC (comparaison)
- Choix du seuil sur un jeu de validation
- Tests de robustesse (What would break this model?)
Message clé : Les performances élevées reflètent la capacité du modèle à reproduire des règles, pas à détecter une fraude réelle.
Objectif : Illustrer une stratégie applicable lorsque aucun label n’est disponible.
Pipeline :
- Détection d’anomalies non supervisée (IsolationForest)
- Génération de scores d’anomalie
- Création de pseudo-labels
- Entraînement de modèles supervisés sur ces pseudo-labels
- Analyse critique des résultats
Points importants :
- Pas de fuite de données
- Séparation stricte train/test
- Paramètre
contaminationexplicitement discuté - Mise en évidence du risque de circularité
- ❌ Accuracy seule (trompeuse)
- ✅ Recall (classe suspecte)
- ✅ PR AUC (classe déséquilibrée)
⚠️ ROC AUC utilisé avec prudence
Le notebook montre également :
- pourquoi une baseline naïve est indispensable
- comment choisir un seuil sans biaiser l’évaluation
- comment interpréter un bon score de manière critique
- Pas de fraude réelle
- Pas d’historique par wallet
- Pas de graphes de transactions
- Pas de labels validés humainement
Ces limites sont documentées volontairement.
Des outils modernes (ex. Cursor/LLM) ont été utilisés comme assistants pour accélérer l’itération. Les choix de méthode (split, métriques, seuil, interprétation) et la cohérence du pipeline sont contrôlés et justifiés dans le notebook.
Ce projet s’appuie sur un cadre méthodologique explicite visant à :
- éviter les fuites de données (data leakage),
- garantir la reproductibilité,
- maintenir une séparation claire entre exploration, features et modèles,
- utiliser l’IA comme copilote contrôlé (AIDD).
Les règles et checklists sont documentées dans :
docs/rules/aidd_rules.mddocs/rules/ml_rules.mddocs/rules/ml_checklist.md
Ces documents font partie intégrante du projet.
MIT