Retour expérience détection fraude temps réel

SYSTÈME DE DÉTECTION DE FRAUDESSYSTÈME DE DÉTECTION DE FRAUDES
REXREX
SOMMAIRESOMMAIRE
Introduction
Quelques termes pour commencer !
Architecture
Challenges et solutions
Scala: quels avantages sur le projet ?
Améliorations
INTRODUCTIONINTRODUCTION
CONSULTANTS EBIZNEXTCONSULTANTS EBIZNEXT
PROBAYESPROBAYES
Société spécialisée en IA (INRIA / CNRS)
Créé en 2003 basée à Grenoble & Paris
Rachetée par le groupe La Poste en 2016
FRAUDIAFRAUDIA
Un système de détéction de fraudes bancaires en temps réel
Transaction en cours
Mais aussi :
Historique des transactions
Cartes en oppositions
Transactions frauduleuses
La Banque Postale & Société Générale
De fortes contraintes de performance
Amélioration continue et dynamique du modèle
XGBoost
QUELQUES TERMES POUR COMMENCER !QUELQUES TERMES POUR COMMENCER !
MACHINE LEARNINGMACHINE LEARNING
FEATURE ENGINEERINGFEATURE ENGINEERING
MODÈLEMODÈLE
SCORINGSCORING
LABELLABEL
ARCHITECTUREARCHITECTURE
MACRO ARCHITECTUREMACRO ARCHITECTURE
Scoring nodesBank system
Training nodes
Monitoring nodes
Card
transaction
Transaction
Prediction
Monitoring
teams and
data
scientists
Models
consolidated
scoring data
SCORING NODESCORING NODE
Load
Balancer
Transaction
Couchbase
denormalized
historic
+
user data
Prediction
Watcher:
- Load models in memory
- Persist users data
feature
engineering
Models call
Update
denormalized
historic
Kafka
Transaction, features, 
prediction, and technical
data (model version, ...)
Users
SCORING NODESCORING NODE
Pré-calcul et stockage d'un historique dénormalisé des transactions
Chargement à chaud des nouveaux modéles
Contrainte métier: update complet avant envoi de la prédiction
ARCHITECTURE GLOBALEARCHITECTURE GLOBALE
Scoring node
Scoring node
Scoring node
Training node
Monitoring node
Load balancer
ES
Kafka
Kafka
Kafka
Models
Bank system
Card
transaction
Models
Transaction
Prediction
All
transaction,
features
and scoring
information
Mirror maker
Monitoring
teams and
data
scientists
Users Frauds 
ARCHITECTURE GLOBALEARCHITECTURE GLOBALE
Load balancing
Transmission des features via Kafka
Kafka
Consommé par :
Monitoring node => supervision métier
Training node => réentrainement récurrent
Source de donnée pour le training
Temps de rétention
Mirror maker nécessaire pour l'isolation des briques
CHALLENGES ET SOLUTIONSCHALLENGES ET SOLUTIONS
TEMPS DE RÉPONSETEMPS DE RÉPONSE
PROBLÈMEPROBLÈME
Quelques centaines de requêtes par secondes en conditions nominales
Quelques ms / requête
Plus de 150 features
Features temporelles (dépendant de l'historique des features passées)
SOLUTIONSOLUTION
Optimisation du feature engineering: benchmarking
Structure de données spécifiques pour optimiser les calculs
Trade-off performance du modèle / temps de réponse
RocksDB: Key Value store local, très performant, avec un système de cache
RÉSILIENCE À LA PANNERÉSILIENCE À LA PANNE
PROBLÈMEPROBLÈME
1 scoring node
Applicatifs indépendants
RocksDB local
Que faire si le scoring tombe ?
SOLUTIONSOLUTION
3 scoring nodes
Load balancing
... Problème avec RocksDB en local ?
BASE DE DONNÉES DISTRIBUÉEBASE DE DONNÉES DISTRIBUÉE
PROBLÈMEPROBLÈME
RocksDB n'est pas distribué
Besoin d'un key value store, distribué et hautement performant pour remplacer RocksDB
Besoin métier: immediate consistency o/
SOLUTIONSOLUTION
Couchbase
Orienté document et KV
Très performant en écriture ET en lecture
In memory
Autres pistes:
redondance à postériori: KO métier
Cassandra: mauvaises performances en update
Redis: pas d'immediate consistency
MongoDb: mauvaises performances en concurrence d'accès
Infiny span: cache distribué
MISE À JOUR DES DONNÉES RÉFÉRENTIELSMISE À JOUR DES DONNÉES RÉFÉRENTIELS
PROBLÈMEPROBLÈME
Fichier référentiels : annulent et remplacent
Utilisation qu'en cas de succès complet de leurs ingestions
Transaction globale
Bascule des anciens aux nouveaux sans interruption de service
SOLUTIONSOLUTION
Clés préfixées dans Couchbase
Préfixe en cache
Nouveaux référentiels = nouveau préfixe
Invalidation du cache et suppression des données obselètes
AMÉLIORATION CONTINUE DU MODÈLEAMÉLIORATION CONTINUE DU MODÈLE
PROBLÈMEPROBLÈME
Les comportements frauduleux évoluent
Feature engineering sur l'historique impossible (trop long)
Pas d'interruption de service
Nécessité pouvoir déclencher un entraînement à la demande
SOLUTIONSOLUTION
Scheduling d'entrainments automatiques récurrents + IHM
Réutilisation des features du scoring node grâce à Kafka
Processus complexe : Akka Stream
Test de perfomance : nouveau vs actuel
Changement de modèle à chaud
Export des données (exploratoire)
SCALA: QUELS AVANTAGES SUR LE PROJETSCALA: QUELS AVANTAGES SUR LE PROJET
??
TYPAGETYPAGE
Data flow complexe "guidé" par les types & modélisation du domaine métier précis
-
Domaine métier : Requête Requête parsée Features Score brut Score métier Réponse
Mal typé : String List[String] List[Double] Double String String
Bien typé : Request List[RawFeatures] List[Features] RawScore RefinedScore Response
-
Les états ou transformations incorrectes sont détéctées à la compilation
IMMUTABILITÉIMMUTABILITÉ
Contexte de charge importante et de concurrence forte
L'immutabilité donne une tranquilité d'esprit
Pas à gérer utilisations concurrentielles, la thread safety
Seules mutations dans la code base
Localement dans les algorithmes de feature engineering
Reload des modèles à chaud
MONTÉE EN COMPÉTENCEMONTÉE EN COMPÉTENCE
Onboarding en douceur de développeurs Java
Code de plus en plus idiomatique
"Scalava" ⇒Better Java ⇒Scala FPish ⇒FP
Code review
Amélioration continue de l'équipe
Émergence naturelle des besoins de refactoring
GAIN DE PRODUCTIVITÉ GRÂCE À LA BOITE À OUTILS DE LA FPGAIN DE PRODUCTIVITÉ GRÂCE À LA BOITE À OUTILS DE LA FP
ADT
Modèlisation des différents états de la donnée & des erreurs
Lenses pour des case class imbriquées
a.copy(b = a.b.copy(...☠!))
Applicatives: combinaison d'effets indépendant
Feature engineering !
Composition de fonctions
Data flow du projet
Polymorphisme de type
Re-utilisation de code
...
AXES D'AMÉLIORATIONSAXES D'AMÉLIORATIONS
PLUS DE FP !PLUS DE FP !
Remplacement des Future par une monade IO
Eager
Non référentiellement transparente
ZIO ? Cats IO ? Task ?
Meilleure gestion des erreurs
Try
Fail fast
Throwable
Either ou Validation
OPTIMISER LE STOCKAGEOPTIMISER LE STOCKAGE
Mise en cache des informations les plus souvent requêtées
=> Certains utilisateurs sont plus actifs que d'autres
OUVERTURE À D'AUTRE ÉCOSYSTÈMESOUVERTURE À D'AUTRE ÉCOSYSTÈMES
Comment utiliser le tooling data Python / C++ / etc. ?
Machine Learning as a service => gRPC
HTTP/2
Protobuf
Polyglot (Java, Python, Scala, C++, ...)
Client / Server / Sérialisation
QUESTIONS ?QUESTIONS ?
MERCI !MERCI !
1 sur 40

Recommandé

Methodologie et outils d optimisation php mysql par
Methodologie et outils d optimisation php mysqlMethodologie et outils d optimisation php mysql
Methodologie et outils d optimisation php mysqlCodizy
2K vues89 diapositives
SQL Server et les développeurs par
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
600 vues34 diapositives
Tours JUG (oct 2010) - NoSQL, des grands du Web aux entreprises par
Tours JUG (oct 2010) - NoSQL, des grands du Web aux entreprisesTours JUG (oct 2010) - NoSQL, des grands du Web aux entreprises
Tours JUG (oct 2010) - NoSQL, des grands du Web aux entreprisesMichaël Figuière
1.4K vues40 diapositives
Réussir une montée en charge avec MongoDB par
Réussir une montée en charge avec MongoDBRéussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDB MongoDB
1.4K vues49 diapositives
JavaScript Devoxx France 2013 par
JavaScript Devoxx France 2013JavaScript Devoxx France 2013
JavaScript Devoxx France 2013Romain Linsolas
2.4K vues79 diapositives
JSS2013 : Haute disponibilité par
JSS2013 : Haute disponibilitéJSS2013 : Haute disponibilité
JSS2013 : Haute disponibilitéChristophe Laporte
1K vues42 diapositives

Contenu connexe

Similaire à Retour expérience détection fraude temps réel

NoSQL et Big Data par
NoSQL et Big DataNoSQL et Big Data
NoSQL et Big Dataacogoluegnes
2.5K vues59 diapositives
Clean Architecture et Code patrimonial par
Clean Architecture et Code patrimonialClean Architecture et Code patrimonial
Clean Architecture et Code patrimonialAgile Montréal
1.3K vues43 diapositives
Agl2012 par
Agl2012Agl2012
Agl2012eric German
1.9K vues30 diapositives
Comment reprendre un (gros) projet Ruby on Rails par
Comment reprendre un (gros) projet Ruby on RailsComment reprendre un (gros) projet Ruby on Rails
Comment reprendre un (gros) projet Ruby on RailsNovelys
461 vues15 diapositives
Stockage des données dans les sgbd par
Stockage des données dans les sgbdStockage des données dans les sgbd
Stockage des données dans les sgbdMarc Akoley
1.1K vues22 diapositives
DMCA #20: Migration Natif vers react natif par
DMCA #20: Migration Natif vers react natifDMCA #20: Migration Natif vers react natif
DMCA #20: Migration Natif vers react natifOlivier Destrebecq
437 vues32 diapositives

Similaire à Retour expérience détection fraude temps réel(20)

Clean Architecture et Code patrimonial par Agile Montréal
Clean Architecture et Code patrimonialClean Architecture et Code patrimonial
Clean Architecture et Code patrimonial
Agile Montréal1.3K vues
Comment reprendre un (gros) projet Ruby on Rails par Novelys
Comment reprendre un (gros) projet Ruby on RailsComment reprendre un (gros) projet Ruby on Rails
Comment reprendre un (gros) projet Ruby on Rails
Novelys461 vues
Stockage des données dans les sgbd par Marc Akoley
Stockage des données dans les sgbdStockage des données dans les sgbd
Stockage des données dans les sgbd
Marc Akoley1.1K vues
Cours 1/3 "Architecture Web" par Adyax
Cours 1/3 "Architecture Web"Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"
Adyax17.3K vues
Octo Technology - Refcard Tests Web front-end par François Petitit
Octo Technology - Refcard Tests Web front-endOcto Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-end
François Petitit1.6K vues
.Net pour le développeur Java - une source d'inspiration? par Rui Carvalho
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?
Rui Carvalho931 vues
RMLL 2013: Projet rudder, retour sur 4 ans de Scala par RUDDER
RMLL 2013: Projet rudder, retour sur 4 ans de ScalaRMLL 2013: Projet rudder, retour sur 4 ans de Scala
RMLL 2013: Projet rudder, retour sur 4 ans de Scala
RUDDER1.6K vues
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) par univalence
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
univalence 1.3K vues
2012 02-09-eranea-presentation-jug-lausanne par Didier Durand
2012 02-09-eranea-presentation-jug-lausanne2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne
Didier Durand1K vues
présentation migration automatisee Pacbase -> UML + Java par Didier Durand
présentation migration automatisee Pacbase -> UML + Javaprésentation migration automatisee Pacbase -> UML + Java
présentation migration automatisee Pacbase -> UML + Java
Didier Durand5.5K vues
Performance barcampfinal par Oxalide
Performance barcampfinalPerformance barcampfinal
Performance barcampfinal
Oxalide511 vues
Retour d’expérience - Architecture MicroService chez BotsUnit par Gregoire Lejeune
Retour d’expérience - Architecture MicroService chez BotsUnitRetour d’expérience - Architecture MicroService chez BotsUnit
Retour d’expérience - Architecture MicroService chez BotsUnit
Gregoire Lejeune701 vues
OSA02 - Pas de transactionnel haute performance sans un couple machine logici... par Nicolas Desachy
OSA02 - Pas de transactionnel haute performance sans un couple machine logici...OSA02 - Pas de transactionnel haute performance sans un couple machine logici...
OSA02 - Pas de transactionnel haute performance sans un couple machine logici...
Nicolas Desachy530 vues
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser... par Microsoft Technet France
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...

