Outubro 8, 2019

Como aplicar Machine Learning

Para se obter bons resultados na utilização do machine learning para solução de problemas, a aplicação de um processo é de grande ajuda. Esse processo nada mais é que um padrão a ser adotado, tendo o objetivo de se chegar a resultados sólidos, com agilidade e precisão, sem perder tempo com tarefas desnecessárias.

Aplicando um processo

A ideia aqui é encontrarmos um processo genérico o suficiente a ponto de você utiliza-lo nas mais diferentes situações, sempre encontrando bons resultados, como se ele fosse desenvolvido especificamente para a situação em questão, apenas ajustando as etapas do processo conforme a necessidade de sua aplicação.

Já definimos o que é machine learning, entendemos o que são seus algoritmos e também vimos a matemática que precisamos estudar para dominar o aprendizado de máquina. Caso você ainda tenha alguma dúvida em algum desses tópicos, ou queira apenas revisar antes de continuarmos, clique em um dos links abaixo:

Etapas do processo

Essas são as etapas pelas quais grande parte das aplicações de machine learning precisarão passar, sendo que dentro de cada uma delas serão realizados os ajustes necessários para solução de cada problema em específico:

– Definindo o problema

– Conhecendo os dados

– Preparando os dados

– Escolhendo o método de medição de desempenho

– Verificando os melhores algoritmos

– Encontrando os melhores resultados

– Apresentando os resultados finais

Dificilmente você utilizará em seu processo uma estrutura diferente dessa apresentada. Isso acontece pois, de maneira geral, todas as necessidades existentes em uma boa aplicação de machine learning estão contempladas nela.

Cada uma dessas etapas será dividida em etapas menores, que quando agrupadas, formam uma grande linha de produção.

Dessa forma, soluções de problemas distintos podem acabar tendo etapas idênticas, o que facilita o domínio da solução apresentada. Ao utilizarmos uma etapa de maneira similar a que já fizemos no passado, já sabemos o tipo de resultado que esperamos, o que agiliza nossa tomada de decisão conforme o resultado da etapa em questão, e também facilita nossa análise, o que nos leva a encontrar as melhores configurações com mais facilidade.

Utilizando as etapas apresentadas, a análise de diferentes soluções para um mesmo problema também é simplificada. Após concluir o processo, você poderá voltar e modificar apenas uma das etapas caso queira, verificando assim se existe melhora ou não no resultado final após esse ajuste.

Então vamos entender cada uma das etapas:

Definindo o problema

Qual é o problema?

Essa é uma etapa básica de qualquer projeto, utilizando ou não machine learning. Sempre que você precisar resolver um problema é fundamental que ele seja definifido de maneira correta. Nas aplicações de machine learning podemos utilizar dois simples passos nessa etapa:

Passo 1: Qual é o problema?

Realize a descrição do problema em questão, de maneira clara e objetiva. Descreva também alguns problemas similares para que o seu esteja bem situado.

Passo 2: Por que o problema precisa de uma solução?

Esclareça os motivos que te levam a solucionar este problema, mostrando as vantagens da solução e como ela será aplicada.

Respondidas essas perguntas você será capaz de buscar a solução de maneira correta e objetiva, avaliando com clareza os resultados obtidos.

Conhecendo os dados

Análise dos dados

A primeira etapa precisa ser executada de maneira simples e rápida para que, o quanto antes, possamos iniciar a análise dos dados. Essa etapa é essencial para o sucesso da aplicação, e provavelmente será a mais longa e desgastante, somada à próxima que é sua extensão.

Conhecer os dados implica em entendermos o significado de cada variável existente em nossa base de dados, e também como se dá seu relacionamento com as demais. Este conhecimento precisa vir acompanhado de números (e gráficos), que explicam os dados e possibilitam ao analista tomar as melhores decisões para o tratamento dos dados que vem a seguir.

Preparando os dados

Normalmente os dados brutos ainda não podem ser apresentados a um algoritmo de machine learning. Isso acontece não por restrições dos algoritmos, mas sim pelos erros e redundâncias comuns nos datasets. Para devida preparação dos dados as seguintes análises devem acontecer:

Seleção: definir quais dados serão mantidos e excluídos, e ainda verificar dados que deveriam existir mas não estão disponíveis.

Pré-processamento: tratar os dados faltantes, organizar e formatar os dados.

Transformação: seleção de variáveis (feature selection), tratamento de outliers, normalização.

Após esses passos, os dados já estarão devidamente organizados e ajustados para serem apresentados aos algoritmos de machine learning que serão utilizados.

