Detecte transacciones fraudulentas mediante el aprendizaje automático con Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Detecte transacciones fraudulentas mediante el aprendizaje automático con Amazon SageMaker

Las empresas pueden perder miles de millones de dólares cada año debido a usuarios malintencionados y transacciones fraudulentas. A medida que más y más operaciones comerciales se mueven en línea, el fraude y los abusos en los sistemas en línea también van en aumento. Para combatir el fraude en línea, muchas empresas han estado utilizando sistemas de detección de fraude basados ​​en reglas.

Sin embargo, los sistemas tradicionales de detección de fraude se basan en un conjunto de reglas y filtros hechos a mano por especialistas humanos. Los filtros a menudo pueden ser frágiles y es posible que las reglas no capturen el espectro completo de señales fraudulentas. Además, si bien los comportamientos fraudulentos están en constante evolución, la naturaleza estática de las reglas y filtros predefinidos dificulta el mantenimiento y la mejora de los sistemas tradicionales de detección de fraude de manera efectiva.

En esta publicación, le mostramos cómo crear un sistema de detección de fraude de tarjetas de crédito dinámico, automejorable y mantenible con aprendizaje automático (ML) utilizando Amazon SageMaker.

Alternativamente, si está buscando un servicio completamente administrado para crear modelos de detección de fraude personalizados sin escribir código, le recomendamos que consulte Detector de fraudes de Amazon. Amazon Fraud Detector permite a los clientes sin experiencia en ML automatizar la creación de modelos de detección de fraude personalizados para sus datos, aprovechando más de 20 años de experiencia en detección de fraude de AWS y Amazon.com.

Resumen de la solución

Esta solución crea el núcleo de un sistema de detección de fraudes con tarjetas de crédito utilizando SageMaker. Comenzamos entrenando un modelo de detección de anomalías no supervisado usando el algoritmo Bosque de corte aleatorio (RCF). Luego entrenamos dos modelos de clasificación supervisada usando el algoritmo XGBoost, uno como modelo de referencia y el otro para hacer predicciones, utilizando diferentes estrategias para abordar el desequilibrio extremo de clases en los datos. Por último, entrenamos un modelo XGBoost óptimo con optimización de hiperparámetros (HPO) para mejorar aún más el rendimiento del modelo.

Para el conjunto de datos de muestra, utilizamos las transacciones de tarjetas de crédito públicas y anónimas datos que se lanzó originalmente como parte de un la investigación colaboración de Worldline y la Grupo de Aprendizaje Automático de la ULB (Universidad Libre de Bruselas). En el tutorial, también analizamos cómo puede personalizar la solución para usar sus propios datos.

Los resultados de la solución son los siguientes:

  • un sin supervisión RCF de SageMaker modelo. El modelo genera una puntuación de anomalía para cada transacción. Un valor de puntuación bajo indica que la transacción se considera normal (no fraudulenta). Un valor alto indica que la transacción es fraudulenta. Las definiciones de bajo y alto dependen de la aplicación, pero la práctica común sugiere que las puntuaciones superiores a tres desviaciones estándar de la puntuación media se consideran anómalas.
  • un supervisado SageMaker XGBoost modelo entrenado usando su esquema de ponderación incorporado para abordar el problema de datos altamente desequilibrados.
  • Un modelo supervisado de SageMaker XGBoost entrenado con el Técnica de sobremuestreo de minorías sintéticas (SMOTO).
  • Un modelo SageMaker XGBoost entrenado con HPO.
  • Predicciones de la probabilidad de que cada transacción sea fraudulenta. Si la probabilidad estimada de una transacción supera un umbral, se clasifica como fraudulenta.

Para demostrar cómo puede usar esta solución en sus infraestructuras comerciales existentes, también incluimos un ejemplo de cómo hacer llamadas REST API al punto final del modelo implementado, usando AWS Lambda para activar los modelos RCF y XGBoost.

El siguiente diagrama ilustra la arquitectura de la solución.

Requisitos previos

Para probar la solución en su propia cuenta, asegúrese de tener lo siguiente en su lugar:

Cuando la instancia de Studio esté lista, puede iniciar Studio y acceder a JumpStart. Las soluciones JumpStart no están disponibles en instancias de notebooks de SageMaker y no puede acceder a ellas a través de las API de SageMaker o el Interfaz de línea de comandos de AWS (CLI de AWS).

Lanza la solución

Para iniciar la solución, complete los siguientes pasos:

  1. Abra JumpStart usando el lanzador de JumpStart en el Iniciar sección o eligiendo el ícono JumpStart en la barra lateral izquierda.
  2. under Soluciones, escoger Detectar usuarios y transacciones maliciosos para abrir la solución en otra pestaña de Studio.
    Encuentra la solución
  3. En la pestaña de solución, elija Más información para lanzar la solución.
    Lanza la solución
    Se aprovisionan los recursos de la solución y se abre otra pestaña que muestra el progreso de la implementación. Cuando finaliza el despliegue, aparece un cuaderno abierto Aparece el botón.
  4. Elige cuaderno abierto para abrir el cuaderno de soluciones en Studio.
    Cuaderno abierto

Investigar y procesar los datos.

El conjunto de datos predeterminado contiene solo características numéricas, porque las características originales se han transformado utilizando Análisis de Componentes Principales (PCA) para proteger la privacidad del usuario. Como resultado, el conjunto de datos contiene 28 componentes de PCA, V1–V28, y dos características que no se han transformado, Cantidad y Tiempo. Monto se refiere al monto de la transacción y Tiempo son los segundos transcurridos entre cualquier transacción en los datos y la primera transacción.

La columna Clase corresponde a si una transacción es fraudulenta o no.

Data de muestra

Podemos ver que la mayoría no son fraudulentos, ya que del total de 284,807 ejemplos, solo 492 (0.173%) son fraudulentos. Este es un caso de desequilibrio de clases extremo, que es común en los escenarios de detección de fraude.

Desequilibrio de clases de datos

Luego preparamos nuestros datos para cargarlos y entrenarlos. Dividimos los datos en un conjunto de entrenamiento y un conjunto de prueba, usando el primero para entrenar y el segundo para evaluar el rendimiento de nuestro modelo. Es importante dividir los datos antes de aplicar cualquier técnica para aliviar el desequilibrio de clases. De lo contrario, podríamos filtrar información del conjunto de prueba al conjunto de trenes y perjudicar el rendimiento del modelo.

Si desea traer sus propios datos de entrenamiento, asegúrese de que sean datos tabulares en formato CSV, cargue los datos en un Servicio de almacenamiento simple de Amazon (Amazon S3) y edite la ruta del objeto S3 en el código del cuaderno.

Ruta de datos en S3

Si sus datos incluyen columnas categóricas con valores no numéricos, debe codificar estos valores en caliente (usando, por ejemplo, OneHotEncoder de Sklearn) porque el algoritmo XGBoost solo admite datos numéricos.

Entrenar un modelo de Random Cut Forest no supervisado

En un escenario de detección de fraude, comúnmente tenemos muy pocos ejemplos etiquetados, y etiquetar el fraude puede llevar mucho tiempo y esfuerzo. Por lo tanto, también queremos extraer información de los datos no etiquetados disponibles. Hacemos esto utilizando un algoritmo de detección de anomalías, aprovechando el alto desequilibrio de datos que es común en los conjuntos de datos de detección de fraude.

La detección de anomalías es una forma de aprendizaje no supervisado en el que tratamos de identificar ejemplos anómalos basados ​​únicamente en sus características. Random Cut Forest es un algoritmo de detección de anomalías de última generación que es preciso y escalable. Con cada ejemplo de datos, RCF asocia una puntuación de anomalía.

Usamos el algoritmo RCF incorporado de SageMaker para entrenar un modelo de detección de anomalías en nuestro conjunto de datos de entrenamiento y luego hacemos predicciones en nuestro conjunto de datos de prueba.