Dernier

Matériel accessibilité numérique IBEP.pdf par
Matériel accessibilité numérique IBEP.pdfMatériel accessibilité numérique IBEP.pdf
Matériel accessibilité numérique IBEP.pdfStagiaireLearningmat
72 vues2 diapositives
Caprinov2023 Distribution quotidienne des fourrages quelles stratégies pour ... par
Caprinov2023 Distribution quotidienne des fourrages  quelles stratégies pour ...Caprinov2023 Distribution quotidienne des fourrages  quelles stratégies pour ...
Caprinov2023 Distribution quotidienne des fourrages quelles stratégies pour ...Institut de l'Elevage - Idele
13 vues25 diapositives
Caprinov2023 Quelles rotations dans les systèmes caprins de Nouvelle-Aquitain... par
Caprinov2023 Quelles rotations dans les systèmes caprins de Nouvelle-Aquitain...Caprinov2023 Quelles rotations dans les systèmes caprins de Nouvelle-Aquitain...
Caprinov2023 Quelles rotations dans les systèmes caprins de Nouvelle-Aquitain...Institut de l'Elevage - Idele
17 vues35 diapositives
GAV2023 - Les systèmes bovins viande à l'épreuve des défis : les dynamiques d... par
GAV2023 - Les systèmes bovins viande à l'épreuve des défis : les dynamiques d...GAV2023 - Les systèmes bovins viande à l'épreuve des défis : les dynamiques d...
GAV2023 - Les systèmes bovins viande à l'épreuve des défis : les dynamiques d...Institut de l'Elevage - Idele
94 vues23 diapositives
GAV2023 - L’albédo (α) des prairies : un levier d'atténuation du changement c... par
GAV2023 - L’albédo (α) des prairies : un levier d'atténuation du changement c...GAV2023 - L’albédo (α) des prairies : un levier d'atténuation du changement c...
GAV2023 - L’albédo (α) des prairies : un levier d'atténuation du changement c...Institut de l'Elevage - Idele
84 vues18 diapositives
GAV2023 - Méthane 2030 - Une démarche collective française à destination de t... par
GAV2023 - Méthane 2030 - Une démarche collective française à destination de t...GAV2023 - Méthane 2030 - Une démarche collective française à destination de t...
GAV2023 - Méthane 2030 - Une démarche collective française à destination de t...Institut de l'Elevage - Idele
87 vues14 diapositives

