Processo cíclico de Machine Learning

Processo cíclico de Machine Learning

Como fazer um projeto de ML

utilizando o processo cíclico de interação

Existe uma diferença enorme entre o desenvolvimento de software tradicional, e o processo cíclico de Machine Learning. Vejo nas conversas com os clientes que atendo, que uma das maiores dificuldades que enfrentam é de desassociar a forma de desenvolvimento. O software tradicional é focado na estrutura e relacionamento entre os elementos necessários, mas no processo de Machine Learning o desenvolvimento é trabalhado com foco nos dados. Contudo, esta questão dos dados não é um fator impactante no software tradicional, desde que siga as amarrações e consistências definidas.

Software tradicional

Para exemplificar, imagine uma tela de cadastro simples. Nesta tela existem cinco campos: Nome, Data de Nascimento, E-Mail, Cidade e UF. Estes campos da tela podem possuir algumas amarrações condicionais, como por exemplo só permitir um cadastro de pessoas acima de 18 anos. Ou que a cidade seja um campo de seleção que será preenchido somente após a seleção da UF em outro campo de seleção. Os dados, em si, não importam para o sistema. Se seguir as regras impostas pela área de negócios que está criando as funcionalidades, ele será aceito. Este software continuará funcionando como deveria até alguém alterar propositalmente o relacionamento entre o campo da tela e seu correspondente no seu banco de dados.

Machine Learning

Por outro lado, o projeto de Machine Learning faz uma tarefa diferente. Como o foco é direcionado para os dados, o valor existente nos campos armazenados são utilizados para montar o modelo de Machine Learning. Imagine que, em um processo de agrupamento de valores (pode ser o uso de um algoritmo K-Means, por exemplo) você utilizou as variáveis Data de Nascimento e Cidade. (desde que a cidade e a data de nascimento fossem armazenados com valores numéricos). Estes campos poderão encontrar uma determinada similaridade entre os dados e com isso há a segmentação em clusters. Com essa segmentação, um modelo poderia agrupar estes dados e o seu time de marketing poderia trabalhar de forma específica em cada grupo destes, de acordo com as combinações encontradas pelo algoritmo.

Impacto

Porém,  por uma decisão da área de negócios, agora o sistema começará a ser oferecido também para um público completamente diferente. Imagine que o publico mais jovem majoritariamente utilizasse o sistema até hoje, a partir de amanhã o publico mais velho vai passar a integrar também o publico alvo. O software está preparado para isso, vai receber esse novo público sem a necessidade de nenhuma alteração na tela de cadastro porque não há mudança entre o relacionamento da tela com o repositório. Contudo, as similaridades entre os dados de data de nascimento e cidade sofrerão alterações. Reparem que o dado influencia o resultado do algoritmo. E isso pode impactar em uma mudança no algoritmo de Machine Learning, mesmo o sistema não tendo nenhuma linha de código alterada.

Explicar esta condição para pessoas que estão acostumadas unicamente à desenvolvimento de software tradicional é um desafio. Muitas vezes passa a impressão que o desenvolvimento do modelo de Machine Learning precisará de suporte do desenvolvedor para sempre. Fazendo com que o cliente pague para um suporte e sustentação ad aeternum.

Processo cíclico de Machine Learning

Utilizando o diagrama da figura apresentada na capa deste post, é visto que o processo cíclico de Machine Learning envolve algumas fases. E isso remete ao processo trabalhado amplamente na atividade de mineração de dados, onde se entende o dado antes de fazer um modelo. Em seu clássico livro The Data WarehouseETL Toolkit: Practical Techniques for Extracting, Cleaning, Conforming, and Delivering Data (English Edition) Ralph Kimball diz que em processos de ETL se gastam mais de 70% do tempo realizando leitura e transformação dos dados. Em Machine Learning essa afirmação também é uma verdade, porém com poucas variações.

Identificar, Extrair, Limpar e Refinar

Esta fase do processo se assemelha ao descrito por Ralph Kimball para projetos de ETL. Porém, como é para Machine Learning, há algumas alterações. Identificar a origem dos dados é diferente, porque não são todos os dados que realmente impactam para a criação do modelo. Alguns dados não são relevantes, e podem ser removidos como é estudado na disciplina de Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists (English Edition). Escolher as variáveis é uma tarefa complexa e devemos investir bastante tempo trabalhando neste momento.

Refinar os dados é uma outra tarefa que precisa ser trabalhada de forma pensada. Algumas variáveis possuem correlação alta entre si, e podem ser trabalhadas de forma a cria uma variável artificial para representar uma nova variável ao invés daquelas duas. Esta tarefa de refinamento pode ser estudada em disciplinas de estatística, e recomendo a leitura de Estatística Para Leigos e Estatística II. Para Leigos.

Criar o algoritmo e analisar uma amostragem

Depois de se entender os dados é a hora de montar os algoritmos de Machine Learning, e cada problema condiz com a criação de um algoritmo de uma família específica. A escolha do algoritmo daquela família é baseada em sua performance, porque existem várias formas de se criar a mesma solução. A diferença entre os resultados dos algoritmos é baseado em sua performance. Para entender os algoritmos e suas métricas de avaliação, sugiro a leitura de Introdução à mineração de dados: com Aplicações em R e Introdução à mineração de dados: Conceitos básicos, algoritmos e aplicações. Fazer uma amostragem mais genérica e plural nos dados é importante para garantir o mínimo de viés.

Só para exemplificar um cenário de impacto negativo de viés em algoritmo. No final de 2019 houve um problema gerado pela liberação de crédito para duas pessoas, que são casadas, mas o marido teve um crédito aprovado 20 vezes maior do que o da esposa. Nós discutimos um pouco sobre esse problema no Lambda3 Podcast 171 – Quem é responsável pelas decisões tomadas por uma inteligência artificial?. A falta de amostras, ou talvez o problema da amostra ter um viés causou um problema grande para os envolvidos.

Tomar uma decisão

Eu pensei em começar esse parágrafo escrevendo: “Por fim, a tomada de decisão”. Mas não é o fim! A tomada de decisão com os dados gerados é a validação do esforço construído durante todo o processo, e permitirá novos caminhos a partir destas decisões tomadas. Cada modelo de Machine Learning ajudará a responder uma pergunta, que auxilia na tomada de decisão. É esperado que essa tomada de decisão abra novas ideias e re-inicie o ciclo, começando novas perguntas que devem ser respondidadas.

Sobre Diego Nogare 344 Artigos
Diego Nogare é Gerente Técnico de Engenharia de Machine Learning no Itaú-Unibanco. Também é professor em programas de pós graduação no Mackenzie e na FIAP, em São Paulo. Foi nomeado como Microsoft MVP por 11 anos seguidos, e hoje faz parte do programa Microsoft Regional Director.