En primer lugar, examinamos y trazamos las puntuaciones de anomalía previstas para los ejemplos positivos (fraudulentos) y negativos (no fraudulentos) por separado, porque la cantidad de ejemplos positivos y negativos difiere significativamente. Esperamos que los ejemplos positivos (fraudulentos) tengan puntajes de anomalías relativamente altos, y los negativos (no fraudulentos) tengan puntajes de anomalías bajos. De los histogramas, podemos ver los siguientes patrones:

  • Casi la mitad de los ejemplos positivos (histograma de la izquierda) tienen puntuaciones de anomalía superiores a 0.9, mientras que la mayoría de los ejemplos negativos (histograma de la derecha) tienen puntuaciones de anomalía inferiores a 0.85.
  • El algoritmo de aprendizaje no supervisado RCF tiene limitaciones para identificar con precisión ejemplos fraudulentos y no fraudulentos. Esto se debe a que no se utiliza información de la etiqueta. Abordamos este problema mediante la recopilación de información de la etiqueta y el uso de un algoritmo de aprendizaje supervisado en pasos posteriores.

Puntuaciones de anomalías previstas

Luego, asumimos un escenario más real en el que clasificamos cada ejemplo de prueba como positivo (fraudulento) o negativo (no fraudulento) en función de su puntuación de anomalía. Trazamos el histograma de puntaje para todos los ejemplos de prueba de la siguiente manera, eligiendo un puntaje de corte de 1.0 (basado en el patrón que se muestra en el histograma) para la clasificación. Específicamente, si la puntuación de anomalía de un ejemplo es inferior o igual a 1.0, se clasifica como negativo (no fraudulento). De lo contrario, el ejemplo se clasifica como positivo (fraudulento).

Histograma de puntajes para muestras de prueba

Por último, comparamos el resultado de la clasificación con las etiquetas de verdad del terreno y calculamos las métricas de evaluación. Debido a que nuestro conjunto de datos está desequilibrado, usamos las métricas de evaluación precisión equilibrada, Puntuación Kappa de Cohen, Puntuación F1y AUC de la República de China, porque tienen en cuenta la frecuencia de cada clase en los datos. Para todas estas métricas, un valor mayor indica un mejor rendimiento predictivo. Tenga en cuenta que en este paso aún no podemos calcular el ROC AUC, porque no hay una probabilidad estimada de clases positivas y negativas del modelo RCF en cada ejemplo. Calculamos esta métrica en pasos posteriores utilizando algoritmos de aprendizaje supervisado.

. RCF
Precisión equilibrada 0.560023
Kappa de Cohen 0.003917
F1 0.007082
AUC de la República de China

A partir de este paso, podemos ver que el modelo no supervisado ya puede lograr cierta separación entre las clases, con puntajes de anomalía más altos correlacionados con ejemplos fraudulentos.

Entrene un modelo XGBoost con el esquema de ponderación incorporado

Una vez que hayamos recopilado una cantidad adecuada de datos de entrenamiento etiquetados, podemos usar un algoritmo de aprendizaje supervisado para descubrir las relaciones entre las funciones y las clases. Elegimos el algoritmo XGBoost porque tiene un historial comprobado, es altamente escalable y puede manejar datos faltantes. Necesitamos manejar el desequilibrio de datos esta vez, de lo contrario, la clase mayoritaria (los ejemplos no fraudulentos o negativos) dominarán el aprendizaje.

Entrenamos e implementamos nuestro primer modelo supervisado utilizando el contenedor de algoritmos XGBoost integrado de SageMaker. Este es nuestro modelo base. Para manejar el desequilibrio de datos, usamos el hiperparámetro scale_pos_weight, que escala los pesos de los ejemplos de clase positiva frente a los ejemplos de clase negativa. Debido a que el conjunto de datos está muy sesgado, establecemos este hiperparámetro en un valor conservador: sqrt(num_nonfraud/num_fraud).

Entrenamos e implementamos el modelo de la siguiente manera:

  1. Recupere el URI del contenedor SageMaker XGBoost.
  2. Establezca los hiperparámetros que queremos usar para el entrenamiento del modelo, incluido el que mencionamos que maneja el desequilibrio de datos, scale_pos_weight.
  3. Cree un estimador XGBoost y entrénelo con nuestro conjunto de datos de tren.
  4. Implemente el modelo XGBoost capacitado en un extremo administrado de SageMaker.
  5. Evalúe este modelo de referencia con nuestro conjunto de datos de prueba.