Dernier(20)

Retour expérience détection fraude temps réel

  • 1. SYSTÈME DE DÉTECTION DE FRAUDESSYSTÈME DE DÉTECTION DE FRAUDES REXREX
  • 2. SOMMAIRESOMMAIRE Introduction Quelques termes pour commencer ! Architecture Challenges et solutions Scala: quels avantages sur le projet ? Améliorations
  • 5. PROBAYESPROBAYES Société spécialisée en IA (INRIA / CNRS) Créé en 2003 basée à Grenoble & Paris Rachetée par le groupe La Poste en 2016
  • 6. FRAUDIAFRAUDIA Un système de détéction de fraudes bancaires en temps réel Transaction en cours Mais aussi : Historique des transactions Cartes en oppositions Transactions frauduleuses La Banque Postale & Société Générale De fortes contraintes de performance Amélioration continue et dynamique du modèle XGBoost
  • 7. QUELQUES TERMES POUR COMMENCER !QUELQUES TERMES POUR COMMENCER !
  • 14. MACRO ARCHITECTUREMACRO ARCHITECTURE Scoring nodesBank system Training nodes Monitoring nodes Card transaction Transaction Prediction Monitoring teams and data scientists Models consolidated scoring data
  • 15. SCORING NODESCORING NODE Load Balancer Transaction Couchbase denormalized historic + user data Prediction Watcher: - Load models in memory - Persist users data feature engineering Models call Update denormalized historic Kafka Transaction, features,  prediction, and technical data (model version, ...) Users
  • 16. SCORING NODESCORING NODE Pré-calcul et stockage d'un historique dénormalisé des transactions Chargement à chaud des nouveaux modéles Contrainte métier: update complet avant envoi de la prédiction
  • 17. ARCHITECTURE GLOBALEARCHITECTURE GLOBALE Scoring node Scoring node Scoring node Training node Monitoring node Load balancer ES Kafka Kafka Kafka Models Bank system Card transaction Models Transaction Prediction All transaction, features and scoring information Mirror maker Monitoring teams and data scientists Users Frauds 
  • 18. ARCHITECTURE GLOBALEARCHITECTURE GLOBALE Load balancing Transmission des features via Kafka Kafka Consommé par : Monitoring node => supervision métier Training node => réentrainement récurrent Source de donnée pour le training Temps de rétention Mirror maker nécessaire pour l'isolation des briques
  • 20. TEMPS DE RÉPONSETEMPS DE RÉPONSE PROBLÈMEPROBLÈME Quelques centaines de requêtes par secondes en conditions nominales Quelques ms / requête Plus de 150 features Features temporelles (dépendant de l'historique des features passées)
  • 21. SOLUTIONSOLUTION Optimisation du feature engineering: benchmarking Structure de données spécifiques pour optimiser les calculs Trade-off performance du modèle / temps de réponse RocksDB: Key Value store local, très performant, avec un système de cache
  • 22. RÉSILIENCE À LA PANNERÉSILIENCE À LA PANNE PROBLÈMEPROBLÈME 1 scoring node Applicatifs indépendants RocksDB local Que faire si le scoring tombe ?
  • 23. SOLUTIONSOLUTION 3 scoring nodes Load balancing ... Problème avec RocksDB en local ?
  • 24. BASE DE DONNÉES DISTRIBUÉEBASE DE DONNÉES DISTRIBUÉE PROBLÈMEPROBLÈME RocksDB n'est pas distribué Besoin d'un key value store, distribué et hautement performant pour remplacer RocksDB Besoin métier: immediate consistency o/
  • 25. SOLUTIONSOLUTION Couchbase Orienté document et KV Très performant en écriture ET en lecture In memory Autres pistes: redondance à postériori: KO métier Cassandra: mauvaises performances en update Redis: pas d'immediate consistency MongoDb: mauvaises performances en concurrence d'accès Infiny span: cache distribué
  • 26. MISE À JOUR DES DONNÉES RÉFÉRENTIELSMISE À JOUR DES DONNÉES RÉFÉRENTIELS PROBLÈMEPROBLÈME Fichier référentiels : annulent et remplacent Utilisation qu'en cas de succès complet de leurs ingestions Transaction globale Bascule des anciens aux nouveaux sans interruption de service
  • 27. SOLUTIONSOLUTION Clés préfixées dans Couchbase Préfixe en cache Nouveaux référentiels = nouveau préfixe Invalidation du cache et suppression des données obselètes
  • 28. AMÉLIORATION CONTINUE DU MODÈLEAMÉLIORATION CONTINUE DU MODÈLE PROBLÈMEPROBLÈME Les comportements frauduleux évoluent Feature engineering sur l'historique impossible (trop long) Pas d'interruption de service Nécessité pouvoir déclencher un entraînement à la demande
  • 29. SOLUTIONSOLUTION Scheduling d'entrainments automatiques récurrents + IHM Réutilisation des features du scoring node grâce à Kafka Processus complexe : Akka Stream Test de perfomance : nouveau vs actuel Changement de modèle à chaud Export des données (exploratoire)
  • 30. SCALA: QUELS AVANTAGES SUR LE PROJETSCALA: QUELS AVANTAGES SUR LE PROJET ??
  • 31. TYPAGETYPAGE Data flow complexe "guidé" par les types & modélisation du domaine métier précis - Domaine métier : Requête Requête parsée Features Score brut Score métier Réponse Mal typé : String List[String] List[Double] Double String String Bien typé : Request List[RawFeatures] List[Features] RawScore RefinedScore Response - Les états ou transformations incorrectes sont détéctées à la compilation
  • 32. IMMUTABILITÉIMMUTABILITÉ Contexte de charge importante et de concurrence forte L'immutabilité donne une tranquilité d'esprit Pas à gérer utilisations concurrentielles, la thread safety Seules mutations dans la code base Localement dans les algorithmes de feature engineering Reload des modèles à chaud
  • 33. MONTÉE EN COMPÉTENCEMONTÉE EN COMPÉTENCE Onboarding en douceur de développeurs Java Code de plus en plus idiomatique "Scalava" ⇒Better Java ⇒Scala FPish ⇒FP Code review Amélioration continue de l'équipe Émergence naturelle des besoins de refactoring
  • 34. GAIN DE PRODUCTIVITÉ GRÂCE À LA BOITE À OUTILS DE LA FPGAIN DE PRODUCTIVITÉ GRÂCE À LA BOITE À OUTILS DE LA FP ADT Modèlisation des différents états de la donnée & des erreurs Lenses pour des case class imbriquées a.copy(b = a.b.copy(...☠!)) Applicatives: combinaison d'effets indépendant Feature engineering ! Composition de fonctions Data flow du projet Polymorphisme de type Re-utilisation de code ...
  • 36. PLUS DE FP !PLUS DE FP ! Remplacement des Future par une monade IO Eager Non référentiellement transparente ZIO ? Cats IO ? Task ? Meilleure gestion des erreurs Try Fail fast Throwable Either ou Validation
  • 37. OPTIMISER LE STOCKAGEOPTIMISER LE STOCKAGE Mise en cache des informations les plus souvent requêtées => Certains utilisateurs sont plus actifs que d'autres
  • 38. OUVERTURE À D'AUTRE ÉCOSYSTÈMESOUVERTURE À D'AUTRE ÉCOSYSTÈMES Comment utiliser le tooling data Python / C++ / etc. ? Machine Learning as a service => gRPC HTTP/2 Protobuf Polyglot (Java, Python, Scala, C++, ...) Client / Server / Sérialisation