Escolhendo o método de medição de desempenho

Diferentes métodos de medição

Antes de inciarmos os testes com os algoritmos é importante definirmos o método de medição de desempenho que será utilizado, permitindo assim a comparação entre os resultados de cada algoritmo, sendo utilizada a mesma métrica em todos.

Nesse momento, serão consideradas algumas possibilidades, dependendo se o problema em questão envolve classificação ou regressão. Normalmente nos problemas de classificação serão consideradas opções como o coeficiente de determinação R2 (ou R2 ajustado), e nos problemas de regressão são usadas as métricas de acurácia, matriz de confusão (confusion matrix) ou ROC/AUC (curva ROC e área abaixo da curva).

A devida análise e preparação dos dados terá capacitado o analista a escolher o melhor método para o problema em questão. Há casos onde o analista poderá ainda optar por mais de um método, comparando os algoritmos de maneiras diferentes, mas sempre observando com cautela para que todos sejam avaliados através dos mesmos métodos, garantindo assim que os melhores algoritmos de fato serão escolhidos.

Verificando os melhores algoritmos

Um mesmo tipo de problema pode ser resolvido por diferentes algoritmos de machine learning. Nessa etapa, nosso objetivo é encontrar os melhores.

Para isso, repetimos os mesmos testes nos algoritmos de nossa preferência, ainda com seus valores padrão, utilizando técnicas como validação cruzada k-fold, por exemplo. O ideal é que os mesmos testes sejam repetidos diversas vezes, com variações nos dados de treino e teste, para que então os resultados possam ser comparados.

Essa etapa exigirá pouco código e pouca análise, porém muito poder computacional. Dependendo do tamanho do dataset, a execução de um algoritmo poderá levar minutos, ou até horas, e será repetida algumas vezes.

Com estes resultados em mãos, tantos quantos quisermos, iremos para a próxima etapa, lembrando que o tempo de análise e execução de cada algoritmo na próxima etapa poderá ser significativo.

Encontrando os melhores resultados

Obtendo os melhores resultados

Agora que sabemos os algoritmos com melhor performance para o problema em questão, podemos trabalhar em cada um deles visando ao melhor desempenho, para obtenção de um modelo de machine learning final.

Cada algoritmo possui seus próprios parâmetros, e para obter o melhor desempenho precisamos variar o ajuste desses parâmetros, com o objetivo de encontrar a combinação que apresenta o melhor resultado. Estas variações podem implicar na repetição da execução de um mesmo algoritmo muitas vezes, e novamente o poder computacional que temos à disposição fará diferença.

Após esse ajuste fino nos parâmetros de cada algoritmo, encontraremos a melhor combinação para o melhor algoritmo, estando enfim aptos para a apresentação do resultado final.

Apresentando os resultados finais

Apresentando os resultados

Uma aplicação de machine learning costuma ser bastante técnica, e mesmo seu resultado final pode ser de difícil entendimento para leigos. Como normalmente os maiores interessados nos resultados são os tomadores de decisão, que podem ou não ser conhecedores da área, é fundamental que os resultados sejam devidamente apresentados, de maneira que qualquer pessoa possa entender.

Por mais que o problema em questão seja para uma competição, ou mesmo para estudo próprio, é interessante que trabalhemos em uma apresentação apropriada. Além de ser uma boa prática e trazer a preparação necessária para momentos em que uma apresentação é obrigatória, realizar essa etapa nos trará maior entendimento sobre todo o processo realizado, agregando valor para o próximo projeto.

Nesse momento há mais flexibilidade, e a criatividade de cada um pode ser explorada de acordo com o objetivo. Seguem alguns aspectos a serem observados:

Contextualize o projeto: explique o problema e a necessidade de solução, com perguntas e respostas claras. Evidência as vantagens em e encontrar a solução.

Apresente o resultado: mostre o resultado do modelo final.

Curiosidades: Relate as descobertas que você ao longo do processo que tenham valor para quem analisará o resultado. Elas podem ser relativas aos dados, ou mesmo aos processos e modelos utilizados.

Limitações: Deixe claro as situações onde o modelo pode não apresentar o resultado esperado e as respostas que análise não contempla.

Conclusões: faça uma análise de todo projeto, considerando faltas e excessos.

Para continuar seu aprendizado sobre machine learning, clique aqui e confira nossos cursos. Focamos na didática com simplicidade, explicando detalhadamente todos os conceitos necessários para o bom entendimento de cada tema.