Entrenamiento y despliegue de modelos a partir de conjuntos de datos masivos: caso de uso de detección de fraudes

A medida que su negocio pasa por la transformación digital y acepta cada vez más el pago en línea, son necesarios métodos eficaces para detectar y, finalmente, prevenir el fraude con tarjetas de crédito para evitar pérdidas.Puesto que se espera que el fraude represente una pequeña fracción de todas las transacciones, se suelen necesitar grandes cantidades de datos para crear un modelo sólido y preciso capaz de alertar del fraude con falsos positivos mínimos.

Arquitectura

En esta arquitectura se destaca cómo puede aprovechar los servicios de Oracle Cloud Infrastructure para explorar conjuntos de datos, crear un modelo y formar tal modelo en terabytes o petabytes de datos. Puede utilizar el modelo entrenado para realizar inferencias por lotes como trabajo o desplegarse como punto final de REST de inferencia en tiempo real. La arquitectura tiene tres fases principales: Recopilar, analizar y actuar.

El siguiente diagrama ilustra esta arquitectura de referencia.

A continuación se muestra la descripción de cc-fraud-detection-architecture.png
Descripción de la ilustración cc-fraud-detection-architecture.png

cc-fraud-detection-architecture-oracle.zip

La arquitectura tiene los siguientes componentes:

  • Recopilar

    La fase de recopilación tiene los siguientes componentes:

    • Dispositivos, sensores y entradas que generan los datos. En el caso de uso de la detección del fraude, los datos proceden de sistemas de punto de venta (POS).
    • La ingesta en tiempo real recibe puntos de datos a medida que se producen y puede estar en cola en un flujo mediante el servicio de flujo, que está conectado a un despliegue de modelo, o bien una aplicación puede llamar al servidor de inferencias directamente a través de una API. Los datos históricos y en tiempo real se concilian en un almacén de datos (almacenamiento en la nube o base de datos).
    • Los datos históricos adquiridos a través de los medios anteriores normalmente se almacenan en una base de datos o en el almacenamiento de objetos.
    • El almacenamiento en la nube se puede utilizar para almacenar temporalmente conjuntos de datos para la exploración y el entrenamiento de modelos.
    • Los servicios de ingesta, como el servicio Oracle Cloud Infrastructure Data Integration u Oracle GoldenGate, también pueden enlazar y transportar datos externos, como juegos de datos que residen en almacenes de datos locales o de terceros.
  • Analizar
    • Exploración, análisis y diseño de un modelo

      En la fase de exploración, los científicos de datos extraen un subconjunto representativo del conjunto de datos que puede encajar en la memoria y aprender de él para diseñar funciones significativas para la tarea en cuestión. Como alternativa, los científicos de datos pueden ejecutar aplicaciones de Oracle Cloud Infrastructure Data Flow desde Oracle Cloud Infrastructure Data Science para extraer un juego de datos representativo. Para la detección de fraudes, los datos suelen incluir información sobre el cliente (por ejemplo, número de cuenta, dirección, sexo, fecha de nacimiento) y la transacción (fecha, hora, comerciante, ubicación de comerciante) de la que se pueden derivar otras funciones, como la hora del día, la edad, la distancia al comerciante, la población de la ciudad del cliente, etc.

      Una vez diseñadas las características significativas, puede probar varios modelos para encontrar al candidato más preciso. Esto implica utilizar un juego de datos de ejemplo para entrenar y evaluar el modelo a pequeña escala, en la memoria. Si eso no es posible, los científicos de datos pueden crear y ejecutar aplicaciones de Data Flow desde Oracle Cloud Infrastructure Data Science para entrenar modelos a gran escala

    • Formación del modelo

      Puede utilizar el motor de procesamiento distribuido de Apache Spark que alimenta el servicio Oracle Cloud Infrastructure Data Flow para entrenar el modelo seleccionado a escala en un juego de datos que no se ajuste a la memoria (terabytes o incluso petabytes).

      Data Flow se encarga de aprovisionar nodos de controlador y ejecutor con unidades seleccionadas para gestionar la cantidad de datos de entrenamiento y se puede ampliar automáticamente según sea necesario.

    • Almacenamiento de artefactos de modelo

      El modelo entrenado se serializa y exporta al almacenamiento de objetos. Puede cargar el artefacto para la inferencia por lotes o utilizarlo para desplegar el modelo para la inferencia en tiempo real.

    • Catálogo de modelos

      El catálogo de modelos de Oracle Cloud Infrastructure almacena el código y los artefactos del modelo, y puede agregar metadatos relacionados con la procedencia y la taxonomía que permiten realizar introspecciones y definir esquemas de entrada y salida. El catálogo de modelos es el origen de los despliegues de modelos.

  • Acción
    • Inferencia de lote

      Puede utilizar la inferencia por lotes para evaluar eventos pasados según un programa o para auditar el rendimiento y el cambio del modelo de manera regular. La inferencia por lotes se realiza a escala mediante el servicio Oracle Cloud Infrastructure Data Flow. Puede crear aplicaciones de Data Flow de puntuación o inferencia directamente desde el bloc de notas de Oracle Cloud Infrastructure Data Science mediante los artefactos de código y modelo almacenados en Object Storage.

    • Inferencia en tiempo real

      Utilice un despliegue de modelo para realizar inferencias en lotes únicos o pequeños de eventos que caben en la memoria. Al igual que las aplicaciones de Data Flow, puede crear y almacenar modelos en el catálogo de modelos directamente desde el bloc de notas de Data Science. A continuación, se puede inferir en un flujo de datos en tiempo real o de forma síncrona mediante una llamada de API directa desde la aplicación.

    • Orquestación y programación

      Al trabajar con lotes, suele ser útil ejecutar los trabajos en un programa o en un disparador. Puede utilizar el servicio Integración de datos de Oracle Cloud Infrastructure para realizar este tipo de orquestación. El servicio puede disparar y controlar las tareas de ingestión, las transformaciones y disparar trabajos de formación, puntuación o inferencia.