Luego evaluamos nuestro modelo con las mismas cuatro métricas que se mencionaron en el último paso. Esta vez también podemos calcular la métrica ROC AUC.

. RCF XGBoost
Precisión equilibrada 0.560023 0.847685
Kappa de Cohen 0.003917 0.743801
F1 0.007082 0.744186
AUC de la República de China 0.983515

Podemos ver que un método de aprendizaje supervisado XGBoost con el esquema de ponderación (usando el hiperparámetro scale_pos_weight) logra un rendimiento significativamente mejor que el método de aprendizaje no supervisado RCF. Sin embargo, todavía hay margen para mejorar el rendimiento. En particular, elevar la puntuación Kappa de Cohen por encima de 0.8 sería generalmente muy favorable.

Además de las métricas de un solo valor, también es útil observar las métricas que indican el rendimiento por clase. Por ejemplo, la matriz de confusión, la precisión por clase, la recuperación y la puntuación F1 pueden proporcionar más información sobre el rendimiento de nuestro modelo.

Matriz de confusión del modelo XGBoost

. precisión recordar puntuación f1 SOPORTE
no fraude 1.00 1.00 1.00 28435
fraude 0.80 0.70 0.74 46

Siga enviando tráfico de prueba al punto final a través de Lambda

Para demostrar cómo usar nuestros modelos en un sistema de producción, construimos una API REST con Puerta de enlace API de Amazon y una función Lambda. Cuando las aplicaciones cliente envían solicitudes de inferencia HTTP a la API REST, se activa la función Lambda, que a su vez invoca los puntos finales del modelo RCF y XGBoost y devuelve las predicciones de los modelos. Puede leer el código de la función de Lambda y monitorear las invocaciones en la consola de Lambda.

También creamos un script de Python que realiza solicitudes de inferencia HTTP a la API REST, con nuestros datos de prueba como datos de entrada. Para ver cómo se hizo esto, consulte el generate_endpoint_traffic.py archivo en el código fuente de la solución. Los resultados de la predicción se registran en un depósito S3 a través de un Manguera de bomberos de datos de Amazon Kinesis flujo de entrega Puede encontrar el nombre del depósito de S3 de destino en la consola de Kinesis Data Firehose y comprobar los resultados de la predicción en el depósito de S3.

Entrena un modelo XGBoost con la técnica de sobremuestreo SMOTE

Ahora que tenemos un modelo de referencia que usa XGBoost, podemos ver si las técnicas de muestreo diseñadas específicamente para problemas de desequilibrio pueden mejorar el rendimiento del modelo. Usamos Sobremuestreo de la minoría sintética (SMOTE), que sobremuestrea la clase minoritaria interpolando nuevos puntos de datos entre los existentes.

Los pasos son los siguientes:

  1. Use SMOTE para sobremuestrear la clase minoritaria (la clase fraudulenta) de nuestro conjunto de datos de trenes. SMOTE sobremuestra la clase minoritaria de aproximadamente 0.17 a 50%. Tenga en cuenta que este es un caso de sobremuestreo extremo de la clase minoritaria. Una alternativa sería utilizar una proporción de remuestreo más pequeña, como tener una muestra de clase minoritaria para cada sqrt(non_fraud/fraud) muestra mayoritaria, o utilizando técnicas de remuestreo más avanzadas. Para obtener más opciones de sobremuestreo, consulte Comparar muestreadores de sobremuestreo.
  2. Defina los hiperparámetros para entrenar el segundo XGBoost de modo que se elimine scale_pos_weight y los demás hiperparámetros permanezcan igual que cuando entrenó el modelo XGBoost de referencia. Ya no necesitamos manejar el desequilibrio de datos con este hiperparámetro, porque ya lo hicimos con SMOTE.
  3. Entrene el segundo modelo XGBoost con los nuevos hiperparámetros en el conjunto de datos de tren procesado SMOTE.
  4. Implemente el nuevo modelo XGBoost en un extremo administrado de SageMaker.
  5. Evalúe el nuevo modelo con el conjunto de datos de prueba.

