Blog de Amazon Web Services (AWS)

Detección de fraude con alta precisión usando servicios administrados de machine learning en AWS

Por René Martínez Bravet, Sr Solutions Architect de AWS

 

¿Su organización ha enfrentado problemas en la implantación de un modelo de prevención de fraude en tiempo real? ¿Han tenido desafíos escalando la solución o manteniendo el modelo con una precisión aceptable?

El fraude en transacciones en línea se vuelve cada vez más difícil de detectar, debido a que los delincuentes han ido sofisticando sus ataques y los mecanismos de detección de fraudes tradicionales van perdiendo efectividad.

Un estudio de este año de PwC a más de 5000 instituciones a lo largo de 99 territorios, indicó que las perdidas reportadas por fraude ascendieron a 42 billones de dólares en los últimos dos años. El 13% de esas compañías tuvieron pérdidas por más de 50 millones y solamente el 56% realizó una investigación sobre su incidente más crítico.

Otro estudio similar de mayo del 2020, pero en esta ocasión de J.P.Morgan, reveló que el 81% de las instituciones financieras encuestadas fueron víctimas de fraude en el último año. Los medios de fraudes más comunes fueron comprometimiento de correos corporativos con un 42% y fraude en pagos automatizados con un 37%.

En esta publicación abordaremos cómo implementar una solución de detección de fraude en tiempo real totalmente administrada, escalable y adaptable a las necesidades particulares de cada cliente. Veremos cómo para un data set de ejemplo es posible detectar fraude con una efectividad cercana al 90% y soportar más de 160 transacciones por segundo (TPS).

 

¿Qué alternativas tecnológicas ofrece AWS para ayudar a sus clientes en la lucha contra el fraude electrónico?

Se compararán dos. La primera, estilo hágalo uno mismo, es recomendable para clientes que posean capacidades de machine learning y análisis de datos, mientras que la segunda provee una capa de abstracción mayor que simplifica su implementación sin requerir este tipo de capacidades.

A continuación, veremos las características de cada alternativa y lo necesario para su implementación. Para hacer una comparación precisa entre ambos enfoques, se usó exactamente el mismo conjunto de entrenamiento público: transacciones de tarjetas de crédito de bancos europeos provenientes de un estudio colaborativo entre Worldline y el MLG (Machine Learning Group).

Como se ve a continuación, el dataset de entrenamiento consiste en una muestra de 284807 transacciones, de las cuales 492 están etiquetadas como fraude. Se dejó fuera el 10% del total de cada clase del conjunto para utilizarlo en la obtención de las métricas de cada alternativa analizada.

nonfrauds, frauds = data.groupby(‘Class’).size()
print(‘Number of frauds: ’, frauds)
print(‘Number of non-frauds: ’, nonfrauds)
print(‘Percentage of fradulent data:’, 100.*frauds/(frauds + nonfrauds))

Number of frauds:  492
Number of non-frauds:  284315
Percentage of fradulent data: 0.1727485630620034

 

Variante usando la solución.

Las soluciones de AWS son implementaciones de referencia creadas y examinadas por arquitectos y partners de AWS. Son diseñadas para ayudar a los clientes a resolver potenciales problemas que enfrentan comúnmente.

La solución oficial de detección de fraude utiliza aprendizaje automático (machine learning) mediante el servicio administrado Amazon SageMaker y entrega una precisión excelente, por encima de 90%. Para su implementación se debe hacer una inspección de los datos de entrenamiento, identificación de las características (features), normalización, análisis de componentes principales y finalmente identificar/seleccionar el algoritmo que ofrezca mejor rendimiento. En este caso, el conjunto de entrenamiento tiene realizado el pre-procesamiento de antemano y el resto de los pasos vienen implementados en el notebook provisto por la solución.

Acá vemos las métricas más relevantes de la solución, utilizando como datos de prueba el 10% mencionado anteriormente y considerando como fraude un puntaje del modelo de por encima de 0.5. De los 46 fraudes, la solución detectó 37, clasificó como fraude 3 transacciones no fraudulentas (falsos positivos) y clasificó como no-fraude 9 transacciones fraudulentas (falsos negativos).

 

Matriz de confusión del modelo de la solución oficial.

 

Nota aclaratoria: Por ley de grandes números, el TPR y FPR pueden converger hacia una “probabilidad”, pero el valor calculado es solo una “proporción” o un “porcentaje”.