Puede utilizar un patrón similar con otros casos de uso que requieran juegos de datos muy grandes, como:

  • Mantenimiento predictivo

    El mantenimiento predictivo consiste en evitar costos y minimizar las interrupciones operativas que aumentan los gastos, como programar turnos adicionales, pagar horas extra, acelerar el flete y otros costos.

  • Producción de energía

    La predicción del rendimiento de explotaciones energéticas alternativas, como la eólica o la solar, requiere una gran cantidad de datos, incluidos los patrones meteorológicos locales y la producción pasada.

  • Smart Manufacturing e Internet of Things (IoT)

    La fabricación inteligente implica encontrar formas de mejorar la eficiencia operativa para aumentar los ingresos y los beneficios. Esto suele requerir la ingestión de datos de cientos a millones de sensores para predecir la rentabilidad, los cuellos de botella o los productos de rastreo para analizar los impactos, lo que aumenta el rendimiento y la salida.

  • Procesamiento de reclamaciones de seguro médico

    El fraude es también un problema prevalente en las reclamaciones de seguro de salud. La determinación automática de la integridad de envío es una parte fundamental de la eficiencia del proceso.

  • Análisis y logística de medicamentos recetados

    Predecir qué tipos de medicamentos con receta son necesarios en un lugar es un problema complejo que solo pueden ayudar a resolver grandes cantidades de datos.

  • Diagnóstico de estado

    El diagnóstico de salud se realiza con frecuencia con técnicas de imagen como rayos X o RM. El aprendizaje automático ha demostrado ser muy útil, y a veces mejor que los humanos, para predecir enfermedades. Este tipo de aplicación requiere juegos de datos muy grandes de imágenes que son voluminosas debido a su naturaleza multidimensional.

Recomendaciones

