Treinar e implantar modelos de conjuntos de dados em massa: caso de uso de detecção de fraude
Arquitetura
O diagrama a seguir ilustra essa arquitetura de referência.

Descrição da ilustração cc-fraud-detection-architecture.png
cc-fraude-detecção-arquitetura-oracle.zip
A arquitetura tem os seguintes componentes:
- Coletar
A fase de coleta tem os seguintes componentes:
- Dispositivos, sensores e entradas que geram os dados. No caso de uso de detecção de fraude, os dados se originam de sistemas de ponto de venda (POS)
- A Ingestão em Tempo Real recebe pontos de dados à medida que são produzidos e pode ser enfileirada em um fluxo usando o Serviço de Streaming, conectado a uma Implantação de Modelo, ou um aplicativo pode chamar o servidor de inferência diretamente por meio de uma API. Dados históricos e em tempo real são reconciliados em um armazenamento de dados (armazenamento na nuvem ou banco de dados).
- Dados Históricos adquiridos por meio dos meios acima geralmente são armazenados em um banco de dados ou no armazenamento de objetos.
- O serviço Cloud Storage pode ser usado para preparar conjuntos de dados para exploração e treinamento de modelo.
- Ingest Services, como o serviço Oracle Cloud Infrastructure Data Integration ou o Oracle GoldenGate, também pode vincular e transportar dados externos, como conjuntos de dados que residem no local ou em armazenamentos de dados de terceiros.
- Analisar
- Explore, Analise e Projete um Modelo
Na fase de exploração, os cientistas de dados extraem um subconjunto representativo do conjunto de dados que pode caber na memória e aprender com ele para desenvolver recursos que sejam significativos para a tarefa em questão. Como alternativa, os cientistas de dados podem executar aplicativos do Oracle Cloud Infrastructure Data Flow no Oracle Cloud Infrastructure Data Science para extrair um conjunto de dados representativo. Para detecção de fraudes, os dados geralmente incluem informações sobre o cliente (por exemplo, número da conta, endereço, sexo, data de nascimento) e a transação (data, hora, estabelecimento, local do estabelecimento) da qual outros recursos podem ser derivados, como hora do dia, idade, distância até o estabelecimento, população da cidade do cliente etc.
Uma vez que recursos significativos são projetados, você pode testar vários modelos para encontrar o candidato mais preciso. Isso implica o uso de um conjunto de dados de amostra para treinar e avaliar o modelo em pequena escala, na memória. Se isso não for possível, os cientistas de dados poderão criar e executar aplicativos do serviço Data Flow do Oracle Cloud Infrastructure Data Science para treinar modelos de escala maior
- Treinamento de Modelo
Você pode usar o mecanismo de processamento distribuído Apache Spark que potencializa o serviço Oracle Cloud Infrastructure Data Flow para treinar o modelo selecionado em escala em um conjunto de dados que não pode se ajustar à memória (terabytes ou até mesmo petabytes).
O serviço Data Flow cuida do provisionamento de nós de driver e executor com formas selecionadas para tratar o volume de dados de treinamento e pode dimensionar automaticamente conforme necessário.
- Armazenando Artefatos de Modelo
O modelo treinado é serializado e exportado para o armazenamento de objetos. Você pode carregar o artefato para inferência de lote ou usá-lo para implantar o modelo para inferência em tempo real.
- Catálogo de Modelos
O Oracle Cloud Infrastructure Model Catalog armazena código de modelo e artefatos e pode adicionar metadados relacionados à proveniência e à taxonomia, fornecendo capacidade de introspecção e definição de esquemas de entrada e saída. O Catálogo de Modelos é a origem das Implantações de Modelo.
- Explore, Analise e Projete um Modelo
- Atuar
- Inferência de Lote
Você pode usar a Inferência de Lote para avaliar eventos passados com base em uma programação ou para auditar o desempenho e o desvio do modelo regularmente. A Inferência de Lote é executada em escala usando o serviço Oracle Cloud Infrastructure Data Flow. Você pode criar aplicativos de pontuação ou inferência do serviço Data Flow diretamente no Notebook do Oracle Cloud Infrastructure Data Science usando o código e os artefatos de modelo armazenados no Object Storage.
- Inferência em tempo real
Use uma implantação de modelo para fazer inferência em lotes únicos ou pequenos de eventos que podem se encaixar na memória. Como os aplicativos do serviço Data Flow, você pode criar e armazenar modelos no Catálogo de Modelos diretamente no Notebook do serviço Data Science. A inferência pode então acontecer em um fluxo de dados em tempo real ou de forma síncrona por meio de uma chamada de API direta do aplicativo.
- Orquestração e Programação
Ao trabalhar com lotes, geralmente é útil executar os jobs em uma programação ou em um trigger. Você pode usar o serviço Oracle Cloud Infrastructure Data Integration para executar esse tipo de orquestração. O serviço pode acionar e controlar tarefas de ingestão, transformações e acionar trabalhos de treinamento, pontuação ou inferência.
- Inferência de Lote
Você pode usar um padrão semelhante com outros casos de uso que exigem conjuntos de dados muito grandes, como:
- Manutenção Preditiva
A manutenção preditiva consiste em evitar custos e minimizar interrupções operacionais que aumentam as despesas, como agendamento de turnos adicionais, pagamento de horas extras, expedição de frete e outros custos.
- Saída de produção de energia
Prever o rendimento de explorações de energia alternativas, como eólica ou solar, requer grandes quantidades de dados, incluindo padrões climáticos locais e produção passada.
- Smart Manufacturing e Internet of Things (IoT)
A manufatura inteligente envolve encontrar maneiras de melhorar a eficiência operacional para aumentar as receitas e os lucros. Isso normalmente exige a ingestão de dados de centenas a milhões de sensores para prever o rendimento, gargalos ou rastrear produtos para analisar impactos, aumentando assim o rendimento e a saída.
- Processamento de Reivindicação de Seguro Saúde
A fraude é também um problema prevalente nos pedidos de seguro de saúde. Determinar automaticamente a conclusão do envio é uma parte importante para tornar o processo eficiente.
- Análise e Logística de Medicamentos Prescritos
Prever quais tipos de medicamentos prescritos são necessários em um local é um problema complexo que somente grandes quantidades de dados podem ajudar a resolver.
- Diagnóstico de Integridade
O diagnóstico de saúde é muitas vezes feito com técnicas de imagem, como raios-X ou RM. O aprendizado de máquina tem se mostrado muito útil e, às vezes, melhor do que os humanos, na previsão de doenças. Esse tipo de aplicativo requer conjuntos de dados muito grandes de imagens volumosas devido à sua natureza multidimensional.
Recomendações
- Gateway
O gateway pode ser um hub personalizado projetado para coleta de dados específica. Também pode ser um banco de dados como o Oracle Autonomous Data Warehouse, o Oracle NoSQL Database Cloud Service ou algum outro banco de dados.
- Transporte
Use o Oracle Cloud Infrastructure Data Integration para migrar todos os dados históricos off-line para o Oracle Cloud Infrastructure Object Storage. Depois que os dados são transferidos para o Object Storage, todos os serviços do Oracle Cloud Infrastructure (OCI) podem acessar os dados. Você também pode usar o Oracle GoldenGate para mover dados de bancos de dados locais.
- Streaming
Use o serviço Oracle Cloud Infrastructure Streaming para ingestão em tempo real de eventos e dados que são consumidos ou armazenados no Oracle Cloud Infrastructure Object Storage.
- Armazenamento de Dados
- Object Storage
O Oracle Cloud Infrastructure Object Storage é o armazenamento padrão nessa arquitetura. O armazenamento de todos os dados estruturados, semiestruturados e não estruturados no Object Storage é a solução mais econômica.
- Banco de Dados
Use o Oracle Autonomous Data Warehouse, o Oracle MySQL Database Service ou outros bancos de dados SQL e NoSQL para armazenar dados que devem ser acessados para análise e geração de relatórios. Em geral, somente dados curados e processados residem no banco de dados, enquanto dados brutos, acessados com menos frequência, são armazenados mais eficientemente no Object Storage.
- Armazenamento de dados HDFS
O Oracle Big Data Cloud Service oferece uma forma de armazenar uma quantidade muito grande de dados no HDFS (Hadoop Distributed File System). Essa opção será útil se sua organização já utilizar ou estiver migrando outros aplicativos baseados no Hadoop. A Oracle oferece um conector HDFS para o Oracle Cloud Infrastructure Object Storage, que é a plataforma de armazenamento recomendada.
- Object Storage
- Serviço Data Science
O Oracle Cloud Infrastructure Data Science oferece um ambiente de desenvolvimento familiar aos cientistas de dados na forma de um Jupyter Lab hospedado e vários ambientes baseados em preservativo para sua escolha.
O serviço Data Science suporta a biblioteca do Oracle ADS (Advanced Data Science) que facilita a criação e o armazenamento de modelos de aprendizado de máquina no Catálogo de Modelos e a implantação de modelos por meio da Implantação de Modelo.
A interface do Jupyter Lab combinada com o ambiente conda Apache Spark pré-empacotado fornecido simplifica a exploração e o design de modelos baseados em Spark em conjuntos de dados na memória e, em seguida, implanta-os como Aplicativos Oracle Cloud Infrastructure Data Flow para executar treinamento ou inferência de lote ou como Implantações de Modelo para inferência em tempo real ou na memória.
- Processamento de Dados Distribuídos
O Oracle Cloud Infrastructure Data Flow oferece o mecanismo de processamento distribuído Apache Spark como serviço, capaz de executar jobs de processamento em terabytes ou até mesmo petabytes de dados.
Os aplicativos Spark desenvolvidos no serviço Data Science são facilmente transferidos para Aplicativos do serviço Data Flow graças aos utilitários de biblioteca do Oracle ADS e podem ser configurados para execução em qualquer forma, em qualquer escala.
Considerações
Ao criar e treinar modelos em conjuntos de dados em massa, considere os pontos a seguir. Algumas são específicas do caso de uso de detecção de fraude, mas você pode interpolar a maioria de qualquer processo de design de modelo.
- Coleta de Dados
Ao criar qualquer modelo de aprendizado de máquina, os dados são de importância crítica: os dados de qualidade em quantidade suficiente são fundamentais. No código de amostra de detecção de fraude, usamos dados de transação sintética com rótulos, gerados usando perfis de usuário que são melhores palpites. Em um cenário real, as transações geralmente não serão rotuladas e os casos de fraude podem não ser detectados ou até conhecidos, muito menos rotulados. Portanto, criar um conjunto de dados adequado é o primeiro desafio a ser enfrentado.
- Quantidade de Dados
Qual o volume de dados necessário é sempre uma pergunta difícil de ser respondida. Como regra geral, quanto mais recursos estiverem presentes, mais dados serão necessários. Em alguns casos, a redução do número de recursos ajuda a melhorar o desempenho do modelo e evitar o ajuste excessivo; no entanto, em muitos casos, mais dados são necessários para melhorar o desempenho do modelo.
Se os dados puderem caber na memória, normalmente é mais eficiente selecionar uma forma de computação com memória suficiente para ser treinada em um único nó, do que trabalhar com uma estrutura de processamento distribuída como Apache Spark (ou Oracle Cloud Infrastructure Data Flow, seu equivalente gerenciado).
- Armazenamento de Dados
Os dados brutos geralmente são volumosos e não são úteis diretamente para a análise. É importante manter os dados brutos, mas raramente é usado para treinar ou treinar novamente modelos. Portanto, é melhor armazenado em uma solução econômica como o Oracle Cloud Infrastructure Object Storage.
Dados agregados, previsões ou, de forma mais geral, usados para análises e relatórios devem estar ativos e ser melhor armazenados em um banco de dados. Os dados volumosos e exigidos para análise podem se beneficiar de soluções de armazenamento distribuído, como HDFS e Oracle Big Data Cloud Service.
- Engenharia de Recursos e Aumento de Dados
Os dados brutos ingeridos muitas vezes não são informações suficientes ou no formato errado, e é necessário desenvolver recursos a partir dele. Por exemplo, talvez desejemos usar a idade do cliente em oposição à data de nascimento. Texto categórico, que não é facilmente compreendido pela maioria dos modelos de aprendizado de máquina, pode ser codificado como números com um
StringIndexerou mais vezes com codificação de 1 quente. Isso funciona muito bem quando não é provável que os dados categóricos mudem, como a codificação de gênero. No entanto, se isso puder mudar com o tempo, o uso dessas técnicas exigirá que o modelo seja treinado novamente quando novos valores chegarem, o que está longe do ideal. Nesse caso, pode ser necessário encontrar uma maneira melhor de codificar esses dados.Na amostra de código de detecção de fraude, usamos longitude e latitude já geradas a partir do conjunto de dados sintéticos como um proxy para o endereço do cliente. Essas informações provavelmente não estão prontamente disponíveis na origem do dispositivo e exigirão aumento de dados. Chamar um serviço de geocodificação externo para traduzir um endereço em coordenadas geográficas, durante a ingestão de dados ou como uma etapa de pré-processamento, fornecerá as informações necessárias.
- Exploração de Dados
A exploração de dados normalmente é executada em um conjunto de dados de amostra representativo que se encaixa na memória. Se não houver uma maneira fácil de determinar que o conjunto de dados de amostra seja verdadeiramente representativo do conjunto completo de dados, e o conjunto completo de dados for muito grande para se ajustar à memória, use o Oracle Cloud Infrastructure Data Flow para criar estatísticas agregadas sobre o conjunto de dados e extrair um conjunto de dados de subamostra significativo que seja representativo do conjunto completo de dados. Os recursos de engenharia em um conjunto de dados de amostra que não seja representativo do conjunto completo de dados e, em seguida, o treinamento em todo o conjunto de dados levará a um modelo com baixo desempenho.
- Treinamento de Modelo
Ajustar o Spark para obter a melhor eficiência é um desafio. Consulte Dimensionando Seu Aplicativo de Fluxo de Dados e siga as recomendações para estimar o número de executores e formas de computação necessárias para executar um job específico.
Implantação
O exemplo dessa arquitetura de referência está disponível como um Jupyter Notebook no GitHub.
- Vá para GitHub para ver o notebook de amostra.
- Siga as instruções no documento
README.
Explorar Mais
Saiba mais sobre o Oracle Cloud Infrastructure Data Flow.
Analise esses recursos adicionais:
- Documentação do Oracle Cloud Infrastructure Data Flow.
A página inicial inclui links para os documentos da API, SDK, fóruns da comunidade e Suporte Técnico da Oracle.
- Dimensionando seu Aplicativo de Fluxo de Dados
- Estrutura de práticas recomendadas para o Oracle Cloud Infrastructure