Application du data mining à la détection de transactions frauduleuses – méthodes supervisées

Attention: je ne suis expert ni en apprentissage automatique sur des données déséquilibrées ni en lutte contre la fraude. Cet article est le résultat de mes lectures sur le sujet. S’il vous semble que certaines affirmations sont erronées ou discutables, n’hésitez pas à m’en faire part dans les commentaires

Salut les internautes. Aujourd’hui, je vous fais une petite synthèse de ce que j’ai pu lire sur les approches statistiques et le data mining à la fraude bancaire.

Fraude bancaire

On appelle fraude toute action délibérée délictueuse s’appuyant sur la tromperie. Dans le domaine de la banque, cela correspond à des transactions bancaires faites alors qu’elles n’auraient pas dû. Il peut s’agir de transactions faites sur un compte alors qu’elles auraient dû être faites sur un autre, de versements qui n’ont pas de raison d’être ou de transactions dont le montant a été volontairement faussé. Elles peuvent être réalisées par des personnes extérieures à l’entreprise (fournisseurs, clients ou dans le cas de cyberattaques), par des personnes dans l’entreprise (employés ou patrons) ou par des organisations incluant ces deux types de personnes.

Les transactions frauduleuses sont depuis longtemps un sujet de préoccupation, tant pour les entreprises ciblées que pour les banques et de nombreux moyens ont été mis en place pour les contrer, allant de la prévention (mise en place de chartes éthiques, de politiques de bonne conduite, etc.) à la gestion de crise. Cependant, au fur et à mesure que les fraudeurs prennent conscience des mesures de prévention, ils apprennent aussi à s’en prémunir et la mise en place d’action de mitigation et de gestion de crise nécessite la détection de ces fraudes.

Détection de fraude

La détection de fraude a d’abord consisté en une approche statique, certaines règles permettant de déterminer si une transaction est frauduleuse en fonction de ses caractéristiques. Une règle peut par exemple consister à dire qu’un virement de plus d’un certain montant réalisé vers certains pays est considéré comme frauduleux et lève une alerte. Ce genre de mesures statique est cependant limité, les fraudeurs les apprenant soit parce qu’ils sont mis au courant lorsqu’il s’agit de fraudes externes, soit par essai-erreur dans le cas de fraudeurs externes. Au fur et à mesure que les fraudeurs apprennent les règles, les entreprises et les banques doivent les mettre à jour, donnant lieu à un jeu du chat et de la souris coûteux pour elles. Une alternative est de mettre en place un système qui détecte les fraudes sur une base plus fine et de manière moins prévisible grâce à des méthodes se mettant à jour de manière automatique en fonction des données ajoutées.

Une approche statistique de la détection de fraude

Le data mining, ou fouille de données, repose sur des méthodes similaires à celles qu’emploie l’intelligence artificielle basée sur les données. Elle propose un modèle ou une analyse de la réalité à partir des données qui lui sont fournies. Plus ces données correspondent à la réalité, et plus la description sera précise. Bien que ces approches aient également leurs limites, elles ont pour avantage d’être beaucoup moins prédictibles que les approches statiques et de se mettre à jour de manière automatique au fur et à mesure que de nouvelles données lui sont fournies.

Décrivons le problème de manière plus formelle. Le data mining repose sur l’analyse d’une base de données (au moins conceptuellement). Les transactions bancaires sont généralement représentées sous la forme d’un format bien défini, constituant ainsi des données structurées. Notre base comporte donc n lignes correspondant à n transactions. Ces lignes ont toutes la même structure composée de m attributs. Ces attributs, qui correspondent au colonnes de la base de données, peuvent être de différents types : numériques (typiquement un montant) ou catégorielles (un fournisseur). Voyons un petit exemple :

Identifiantmontantjourmoisjour_semainefournisseurheuredevisecompte
124538653.65608LunAperture14:3445
15346535334.861304VenACME2:45£65
70284527244.912210VenAperture12:10£65
6413542523414,72107MarACME12:45$65

Dans cette base de données, on a 9 colonnes. La colonne montant est une colonne numérique. Les colonnes jour, mois, jour de la semaine et heure ont un type de données particulier, qui correspond au temps. Les colonnes fournisseur, devise et compte sont catégorielles, elles représentent un élément parmi une collection, raison pour laquelle certaines données se répètent. La première colonne donne l’identifiant de la transaction et n’est pas à prendre en compte dans la détection.

La détection de fraude peut être réalisée de diverses manières selon le contexte. Si des fraudes précédentes ont déjà été détectées, on utilisera de l’apprentissage supervisé ou semi-supervisé. Dans ce cas, il sera nécessaire d’étiqueter les données pour signaler si ce sont ou non des fraudes. Dans le cas où les données ne sont pas étiquetées, il est toujours possible de faire de la détection de fraude en passant par des techniques de détection d’anomalies. Ces techniques reposent sur une mesure de ressemblance entre la transaction étudiée et tout ou partie des autres transactions afin de déterminer si la transaction est éloignée des « standards ».

