Menu
CoddyTech

Rilevamento delle frodi con carte

Fa parte della sezione Apprendimento non supervisionato del percorso Machine Learning di Coddy. Lezione 49 di 51.

Il team carte di credito di una cooperativa di credito può controllare a mano solo pochi pagamenti al giorno. Il mese scorso, le frodi si sono nascoste ai margini:

I 300 pagamenti con carta del mese scorso, con le ore del giorno sull’asse orizzontale e gli importi sull’asse verticale in scala logaritmica: i pagamenti legittimi in grigio riempiono la fascia centrale diurna, le croci rosse indicano 12 frodi segnalate, alcune di importo esiguo di notte e altre di importo molto elevato a qualsiasi ora

Ma nessuno sa che si tratta di una frode finché un cliente non si lamenta, settimane dopo. Quindi due rilevatori devono individuare i pagamenti anomali senza etichette.

Le segnalazioni di questa settimana sono arrivate. Quale rilevatore ne avrebbe individuate di più?

challenge icon

Sfida

Difficile

I 400 pagamenti di questa settimana sono in payments.csv; il programma legge quanti il team può controllare, budget.

  1. Scala le quattro caratteristiche.
  2. Segnala budget pagamenti con una foresta di isolamento (random_state=0) e con un fattore di valori anomali locali (20 vicini).
  3. Solo a questo punto apri fraud: stampa quanti ne ha individuati ciascun elenco e quanti pagamenti onesti ha fatto controllare al team.
  4. Invia al team l'elenco che ne ha individuati di più: the isolation forest's list oppure the local outlier factor's list, altrimenti either list, they tie.

Per il mese scorso e un budget di 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

Provalo tu

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

# Una riga per ogni pagamento con carta; fraud vale 1 per quelli segnalati dai clienti settimane dopo
payments = pd.read_csv("payments.csv")
features = ["amount_eur", "hour", "km_from_home", "minutes_since_last"]

# Quanti pagamenti il team può controllare manualmente
budget = int(input())

# Scrivi il tuo codice qui sotto
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Apprendimento non supervisionato

Esercitati da solo: Compilatore Python online