Skip to content

he7d3r/maratona-behind-the-code-2021

Repository files navigation

Maratona Behind The Code 2021

Este repositório reúne os códigos e recursos que utilizei para resolver os cinco desafios de negócio propostos na Maratona Behind The Code da IBM de 2021.

A descrição e os arquivos fornecidos como base para cada desafio encontram-se no subdiretório "desafio" correspondente (que é um submódulo do git, clonado a partir dos repositórios da maratona).

No conjunto, as soluções submetidas para os cinco desafios garantiram o 53º lugar no TOP 100 da América Latina, e a oportunidade de participar da final da Maratona:

TOP 100 da Maratona Behind The Code 2021

Desafios

Bantotal

O desafio proposto pela Bantotal encontra-se no submódulo "1-bantotal/desafio".

Para a solução deste desafio de ciência de dados na plataforma da IBM Cloud, foi utilizado um Jupyter Notebook, hospedado no Watson Studio (ver notebook.ipynb), para analisar dados de clientes de bancos e desenvolver um modelo de aprendizagem de máquina para predizer se um empréstimo a um cliente deve ou não ser feito. O modelo resultante foi publicado em uma instância do Watson Machine Learning, e recebeu melhorias incrementais até alcançar um bom desempenho. A versão final foi usada para preencher o arquivo de respostas, ANSWERS.csv, garantindo o 6º lugar no ranking do 1º desafio.

Quanam

O desafio proposto pela Quanam encontra-se no submódulo "2-quanam/desafio".

Para a solução do desafio na plataforma da IBM Cloud:

  1. Foi utilizado o Cloud Functions para criar uma API serverless que recebe dados de sensores e retorna uma lista de alertas quando as medições de um ou mais destes sensores alcançam valores diferentes do esperado. O diretório sensor_alert contém o código da Action que define a API e alguns testes unitários.
  2. Com o Node-RED (ver node-red-flows.json), foram coletados documentos em formato JSON de um dispositivo IOT da Quanam, via protocolo MQTT, para posterior armazenamento em um banco de dados NoSQL (o Cloudant):
    Screenshot do fluxo do Node-RED
    Depois, esses dados foram salvos em um arquivo iot.csv e explorados em um Jupyter notebook (ver notebook.ipynb), hospedado no Watson Studio, com o qual também foram treinados modelos de machine learning para uma comparação de seu desempenho. O melhor modelo foi então utilizado para fazer previsões do ritmo cardíaco de pacientes, e preencher a coluna RYTHM do arquivo answers.csv, garantindo o 17º lugar no ranking do 2º desafio.

GFT

O desafio proposto pela GFT encontra-se no submódulo "3-gft/desafio".

Para a solução deste desafio de aprendizagem não-supervisionada na plataforma da IBM Cloud, foi utilizado um Jupyter Notebook (ver notebook.ipynb), hospedado no Watson Studio, para:

  • Agregar as bases de dados de clientes de um banco de varejo, um banco de investimentos e uma seguradora
  • Tratar os dados, removendo itens duplicados, e transformando os demais para um formato adequado para o uso em um modelo de recomendação de produtos
  • Gerar regras de associação com um nível adequado de confiabilidade, por meio do algotimo Apriori
  • Preencher o arquivo de respostas, ANSWERS.csv, com até três produtos por cliente

A solução proposta ficou em 79º lugar no ranking do 3º desafio.

Algar Tech

O desafio proposto pela Algar Tech encontra-se no submódulo "4-algar-tech/desafio".

Para a solução do desafio na plataforma da IBM Cloud, foi construído o diálogo de um chatbot, utilizando o Watson Assistent (ver arquivo skill-fake-it-solutions.json) para o processamento de linguagem natural (NLP). O resultado foi um assistente virtual inteligente, integrado a uma API, capaz de interagir com o usuário identificando suas intenções (saudação, pedido de ajuda, etc).

A figura a seguir mostra um diagrama do diálogo construído:

Diagrama do diálogo do assistente virtual

A solução proposta ficou em 84º lugar no ranking do 4º desafio.

Sonda

O desafio proposto pela SONDA encontra-se no submódulo "5-sonda/desafio".

Para a solução deste desafio de ciência de dados na plataforma da IBM Cloud, foi utilizado um Jupyter Notebook, hospedado no Watson Studio (ver notebook.ipynb), para analisar dados de clientes de uma empresa de telecomunicações (ver dataset.csv) e desenvolver modelos de aprendizagem de máquina para predizer se haverá ou não a perda de um cliente (churn). Os modelos foram comparados, e o que teve o melhor desempenho em termos do F1 score foi utilizado para fazer previsões para novos clientes e indicar na coluna CHURN do arquivo de respostas (ver ANSWERS.csv) quais deles serão perdidos.

A solução enviada ficou em 96º lugar no ranking do 5º desafio.

Edição anterior

Disponibilizei minhas soluções para os desafios de 2020 no repositório maratona-behind-the-code-2020.