Menu
CoddyTech

Surveillance des fraudes bancaires

Fait partie de la section Apprentissage non supervisé du Journey Machine Learning de Coddy. Leçon 49 sur 51.

L’équipe cartes d’une coopérative de crédit ne peut vérifier manuellement que quelques paiements par jour. Le mois dernier, les fraudes se sont cachées dans les extrêmes :

Les 300 paiements par carte du mois dernier, l’heure de la journée en abscisse et le montant en ordonnée sur une échelle logarithmique : les paiements honnêtes en gris occupent le milieu de la journée, des croix rouges indiquent 12 fraudes signalées, de très petits montants la nuit et de très gros montants à toute heure

Mais personne ne sait qu’il s’agit d’une fraude avant qu’un client ne se plaigne, des semaines plus tard. Deux détecteurs doivent donc repérer les paiements inhabituels sans aucune étiquette.

Les réclamations de cette semaine sont arrivées. Quel détecteur en aurait détecté le plus ?

challenge icon

Défi

Difficile

Les 400 paiements de cette semaine se trouvent dans payments.csv ; le programme lit le nombre de paiements que l’équipe peut vérifier, budget.

  1. Normalise les quatre caractéristiques.
  2. Signale budget paiements avec une forêt d’isolation (random_state=0) et avec un facteur de valeurs aberrantes locales (20 voisins).
  3. Ce n’est qu’ensuite que tu ouvres fraud : affiche combien de paiements chaque liste a détectés, et combien de paiements honnêtes l’équipe a dû vérifier.
  4. Envoie à l’équipe la liste qui en a détecté le plus : the isolation forest's list ou the local outlier factor's list, sinon either list, they tie.

Pour le mois dernier et un budget de 10 :

Budget: 10 of 300 payments
Isolation forest: caught 6 of 12 frauds, 4 honest payments checked
Local outlier factor: caught 10 of 12 frauds, 0 honest payments checked
Send the team: the local outlier factor's list

Essayez vous-même

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import IsolationForest
from sklearn.neighbors import LocalOutlierFactor

# Une ligne par paiement par carte ; fraud vaut 1 pour ceux que les clients ont signalés plusieurs semaines plus tard
payments = pd.read_csv("payments.csv")
features = ["amount_eur", "hour", "km_from_home", "minutes_since_last"]

# Nombre de paiements que l’équipe peut vérifier manuellement
budget = int(input())

# Écrivez votre code ci-dessous
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Apprentissage non supervisé

Entraînez-vous par vous-même : Compilateur Python en ligne