Utilice las siguientes recomendaciones como punto de partida.Sus requisitos pueden diferir de la arquitectura descrita aquí.
  • Gateway

    El gateway puede ser un hub personalizado diseñado para una recopilación de datos específica. También puede ser una base de datos como Oracle Autonomous Data Warehouse, Oracle NoSQL Database Cloud Service o alguna otra base de datos.

  • Transporte

    Utilice Oracle Cloud Infrastructure Data Integration para migrar todos los datos históricos fuera de línea a Oracle Cloud Infrastructure Object Storage. Una vez que los datos se transfieren al almacenamiento de objetos, todos los servicios de Oracle Cloud Infrastructure (OCI) pueden acceder a los datos. También puede utilizar Oracle GoldenGate para mover datos de bases de datos locales.

  • Flujo

    Utilice Oracle Cloud Infrastructure Streaming para la ingestión en tiempo real de eventos y datos que se consumen o se almacenan en Oracle Cloud Infrastructure Object Storage.

  • Almacenamiento de Datos
    • Object Storage

      Oracle Cloud Infrastructure Object Storage es el almacenamiento por defecto en esta arquitectura. El almacenamiento de todos los datos estructurados, semiestructurados y no estructurados en almacenamiento de objetos es la solución más rentable.

    • Base de Datos

      Utilice Oracle Autonomous Data Warehouse, Oracle MySQL Database Service u otras bases de datos SQL y NoSQL para almacenar datos a los que se debe acceder para análisis e informes. Normalmente, solo los datos depurados y procesados residen en la base de datos, mientras que los datos raw y a los que se accede con menor frecuencia, se almacenan de forma más eficaz en el almacenamiento de objetos.

    • Almacén de Datos de HDFS

      Oracle Big Data Cloud Service ofrece una forma de almacenar una gran cantidad de datos en HDFS (Hadoop Distributed File System). Esta opción es útil si su organización ya aprovecha o está migrando otras aplicaciones basadas en Hadoop. Oracle ofrece un conector HDFS a Oracle Cloud Infrastructure Object Storage, que es la plataforma de almacenamiento recomendada.

  • Data Science

    Oracle Cloud Infrastructure Data Science ofrece un entorno de desarrollo familiar para los científicos de datos en forma de un laboratorio de Jupyter alojado y varios entornos basados en conda entre los que elegir.

    El servicio Data Science soporta la biblioteca Oracle Advanced Data Science (ADS) que facilita la creación y almacenamiento de modelos de aprendizaje automático en el catálogo de modelos, y el despliegue de modelos a través del despliegue de modelos.

    La interfaz de Jupyter Lab combinada con el entorno de conda de Apache Spark preempaquetado facilita la exploración y el diseño de modelos basados en Spark en juegos de datos en memoria y, a continuación, los despliega como aplicaciones de Oracle Cloud Infrastructure Data Flow para ejecutar la formación o la inferencia por lotes, o como despliegues de modelos para inferencias en tiempo real o en memoria.

  • Procesamiento de datos distribuidos

    Oracle Cloud Infrastructure Data Flow ofrece el motor de procesamiento distribuido de Apache Spark como servicio, capaz de ejecutar trabajos de procesamiento en terabytes o incluso petabytes de datos.

    Las aplicaciones de Spark desarrolladas en el servicio Data Science se transfieren fácilmente a las aplicaciones de Data Flow gracias a las utilidades de biblioteca de Oracle ADS y se pueden configurar para ejecutarse en cualquier unidad, a cualquier escala.

Consideraciones

