Ok, creemos un modelo de Machine Learning para detectar fraudes financieros.

Iniciemos con algo de data exploration

Iniciemos explorando los datos para tener un entendimiento de la información con datos clave como el tamaño del dataset, columnas, datos faltantes, outliers, etc.

El set de datos es moderadamente grande con:6362620 Filas y
11 Columnas

Definición de las columnas del dataset (copiado desde Kaggle)

Tipos de transacciones y distribución

‘PAYMENT’, ‘TRANSFER’, ‘CASH_OUT’, ‘DEBIT’, ‘CASH_IN’

Distribución por tipo de transacción (type)

Miremos cuántos fraudes tenemos.

De acuerdo a los datos, los fraudes se han presentado solamente en las transacciones tipo CASH_OUT y TRANSFER

Distribución del monto de las transacciones ( Columna amount)

Visualicemos histogramas del monto de la transacciones por tipo de transacción (type), intentando identificar algún patrón en los datos.

El histograma de los fraudes muestra igualmente que los datos se encuentran concentrados a la izquierda (asimetría positiva) y outliers en 10M.

Feature Engineering

Correlación de las features con el indicador de fraude

Veamos ahora la correlación de todas las columnas del dataset con respecto al label (isFraud), que es valor que nuestro modelo debe ser capaz de predecir.

Selección de datos para entrenamiento y pruebas

Antes de dividir el conjunto de datos en entrenamiento y pruebas, es importante buscar un método de división que sea mas eficaz para el modelo que uno puramente aleatorio. En este caso siendo que tenemos tan poco registros que indican fraudes, sería bueno que el set de datos de entrenamiento y pruebas tenga una igual proporción de filas con fraudes. Este tipo de división se llama división estratificada y para ello vamos a utilizar StratifiedShuffleSplit de scikit learn.

Fase de selección y entrenamiento del modelo

Cross validation

Con los resultados de la validación cruzada podemos notar que el desempeño del modelo ya no es tan fantástico como inicialmente pensamos. Anteriormente la precision era del 100% y el recall del 99%, ahora podemos notar que el F1 es en promedio del 85%, un valor que sin embargo no es tan malo, al contrario muy bueno para tener un modelo con el que iniciar.

Evaluando el modelo con lo datos de test

Refinemos el modelo

Luego del proceso, queda ahora que las muestras con fraudes representan el 6% del total. Como estamos aumentando el numero de muestras del set de datos original, debemos nuevamente ejecutar los pasos de feature engineering.

Tenemos un nuevo dataset, así que entrenemos nuevamente el modelo y miremos las métricas

Sorprendente! F1 ahora es 0.99. Nuestro modelo parece lucir después que hemos lidiado con el desbalance de muestras con fraudes!

Evaluando el nuevo modelo con lo datos de test

Consideraciones

Thanks to Lifeth Álvarez

Resume analysis with GPT-3.

Hi, thanks for being here. I suppose that if you are reading this article, you might have already heard about GPT-3, the powerful AI created by OpenAi. I will not be entering into much detail about GPT-3’s history and capabilities because I think there are already many excellent introductory articles about this fantastic AI on the web.

Read More »