Al evaluar el nuevo modelo, podemos ver que con SMOTE, XGBoost logra un mejor rendimiento en la precisión equilibrada, pero no en los puntajes Kappa y F1 de Cohen. La razón de esto es que SMOTE ha sobremuestreado tanto la clase de fraude que ha aumentado su superposición en el espacio de funciones con los casos que no son de fraude. Debido a que el Kappa de Cohen da más peso a los falsos positivos que la precisión equilibrada, la métrica cae significativamente, al igual que la precisión y la puntuación F1 para los casos de fraude.

. RCF XGBoost SMOTE XGBoost
Precisión equilibrada 0.560023 0.847685 0.912657
Kappa de Cohen 0.003917 0.743801 0.716463
F1 0.007082 0.744186 0.716981
AUC de la República de China 0.983515 0.967497

Sin embargo, podemos recuperar el equilibrio entre las métricas ajustando el umbral de clasificación. Hasta ahora, hemos estado usando 0.5 como umbral para etiquetar si un punto de datos es fraudulento o no. Después de experimentar con diferentes umbrales de 0.1 a 0.9, podemos ver que el Kappa de Cohen sigue aumentando junto con el umbral, sin una pérdida significativa en la precisión equilibrada.

Experimente diferentes umbrales para recuperar el equilibrio entre las métricas

Esto agrega una calibración útil a nuestro modelo. Podemos usar un umbral bajo si nuestra prioridad es no perder ningún caso fraudulento (falsos negativos), o podemos aumentar el umbral para minimizar el número de falsos positivos.

Entrene un modelo XGBoost óptimo con HPO

En este paso, demostramos cómo mejorar el rendimiento del modelo entrenando nuestro tercer modelo XGBoost con optimización de hiperparámetros. Al crear sistemas de ML complejos, no es práctico explorar manualmente todas las combinaciones posibles de valores de hiperparámetros. La función HPO de SageMaker puede acelerar su productividad probando muchas variaciones de un modelo en su nombre. Busca automáticamente el mejor modelo centrándose en las combinaciones más prometedoras de valores de hiperparámetros dentro de los rangos que especifique.

El proceso HPO necesita un conjunto de datos de validación, por lo que primero dividimos nuestros datos de entrenamiento en conjuntos de datos de entrenamiento y validación usando muestreo estratificado. Para abordar el problema del desequilibrio de datos, usamos el esquema de ponderación de XGBoost nuevamente, configurando el scale_pos_weight hiperparámetro a sqrt(num_nonfraud/num_fraud).

Creamos un estimador XGBoost utilizando el contenedor de algoritmos XGBoost integrado de SageMaker y especificamos la métrica de evaluación objetiva y los rangos de hiperparámetros dentro de los cuales nos gustaría experimentar. Con estos creamos un Sintonizador de hiperparámetros e inicie el trabajo de ajuste de HPO, que entrena varios modelos en paralelo, buscando combinaciones óptimas de hiperparámetros.

Cuando se completa el trabajo de ajuste, podemos ver su informe analítico e inspeccionar los hiperparámetros de cada modelo, la información del trabajo de entrenamiento y su rendimiento en comparación con la métrica de evaluación objetiva.

Lista de la información de cada modelo del trabajo de ajuste

Luego implementamos el mejor modelo y lo evaluamos con nuestro conjunto de datos de prueba.

Evalúe y compare el rendimiento de todos los modelos con los mismos datos de prueba

Ahora tenemos los resultados de la evaluación de los cuatro modelos: RCF, XGBoost de referencia, XGBoost con SMOTE y XGBoost con HPO. Comparemos su rendimiento.

. RCF XGBoost XGBoost con SMOTE XGBoost con HPO
Precisión equilibrada 0.560023 0.847685 0.912657 0.902156
Kappa de Cohen 0.003917 0.743801 0.716463 0.880778
F1 0.007082 0.744186 0.716981 0.880952
AUC de la República de China 0.983515 0.967497 0.981564