Al crear y entrenar modelos en conjuntos de datos masivos, tenga en cuenta los siguientes puntos. Algunos son específicos del caso de uso de detección de fraudes, pero la mayoría se puede interpolar a cualquier proceso de diseño de modelos.

  • Recopilación de datos

    Al crear cualquier modelo de aprendizaje automático, los datos son de gran importancia: los datos de calidad en cantidad suficiente son fundamentales. En el código de muestra de detección de fraude, utilizamos datos de transacciones sintéticas con etiquetas, generados mediante perfiles de usuario que son las mejores conjeturas. En un escenario real, las transacciones a menudo no se etiquetarán y es posible que los casos de fraude no se detecten o incluso se conozcan, y mucho menos se etiqueten, por lo que la creación de un juego de datos adecuado es el primer desafío a abordar.

  • Cantidad de datos

    Cuántos datos se necesitan siempre es una pregunta difícil de responder. Como regla general, cuantas más características estén presentes, más datos se necesitan. En algunos casos, la reducción del número de funciones ayuda a mejorar el rendimiento del modelo y evitar la adaptación excesiva; sin embargo, en muchos casos, se necesitan más datos para mejorar el rendimiento del modelo.

    Si los datos caben en la memoria, suele ser más eficaz seleccionar una unidad de computación con suficiente memoria para entrenar en un solo nodo, que trabajar con un marco de procesamiento distribuido como Apache Spark (o Oracle Cloud Infrastructure Data Flow, su equivalente gestionado).

  • Almacenamiento de Datos

    Los datos raw suelen ser voluminosos y no son directamente útiles para el análisis. Es importante mantener los datos no procesados, pero rara vez se utilizan para entrenar o volver a entrenar modelos, por lo que se almacenan mejor en una solución rentable como Oracle Cloud Infrastructure Object Storage.

    Los datos agregados, las predicciones o, de forma más general, los datos que se utilizan para el análisis y la generación de informes deben estar activos y se almacenan mejor en una base de datos. Los datos voluminosos y necesarios para los análisis pueden beneficiarse de soluciones de almacenamiento distribuido, como HDFS y Oracle Big Data Cloud Service.

  • Ingeniería de funciones y aumento de datos

    Los datos raw incrustados a menudo no tienen suficiente información o tienen el formato incorrecto, y es necesario realizar ingeniería de las funciones. Por ejemplo, es posible que desee utilizar la edad del cliente en lugar de la fecha de nacimiento. El texto categórico, que la mayoría de los modelos de aprendizaje automático no entiende fácilmente, puede codificarse como números con una StringIndexer o más a menudo con una codificación en caliente de 1. Esto funciona bien cuando no es probable que cambien los datos categóricos, como la codificación de género. Sin embargo, si puede cambiar con el tiempo, el uso de estas técnicas requerirá que el modelo se vuelva a entrenar cuando entren nuevos valores, lo que está lejos de ser ideal. En este caso, puede ser necesario encontrar una mejor manera de codificar estos datos.

    En el ejemplo de código de detección de fraude, utilizamos la longitud y latitud ya generadas a partir del conjunto de datos sintéticos como proxy para la dirección del cliente. Es probable que esta información no esté disponiblefácilmente desde la fuente del dispositivo y requiera el aumento dedatos. Al llamar a un servicio de geocodificación externo para convertir una dirección en coordenadas geográficas, ya sea durante la ingestión de datos o como paso de preprocesamiento, se proporcionará la información necesaria.

  • Exploración de datos

    La exploración de datos se realiza normalmente en un juego de datos de ejemplo representativo que se ajusta a la memoria. Si no hay una forma sencilla de determinar que el juego de datos de ejemplo es realmente representativo del juego de datos completo y que el juego de datos completo es demasiado grande para caber en la memoria, utilice Oracle Cloud Infrastructure Data Flow para crear estadísticas agregadas sobre el juego de datos y extraer un juego de datos de submuestra significativo que sea representativo del juego de datos completo. Las funciones de ingeniería de un juego de datos de ejemplo que no es representativo del juego de datos completo y, a continuación, el entrenamiento en el juego de datos completo conducirá a un modelo con un rendimiento deficiente.

  • Formación del modelo

    Es difícil ajustar Spark para una mejor eficiencia. Consulte Tamaño de la aplicación Data Flow y siga las recomendaciones para estimar el número de ejecutores y unidades de computación necesarias para ejecutar un trabajo específico.

Despliegue

El ejemplo de esta arquitectura de referencia está disponible como bloc de notas de Jupyter en GitHub.

  1. Vaya a GitHub para ver el bloc de notas de ejemplo.
  2. Siga las instrucciones del documento README.

Explorar más

Más información sobre Oracle Cloud Infrastructure Data Flow.

Revise estos recursos adicionales:

Confirmaciones

Authors: Emmanuel Leroy, Niranjan Ghadei, Nishant Patel, Alireza Dibazar