Entrenamiento y despliegue de modelos a partir de conjuntos de datos masivos: caso de uso de detección de fraudes
Arquitectura
El siguiente diagrama ilustra esta arquitectura de referencia.

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.
- Exploración, análisis y diseño de un modelo
- 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.
- Inferencia de lote
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
- 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.
- Object Storage
- 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.
- Vaya a GitHub para ver el bloc de notas de ejemplo.
- Siga las instrucciones del documento
README
.
Explorar más
Más información sobre Oracle Cloud Infrastructure Data Flow.
Revise estos recursos adicionales:
- Documentación de Oracle Cloud Infrastructure Data Flow.
La página inicial incluye enlaces a documentos de API, SDK, foros de la comunidad y Oracle Support.
- Tamaño de la aplicación de flujo de datos
- Marco de mejores prácticas para Oracle Cloud Infrastructure