Menu
CoddyTech

Vigilancia del fraude con tarjetas

Parte de la sección Aprendizaje no supervisado del Journey de Machine Learning de Coddy. Lección 49 de 51.

El equipo de tarjetas de una cooperativa de crédito solo puede revisar a mano unos pocos pagos al día. El mes pasado, los fraudes se ocultaron en los extremos:

Los 300 pagos con tarjeta del mes pasado, la hora del día en el eje horizontal y el importe en el eje vertical en una escala logarítmica: los pagos legítimos en gris llenan la zona central diurna, las cruces rojas señalan 12 fraudes denunciados, unos pequeños por la noche y otros muy grandes a cualquier hora

Pero nadie sabe que se trata de un fraude hasta que un cliente se queja, semanas después. Así que dos detectores deben encontrar los pagos sospechosos sin ninguna etiqueta.

Ya llegaron las quejas de esta semana. ¿Qué detector habría detectado más?

challenge icon

Desafío

Difícil

Los 400 pagos de esta semana están en payments.csv; el programa lee cuántos puede revisar el equipo, budget.

  1. Escala las cuatro características.
  2. Marca budget pagos con un bosque de aislamiento (random_state=0) y con un factor de valores atípicos locales (20 vecinos).
  3. Solo ahora consulta fraud: imprime lo que detectó cada lista y cuántos pagos legítimos tuvo que revisar el equipo.
  4. Envía al equipo la lista que detectó más: the isolation forest's list o the local outlier factor's list; si no, either list, they tie.

Para el mes pasado y un presupuesto 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

Pruébalo tú mismo

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

# Una fila por cada pago con tarjeta; fraud es 1 para los pagos que los clientes denunciaron semanas después
payments = pd.read_csv("payments.csv")
features = ["amount_eur", "hour", "km_from_home", "minutes_since_last"]

# Cuántos pagos puede revisar el equipo manualmente
budget = int(input())

# Escribe tu código a continuación
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Aprendizaje no supervisado

Practica por tu cuenta: Compilador de Python online