TPR (tasa de verdaderos positivos): 37/46*100 = 80.4%. Probabilidad de capturar un fraude.

FPR (tasa de falsos positivos): 3/28435*100 = 0.01%. Probabilidad de marcar como fraude una transacción que no lo fue realmente.

Precisión balanceada: 0.902. Promedio entre las tasas de verdaderos positivos y verdaderos negativos.

# sagemaker model balanced accuracy for 0.5 threshold
y_preds = np.where(raw_preds > 0.5, 1, 0)
print("Balanced accuracy = {}".format(balanced_accuracy_score(y_test, y_preds)))

Balanced accuracy = 0.9021211611532022

Reporte de clasificación. Sensibilidad (recall): proporción de predicciones correctas de cada clase. Valor-F (f1-score): promedio balanceado entre la precisión y la sensibilidad.

print(classification_report(y_test, y_preds, target_names=["non-fraud", "fraud"]))

              precision    recall  f1-score   support

   non-fraud       1.00      1.00      1.00     28435
       fraud       0.93      0.80      0.86        46

    accuracy                           1.00     28481
   macro avg       0.96      0.90      0.93     28481
weighted avg       1.00      1.00      1.00     28481

Variante usando el servicio.

El servicio de AWS que ofrece estas capacidades es Amazon Fraud Detector, el cual se encuentra disponible de forma general desde el 28 de julio del presente año. En este caso no es necesario realizar ningún tipo de pre procesamiento de los datos, basta con etiquetar los fraudes dentro del conjunto de datos de transacciones de cada cliente y el servicio se encarga automáticamente de todas las tareas mencionadas en la solución anterior. Esto no implica que este modelo sea menos preciso, más bien lo contrario, como demostramos más adelante.

Una funcionalidad importante de Amazon Fraud Detector, es que permite definir reglas de salida del detector de forma visual, y utilizando las mismas variables de entrada del modelo, lo que permite extrapolar al servicio las reglas de negocio actual de cada cliente, y combinarlas con el puntaje de probabilidad de fraude que responda el modelo de machine learning.

Por ejemplo, como pueden ver en la siguiente, la primera regla te permite condicionar el resultado de detección del fraude al monto de la transacción, canal de la transacción y el score del modelo. Eso quiere decir, si el monto es menor a 1.000.000 el resultado de la detección es negativo.

Motor de reglas personalizable.

 

También permite combinar el resultado de varios modelos en cada transacción, modelos que pueden ser tanto de SageMaker como de Fraud Detector, y considerar todas sus puntuaciones en las reglas de salida general del detector; esto ocurre en cuestión de milisegundos de tal forma que sea factible integrarlo en un flujo de aprobación en línea. Luego de ejecutar varias pruebas comprobamos que el servicio entrega 160 TPS fuera de la caja.

 

Combinación de múltiples modelos en el mismo detector

 

Se recolectaron exactamente las mismas métricas para el modelo generado por el servicio Amazon Fraud Detector, con el mismo conjunto de datos de entrenamiento y mismas condiciones que para la solución basada en Amazon SageMaker. De los 46 fraudes, el servicio detectó 42, clasificó como fraude 401 transacciones no fraudulentas (falsos positivos) y clasificó como no-fraude 4 transacciones fraudulentas (falsos negativos).

 

Matriz de confusión del modelo del servicio.

TPR (tasa de verdaderos positivos): 42/46*100 = 91.3%. Probabilidad de capturar un fraude.

FPR (tasa de falsos positivos): 401/28435*100 = 1.41%. Probabilidad de marcar como fraude una transacción que no lo fue realmente.

Precisión balanceada: 0.949. Promedio entre las tasas de verdaderos positivos y verdaderos negativos.

# fraud detector model balanced accuracy for 0.9 threshold
afd_preds = np.where(p_data > 950, 1, 0)
print("Balanced accuracy = {}".format(balanced_accuracy_score(y_test, afd_preds)))

Balanced accuracy = 0.949470569796867

Reporte de clasificación. Sensibilidad (recall): proporción de predicciones correctas de cada clase. Valor-F (f1-score): promedio balanceado entre la precisión y la sensibilidad.

print(classification_report(y_test, afd_preds, target_names=["non-fraud", "fraud"]))

              precision    recall  f1-score   support

   non-fraud       1.00      0.99      0.99     28435
       fraud       0.09      0.91      0.17        46

    accuracy                           0.99     28481
   macro avg       0.55      0.95      0.58     28481
