Machine Learning: o que realmente importa
Robotic hands playing the guitar [from Robocop 2014]

Machine Learning: o que realmente importa

Recentemente, tive a feliz oportunidade de falar sobre Machine Learning para uma audiência de estudantes e profissionais de engenharia sobre os fundamentos do que hoje se conhece como Machine Learning (mas que já foi Cibernética, Reconhecimento de Padrões etc).

O Aprendizado de Máquinas está nas manchetes de jornais e nas bocas de todos aqueles que querem estar alinhadas com as mais novas tendências (apesar de essa tecnologia não ser propriamente nova). É ela que está por trás dos filmes que o NETFLIX te sugere ou nas "dicas" de livros que a Amazon manda para você na newsletter diária. Por isso, não fiquei realmente surpreso pela quantidade de pessoas interessadas no tema da palestra.

Durante a apresentação, pude perceber alguns tópicos que apresentam maior dificuldade para aqueles que, mais do que curiosos sobre o tema, realmente já tentaram alguma vez executar um projeto prático aplicando o ciclo de trabalho de Machine Learning (ML).

Quando alguém te falar sobre Aprendizado de Máquinas super empolgado com a sofisticação do algoritmo escolhido (redes neurais convolucionais, random forest, support vector machines, deep autoencoders etc), provavelmente essa pessoa terá dado pouca atenção àquilo que é o cerne de qualquer aplicação: os dados!

A principal diferença de ML para a programação tradicional de computadores é justamente o fato de toda a "inteligência" ser extraída dos dados disponíveis (chamados de dados de treinamento) em vez de ser codificada em estruturas lógicas tradicionais, como estruturas de decisão (IF... THEN ... ELSE).

Sendo assim, os dados devem ser a principal preocupação de quem deseja ter sucesso em suas aplicações práticas.

Há pelo menos três aspectos importantes quanto ao tratamento de dados para treinamento de modelos de ML:

  1. Quantidade de amostras no conjunto de dados (em especial quando há pouca quantidade deles)
  2. Desbalanceio entre diferentes classes (em problemas de classificação)
  3. Dimensão dos dados (isto é, quantidade e qualidade das entradas utilizadas nos modelos)

Se essas questões não são tratadas devidamente, dificilmente um algoritmo de ML, por mais sofisticado que seja, será capaz de entregar um desempenho satisfatório.

Poucos dados podem significar o encerramento precoce de um grande projeto de aprendizado de máquinas, mas há formas de remediar isso com técnicas de data augmentation, ou simplesmente aumento de dados. Basicamente, o conjunto original de dados disponíveis é usado como matéria prima para gerar novas amostras que sejam estatisticamente fieis à distribuição original, um dos maios famosos é o método de Bootstrapping.

Bootstrapping é simplesmente uma reamostragem com repetição dos dados originais até que se alcance a quantidade necessária de dados

Quando há desbalanceio entre classes em aplicações de classificação (por exemplo, decidir se o bichinho numa foto é um cachorro ou um gato), o algoritmo tenderá a prever na maior parte das vezes a classe mais bem representada no conjunto de treinamento, em detrimento das demais. A geração de amostras sintéticas por combinação de outras, como o k-médias SMOTE é uma saída usual. Nesse método, novos pontos são gerados na posição dos centroides entre subgrupos das classes com baixa representatividade.

Quanto à dimensão dos dados, nem sempre é uma boa ideia usar muitas delas, por causa da maldição da dimensionalidade que faz com que, a cada nova dimensão de entrada, seja necessário obter mais dados para garantir um bom aprendizado (e esse aumento ocorre a uma taxa exponencial!).

Desempenho do classificador com o aumento de dimenões de entrada

Deve ser determinado um número "ótimo" de entradas (chamadas comumente de features, atributos ou características) a fim de se obter o melhor desempenho do classificador. Essa operação é chamada de Redução de Dimensionalidade. Uma das formas mais populares de se conseguir isso é a Análise de Componentes Principais (frequentemente identificada pela sigla originária do inglês - PCA).

PCA executa uma transformação linear nos dados originais em termos de autovetores de sua matriz de covariância, realçando as componentes que respondem pela maior parte da variabilidade (informação) contida no conjunto de dados. Obtém-se, assim, uma ordenação do teor de relevância de cada uma das dimensões do conjunto de dados no novo espaço transformado.

Não foi fornecido texto alternativo para esta imagem

No caso apresentado na figura acima, além de reduzir de três para duas dimensões, sem perda relevante de informação, as features geradas pelo método PCA no espaço transformado ainda conferem uma maior separabilidade entre as classes, facilitando o trabalho do algoritmo de aprendizagem. Vale lembrar que, de posse da matriz de transformação, é sempre possível retornar ao espaço original.