Podemos ver que XGBoost con HPO logra un rendimiento aún mejor que con el método SMOTE. En particular, las puntuaciones Kappa de Cohen y F1 están por encima de 0.8, lo que indica un rendimiento óptimo del modelo.

Limpiar

Cuando haya terminado con esta solución, asegúrese de eliminar todos los recursos de AWS no deseados para evitar incurrir en cargos no deseados. En el Eliminar solución en la pestaña de su solución, elija Eliminar todos los recursos para eliminar los recursos creados automáticamente al iniciar esta solución.

Limpiar eliminando la solución

Alternativamente, puede utilizar Formación en la nube de AWS para eliminar todos los recursos estándar creados automáticamente por la solución y el cuaderno. Para utilizar este enfoque, en la consola de AWS CloudFormation, busque la pila de CloudFormation cuya descripción contiene detección de fraude mediante aprendizaje automático y elimínela. Esta es una pila principal, y si elige eliminar esta pila, se eliminarán automáticamente las pilas anidadas.

Limpiar a través de CloudFormation

Con cualquiera de los enfoques, aún debe eliminar manualmente cualquier recurso adicional que haya creado en este cuaderno. Algunos ejemplos incluyen depósitos de S3 adicionales (además del depósito predeterminado de la solución), puntos finales de SageMaker adicionales (con un nombre personalizado) y Registro de contenedores elásticos de Amazon (Amazon ECR) repositorios.

Conclusión

En esta publicación, le mostramos cómo crear el núcleo de un sistema de detección de fraude de tarjetas de crédito dinámico, automejorable y mantenible mediante ML con SageMaker. Creamos, capacitamos e implementamos un modelo de detección de anomalías RCF no supervisado, un modelo XGBoost supervisado como línea de base, otro modelo XGBoost supervisado con SMOTE para abordar el problema del desequilibrio de datos y un modelo XGBoost final optimizado con HPO. Discutimos cómo manejar el desequilibrio de datos y usar sus propios datos en la solución. También incluimos un ejemplo de implementación de API REST con API Gateway y Lambda para demostrar cómo usar el sistema en su infraestructura comercial existente.

Para probarlo usted mismo, abra Estudio SageMaker e inicie la solución JumpStart. Para obtener más información sobre la solución, consulte su Repositorio GitHub.


Acerca de los autores

Xiao Li ShenXiao Li Shen es un arquitecto de soluciones y miembro de la comunidad de campo técnico (TFC) de aprendizaje automático en Amazon Web Services. Se enfoca en ayudar a los clientes a diseñar en la nube y aprovechar los servicios de AWS para obtener valor comercial. Antes de unirse a AWS, fue líder de tecnología e ingeniera sénior de pila completa en la creación de sistemas distribuidos con uso intensivo de datos en la nube.

Detecte transacciones fraudulentas mediante el aprendizaje automático con Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Dra. Xin Huang es un científico aplicado para los algoritmos integrados de Amazon SageMaker JumpStart y Amazon SageMaker. Se centra en el desarrollo de algoritmos escalables de aprendizaje automático. Sus intereses de investigación se encuentran en el área del procesamiento del lenguaje natural, el aprendizaje profundo explicable en datos tabulares y el análisis sólido de la agrupación de espacio-tiempo no paramétrica. Ha publicado muchos artículos en conferencias ACL, ICDM, KDD y la revista Royal Statistical Society: Serie A.

Detecte transacciones fraudulentas mediante el aprendizaje automático con Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.jainista vedante es un Arquitecto de soluciones especialista en IA/ML sénior que ayuda a los clientes a obtener valor del ecosistema de aprendizaje automático en AWS. Antes de unirse a AWS, Vedant ocupó puestos de especialidad en ML/ciencia de datos en varias empresas, como Databricks, Hortonworks (ahora Cloudera) y JP Morgan Chase. Fuera de su trabajo, a Vedant le apasiona hacer música, usar la ciencia para llevar una vida significativa y explorar la deliciosa cocina vegetariana de todo el mundo.

Sello de tiempo:

Mas de Aprendizaje automático de AWS