weighted avg       1.00      0.99      0.99     28481

Al ser un servicio administrado, Amazon Fraud Detector entrega sus propias métricas directamente en la interfaz de usuario de la consola, tales como: la matriz de confusión, la curva ROC (Característica Operativa del Receptor) y el área bajo la curva.

Matriz de confusión y distribución de puntajes en la consola de Amazon Fraud Detector.

Área bajo la curva del modelo del servicio.

 

Tabla comparativa de las métricas más relevantes de las alternativas analizadas.

  TPR FPR Precisión Balanceada
Solución Oficial de AWS 80.4 0.01 0.90
Servicio Amazon Fraud Detector 91.3 1.41 0.94

La diferencia entre las métricas entregadas por el servicio y las que se obtienen en el notebook, se debe a que el servicio utiliza 100.000 elementos de prueba y un puntaje (score) de 500, sacrificando la tasa de falsos positivos en 13.6% pero aumentando significativamente la de la verdaderos positivos hasta 97.1%. Estos nuevos parámetros pueden tener sentido si para el negocio es mucho mas riesgoso dejar pasar un fraude que detener una transacción sospechosa que no era fraudulenta. De todas maneras, nuestros clientes tienen total libertad para escribir las reglas utilizando los puntajes que prefieran y combinarlos con otras variables como vimos anteriormente.

 

Conclusiones

El fraude es, y será, algo con lo que debemos lidiar todo el tiempo, es por ello que los líderes de gestión de riesgos y seguridad están constantemente buscando mejorar sus procesos de detección. En esta publicación vimos como implementar un sistema de detección de fraude en AWS, que se ajuste a las características y capacidades de cada cliente y capaz de alcanzar el rendimiento y precisión de una solución avanzada implementada a la medida. ¿Qué podrían ganar nuestros los clientes al utilizar este sistema? Supongamos, de forma hipotética, que pertenecemos al 13% de las compañías del estudio de PwC que sufrieron pérdidas por más de $50M en los últimos dos años. Si hubiéramos sido capaces de detectar y prevenir el fraude en el 91,3% (precisión del modelo), hubiera significado un ahorro de $45.6M, esto sin cuantificar el costo en recursos de la tarea de remediación y más importante aún, el malestar ocasionado al cliente afectado.

 

Próximos pasos

Entregamos el código fuente con la implementación de las acciones que se deben ejecutar para quienes quieran reproducir los resultados mostrados en la presente publicación; o incluso, probar Amazon Fraud Detector con datos propios y ver qué precisión le entrega el modelo obtenido.

La guía con el “paso a paso” para la ejecución de cada alternativa y una combinación de ambas, se encuentran implementadas en 3 notebooks de Jupyter que se despliegan de forma automática al lanzar el siguiente stack de AWS CloudFormation.

Region Stack
US East (N. Virginia)
US West (Oregon)

Podrá encontrar más detalles en el proyecto original en el siguiente vínculo o puede comunicarse con nuestro equipo a través del chat en línea.

 


Sobre el autor

Rene Martínez es arquitecto de soluciones senior en AWS con 13 años de experiencia profesional en el rubro TI y más de 5 con tecnologías de nube específicamente. En su rol actual apoya a los clientes a encontrar las mejores arquitecturas y soluciones para sus necesidades, en especial, clientes del segmento Enterprise e industria financiera.

 

 

 

Sobre los revisores

Rodrigo Alarcón es arquitecto de soluciones senior en AWS. En su rol, ayuda a empresas de distinto tamaño a generar valor para su negocio mediante tecnologías de computación en la nube. Sus intereses incluyen Machine Learning y ciberseguridad. Se ha desempeñado por más de 10 años como profesional de tecnologías de la información, con foco en ciberseguridad e infraestructura de redes.

 

 

 

David Ugarte es arquitecto de soluciones senior en AWS. En su rol, ayuda a diversas empresas a lograr beneficios de negocio mediante el uso tecnologías de computo en la nube. Su principal objetivo es que sus clientes encuentren la forma más simple y costo efectiva de lograr sus resultados de negocio. Su mayor interés es en serverless y contenedores. Se ha desempeñado por más de 14 años como profesional de tecnologías de la información, atendiendo a empresas de diversos tamaños e industrias.