E quando as dimensões são muito reduzidas ou não possuem potencial discriminatório suficiente?

Será preciso gerar novas features a partir das dimensões originais dos dados, um exemplo simples é apresentado abaixo:

Não foi fornecido texto alternativo para esta imagem

Temos duas classes (azul e vermelha), mas não se pode, por exemplo, usar apenas uma reta (o método mais simples possível) para separar duas classes. Porém, a adição de uma nova dimensão, que é calculada a partir da original (elevando esta ao quadrado), torna possível o uso de um classificador linear (reta verde):

Não foi fornecido texto alternativo para esta imagem

Há ainda muitos e muitos tópicos e métodos interessantes apenas para tratar desses três pontos realçados sobre a questão dos dados de treinamento (há livros inteiros sobre o assunto), mas o objetivo deste texto é chamar a atenção para o assunto e introduzir conceitos chave.

Há alguns anos que os métodos de aprendizagem de máquinas têm sido disponibilizados em bibliotecas de linguagens amigáveis e gratuitas como Octave, R e Python, de modo que se tornam quase itens de prateleira. Isso é muito bom para a popularização do ramo de ciência de dados, pois mesmo com conhecimento intermediário da teoria de ML é possível construir aplicações interessantes.

Resta, porém, como desafio e como espaço de inovação o tratamento de dados. O fator crucial para o sucesso das aplicações será a criatividade do analista no momento de coletar seus dados e escolher ou gerar features mais eficientes.

Mal comparando uma aplicação de ML à arte de tocar violão, as posições dos acordes são como os algoritmos de aprendizagem, são tabelados e é preciso treinar para executá-los bem com a mão direita no braço do instrumento (ou esquerda para os canhotos), porém, uma vez aprendidos, são iguais para todos. Já o dedilhado, ou a batida, vai depender da interpretação de dada um, o que vai demandar criatividade, experiência e sensibilidade, assim como o tratamento dos dados no aprendizado de máquinas... E é isso que faz toda a diferença!

Ricardo Villarroel

Automation Engineer at Petrobras

5 a

Excelente post

Cinthia Pessanha

C# .NET | Angular | AWS | Techlead @Petrobras

5 a

O crash course de ML do google developers aborda exatamente o que vc explicou sobre como transformar problemas não lineares em problemas lineares. Seu artigo complementou bem o que aprendi por lá! Parabéns.

Entre para ver ou adicionar um comentário

Outros artigos de Rewbenio A. Frota

  • WAID - A Petrophysics Game-Changer

    WAID - A Petrophysics Game-Changer

    PETROBRAS recently launched its the first public petrophysics database with two real data sets. The first contains…

    8 comentários
  • Você ainda vai precisar de Bolsa Família... e isso pode ser bom!

    Você ainda vai precisar de Bolsa Família... e isso pode ser bom!

    Calma! Antes que você me xingue ou pense que estou te desejando o mal, esclareço: este é um texto sobre tecnologia, não…

    1 comentário
  • Entenda a máquina antes que ela entenda você!

    Entenda a máquina antes que ela entenda você!

    “O que eu não posso criar, eu não entendo” (Richard Feynman - Prêmio Nobel de Física) Se há algo que hoje é visto ainda…

  • Machine Learning: do que se trata, e o que realmente importa?

    Machine Learning: do que se trata, e o que realmente importa?

    Recentemente, tive a feliz oportunidade de falar sobre Machine Learning para uma audiência de estudantes e…

    1 comentário
  • Que tal um feedback?

    Que tal um feedback?

    Estão na ordem do dia os sistemas automáticos que são capazes de gerar efeitos inteligentes, popularmente chamados de…

  • Por que ficar no mínimo local?

    Por que ficar no mínimo local?

    Quem lê meus artigos já percebeu que costumo lançar mão de analogias com o aprendizado de máquinas que são muito úteis…

    1 comentário
  • Aprenda com a IA... se puder

    Aprenda com a IA... se puder

    As máquinas estão cada vez mais inteligentes. Elas sabem o que queremos antes de nos darmos conta, fazem diagnóstico…

    2 comentários
  • Não sou o mesmo de 20 mil e-mails atrás

    Não sou o mesmo de 20 mil e-mails atrás

    Parei de receber e-mails numa conta gratuita que mantenho há quase duas décadas. Poderia não ser um grande problema…

    10 comentários
  • Por que ficar no mínimo local?

    Por que ficar no mínimo local?

    Quem lê meus artigos já percebeu que costumo lançar mão de analogias com o aprendizado de máquinas que são muito úteis…

    4 comentários
  • Que tal um feedback?

    Que tal um feedback?

    Estão na ordem do dia os sistemas automáticos que são capazes de gerar efeitos inteligentes, popularmente chamados de…

    9 comentários

Outras pessoas também visualizaram

Conferir tópicos