Apprentissage supervisé

Beaucoup de techniques ont été testées pour détecter les fraudes dans un contexte supervisé. Le problème est généralement de déterminer la probabilité qu’une transaction soit considérée comme frauduleuse. Les données sont généralement étiquetées avec un 1 pour les données frauduleuses et un 0 pour les données non frauduleuses. La majorité des méthodes permettant de prédire des probabilités ont été testées : réseaux de neurones, régression logistique, machines à vecteur de support, random forests et réseaux bayésiens. Il n’existe pas à ce jour de comparaison entre ces méthodes, et la qualité et la quantité de données sont des problématiques parfois plus importantes que la méthode employée. Je ne les décrirai pas ici, il s’agit de techniques classiques en data mining et vous trouverez pleins de sources vous les expliquant en détail. Pour ceux qui ne savent pas où chercher, le livre de Miclet, Cornuéjols et Banza Apprentissage artificiel qui vient de connaître sa troisième édition, me semble être un bon point de départ.

Au-delà de ces problématiques inhérentes à l’apprentissage automatique, l’une des principales caractéristiques des problèmes liés à la détection de fraudes concerne le déséquilibre entre les classes apprises : en général, les fraudes représentent entre 0,1 et 0,2% des transactions, et ce déséquilibre est problématique pour les algorithmes d’apprentissage classiques. Un algorithme d’apprentissage classique cherche à minimer son taux d’erreur, et dans le cas qui nous intéresse, un moyen simple d’arriver à cette fin est de simplement prédire qu’aucune transaction n’est une fraude. Dans ce cas, l’algorithme obtiendra entre 99,8 et 99,9% de bonnes réponses, ce qui est un très haut taux de bonnes réponses mais ne sera d’aucune aide.

Deux moyens peuvent être employés pour pallier ce problème. Les algorithmes d’apprentissage s’appuient sur une fonction de coût. Dans les problèmes classiques, on considère que le coût associé à une mauvaise classification est le même, qu’il s’agisse d’une erreur dans un sens ou dans l’autre. En changeant la fonction de coût et en la déséquilibrant en faveur de l’erreur la plus grave, il est possible de forcer l’algorithme à prendre en considération les éléments, même peu nombreux, d’une classe.

Une autre manière de faire est de rééquilibrer la base, soit en supprimant des données soit en en ajoutant. Attention cependant. Il n’est pas question de créer ou supprimer des données n’importe comment, sous peine de se retrouver avec une base ne correspondant plus à la base initiale. Afin de modifier la base sans la dénaturer, on va à nouveau se reposer sur des méthodes d’apprentissage automatique reposant sur les k plus proches voisins ou les k-moyennes.

Pour augmenter la taille de la base de données, on va prendre les données étiquetées comme fraudes et essayer de générer des données qui lui ressemblent. Il faut cependant que ces données ne soient pas parfaitement identiques (dans ce cas elles n’apportent rien), qu’elles en soient proches et qu’elles soient « crédibles ». On va donc utiliser les k plus proches voisins de ces transactions afin de générer les caractéristiques de ces nouvelles données. Cette méthode, nommée SMOTE (Synthetic Minority Over-sampling Technique). Une fois cela fait, il est possible de supprimer les données qui prêtent à confusion, c’est-à-dire celles qui sont trop proches des données de la classe non frauduleuse. Cette méthode s’appelle Edited Nearest Neighbours ou ENN.

En ce qui concerne la réduction de la base, il va s’agir avant tout de perdre aussi peu d’information que possible. Pour cela, on va utiliser une méthode de clustering qui consistera à créer des classes de ressemblance parmi les transactions non frauduleuses. Une fois ces classes créées, on supprimera des points des classes très denses. Ces exemples, dont on suppose qu’ils portent finalement peu d’information en regard du nombre d’exemple leur ressemblant. La création des exemples se fera à l’aide de la méthode des k-moyennes que je ne décrirai pas ici, le lecteur intéressé pouvant encore une fois se reporter à Apprentissage artificiel.

Voilà ! La prochaine fois, on parlera des méthodes non supervisées, utilisées quand les données ne sont pas étiquetées. D’ici-là renseignez-vous, réfléchissez et surtout, n’oubliez pas de rêver.

Bibliographie générale

Learning from imbalanced data, billet du blog de Jeremy Jordan

Detecting Financial Fraud Using Machine Learning: Winning the War Against Imbalanced Data, billet du blog towards data science

L’influence positive de la lutte contre la fraude, Collectif, rapport de la société ACA

Subramanian, Revathi. Bank Fraud: Using Technology to Combat Losses. Vol. 25. John Wiley & Sons, 2014. Richhariya, Pankaj, and Prashant K. Singh. « A survey on financial fraud detection methodologies. » International journal of computer applications 45, no. 22 (2012): 15-22.

Cédric Buron

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *