Algoritmos de machine learning: 5 pontos a serem considerados na escolha

O campo de aprendizado de máquina (machine learning) oferece uma grande quantidade de opções quando se trata de algoritmos. No entanto, escolher o algoritmo correto não é uma tarefa fácil.

Nesse artigo, falaremos sobre como escolher os algoritmos de machine learning e quais as principais características devemos estar atentos para aumentar nossa chance de sucesso.

Uma dúvida comum na área de aprendizado de máquina e reconhecimento de modelos de machine learning é: qual o melhor algoritmo? 

Essa pergunta, tão recorrente nos cursos de formação, também circula na indústria e nos centros de pesquisa, e sua resposta é bastante insatisfatória.

Seria fantástico se houvesse uma resposta simples, mas a primeira (e única) possível para ela é: depende. Depende da natureza da tarefa, da quantidade e tipos de dados disponíveis, do tipo de resposta que se espera, do tempo e recursos computacionais à disposição, da profundidade do nosso conhecimento sobre os algoritmos, dentre outros fatores.

Assim, temos que nos conformar com o fato de que, dentre os tipos de algoritmos de machine learning, o melhor para qualquer que seja o problema simplesmente não existe

Embora possa parecer frustrante, esse fato nos leva a uma pergunta muito mais interessante (e correta), a qual gostaria de discutir nesse artigo: o que devemos saber antes de escolher os algoritmos de machine learning para a resolução de um problema?

Para responder a esta questão, iremos abordar os seguintes tópicos:

  • Algoritmos de machine learning: características
  • Machine learning: tipos de algoritmos e como escolher
  • Conclusão

Boa leitura!

Algoritmos de machine learning: características

Apesar de serem aplicados de diferentes formas em diferentes domínios, cada um dos algoritmos de machine learning possui características decorrentes dos seus princípios de funcionamento e que nos ajudam a responder às perguntas deste artigo. 

Alguns algoritmos exigem memória, enquanto outros exigem grande capacidade de processamento. Alguns precisam de um grande volume de amostras rotuladas, ao passo que outros são mais eficientes justamente quando temos uma quantidade reduzida de dados. São exatamente essas características que podem nos auxiliar a escolher o algoritmo mais adequado ao nosso problema.

Antes de entrar no assunto mais profundamente, gostaríamos de deixar claro que esse artigo implica algum conhecimento prévio. Por isso, será mais útil para pessoas já iniciadas na área, que já têm conhecimento sobre os  métodos mais consolidados, como o Naive Bayes, Árvores de Decisão, técnicas de regressão, clustering e redes neurais. 

< Se alguns desses assuntos são novidades para você, sugerimos a leitura deste artigo: O que é machine learning? Como funcionam os seus algoritmos? />

Por ser uma área de grande interesse e em franca expansão, o aprendizado de máquina é um campo extremamente volátil. 

Novos algoritmos, ou novas versões de antigos algoritmos, são propostos e publicados quase diariamente. Por esse motivo, gostaríamos de esclarecer que trataremos nesse artigo os principais algoritmos de machine learning, ou seja, os mais conhecidos em suas formas mais utilizadas. Bom, por onde começar?

Machine learning: tipos de algoritmos e como escolher

Para saber como escolher dentre os tipos de algoritmos de machine learning, veja, a seguir, os 5 pontos a se considerar. 

1. A natureza da tarefa

Comecemos pelo óbvio. A área de Reconhecimento de Padrões abrange o estudo de algoritmos projetados para tarefas de descrição e predição de padrões. 

Isso significa tentar prever que algo pode ou não acontecer (ou estar presente) com um certo grau de incerteza. Sim, isso é um pouco vago, mas saber diferenciar qual tarefa se deseja executar e qual o tipo de resposta se deseja obter é o primeiro passo para a sua escolha.

O que isso significa? Significa que se estamos trabalhando na construção de agente autônomo (bot) para o mercado financeiro, temos que entender que tentar prever a variação de uma moeda frente a um cenário econômico em um horizonte de tempo é um problema completamente diferente de se decidir se é o momento certo ou não de comprá-la ou vendê-la.

Para iniciar o processo de escolha é necessário saber distinguir, pelo menos, os três grandes grupos de tarefas: 

  1. classificação; 
  2. regressão; 
  3. clusterização. 

Existem excelentes artigos disponíveis para explicar as diferenças entre esses grupos, como esse outro artigo do Anderson Vinícius. Às vezes, pode ser complicado distinguir entre esses grupos.Por isso, seguem aqui algumas dicas: 

  1. se tentamos prever uma categoria, Classificação;
  2. se estamos tentando prever um valor, Regressão;
  3. se não sabemos as categorias, Clusterização.

2. Os dados podem decidir o caminho

Caso pergunte a um cientista de dados qual a quantidade de amostras que ele precisaria para garantir o melhor desempenho certamente responderá: “o máximo possível”. Quando se trata de reconhecimento de padrões, “mais” geralmente significa melhor. No entanto, quanto pode ser considerado suficiente? Qualquer dado nos interessa?

É fato que sem dados não há aprendizado e por isso, a primeira recomendação que se pode fazer é: se não possui dados, trate de obtê-los. Os dados disponíveis conduzem as técnicas que podemos utilizar. 

Se temos amostras rotuladas podemos utilizar técnicas supervisionadas, dentre os modelos de machine learning.No entanto, se não as tivermos , é necessário recorrer às técnicas não supervisionadas. Quando a tarefa a ser realizada é tão complexa que só a resposta da interação com o ambiente pode fornecer um treinamento eficaz, aprendizado por reforço

Independentemente das técnicas, a quantidade de dados depende do problema. Apesar disso, alguns algoritmos costumam ser mais ávidos por dados do que outros. Sem se prender a faixas exatas de valores, mas sabendo que é mais comum falar-se de milhares do que de centenas, percebemos que os algoritmos apresentam tendências.

Com base nisso, qual modelo escolher?

Redes Neurais, por exemplo, precisam de uma quantidade considerável de dados para apresentar resultados competitivos, mas, geralmente, o aumento da quantidade de dados melhora seu desempenho de predição. 

É um comportamento diferente, por exemplo, do Naïve Bayes, um dos principais algoritmos de machine learning, que consegue realizar a tarefa de predição com algumas centenas de amostras.

Técnicas que combinam múltiplos preditores, como as Random Forests e técnicas de boosting, por precisarem alternar as amostras durante o treinamento, também precisam de uma quantidade maior de dados para apresentar melhores resultados que seus preditores individualmente.

O mesmo pensamento se aplica à quantidade de dimensões do problema: a “maldição da dimensionalidade”. Alguns algoritmos se deterioram mais rapidamente quando se aumenta a quantidade de campos utilizados para a predição.

Um caso conhecido desse efeito é o K-NN. O processo de classificação desse algoritmo faz com ele seja sensível à ruídos: características que dificultam a resolução do problema. À medida que a quantidade de campos aumenta (10 a 20 características) rapidamente ele perde eficiência. 

Em contrapartida, as SVMs são menos sensíveis aos ruídos conseguindo lidar com grandes quantidades de características (mais de 100) sendo mais indicadas nesses casos.

3. O tempo que temos

Imagine um programa que coordena as ações de um jogador adversário utilizando técnicas de aprendizado de máquina. Esse programa é responsável por, a cada ação de um jogador humano, determinar uma jogada que maximize a chance de derrota do seu oponente. 

Para que desempenhe bem essa tarefa, esse programa além de ser bem projetado, precisa ser treinado antes de ser disponibilizado e deve atuar dentro do jogo oferecendo respostas em tempo adequado.

Se o jogo em questão é o xadrez, não será um grande problema se o programa levar vários segundos para responder a uma jogada e, da mesma forma, investir alguns meses sendo treinado para jogar. 

Contudo, se for um jogo de arena online a resposta precisa ser imediata, assim como   o treinamento deve acontecer durante o próprio jogo para que a máquina possa se adaptar àqueles jogadores.

Dessa forma, os algoritmos possuem diferentes exigências a respeito do tempo e recursos necessários para serem devidamente treinados e executarem suas tarefas, e isso é importantíssimo se temos restrições quanto a esses parâmetros. A pergunta que se faz aqui é: quais algoritmos são treinados mais rapidamente? Quais são mais rápidos durante a execução?

Com base nisso, qual modelo escolher?

Técnicas baseadas em otimização de parâmetros como os modelos de machine learning de Regressão Linear, requerem um esforço maior durante a fase de treinamento do sistema. 

Em contrapartida, depois de escolhido o modelo, o processo de execução é rápido, pois se resume à realização de um único cálculo. Da mesma forma, técnicas baseadas em aprendizado por reforço, também precisam de mais tempo para serem treinadas, mas respondem em baixíssimo tempo durante a execução.

O mesmo ocorre na construção de uma Árvore de Decisão que possui um tempo de treinamento relativamente elevado, mas seu processo de classificação baseado em testes é extremamente rápido. 

Em contrapartida, o K-NN tem um tempo de treinamento baixíssimo, mas o tempo que leva para calcular as distâncias de uma amostra para todas as outras, faz com que a execução do processo de classificação seja extremamente lenta, especialmente em grandes bases de dados.

A Regressão Logística, assim como o Naive Bayes, possui ambos os processos, treinamento e classificação, rápidos. As SVMs possuem um tempo de treinamento mais lento que os anteriores, mas seu processo de predição também é rápido o suficiente para ser utilizado em problemas de processamento de texto e de linguagem natural.

4. A complexidade da tarefa e do algoritmo

O raciocínio é simples: boa parte dos algoritmos de machine learning se baseia na criação de linhas que descrevem ou dividem o espaço. 

Algoritmos de classificação e clustering criam linhas que expressam a fronteira entre diferentes grupos. Algoritmos de regressão criam linhas que expressam uma tendência dos dados. Alguns desses algoritmos presumem que essas relações são lineares. Essa premissa é ruim para alguns problemas, e ter esse conhecimento  pode economizar muito tempo da equipe de desenvolvimento.

O Discriminante Linear de Fisher, ou seu modelo generalizado LDA (Linear Discriminant Analysis), e a Regressão Logística, por exemplo, são exemplos de algoritmos que utilizam a linearidade como premissa. 

Outros modelos de regressão também possuem dificuldade de expressar relações não lineares complexas, pois como seu modelo se resume a encontrar um conjunto de parâmetros para uma equação que maximiza o ajuste da curva, seus termos de alta ordem podem ser um desafio. Logo, se a fronteira ou tendência é complexa, tome cuidado com esses algoritmos.

Alguns algoritmos, apesar de se aproveitarem da linearidade, introduziram artifícios para evitar esse problema. As SVMs, por exemplo, introduziram as variáveis slack e os “truques” de kernel para mitigar essas situações. No entanto, isso faz com que sua utilização se torne mais complexa. 

Em compensação, outros algoritmos, como Árvores de Decisão, K-NN e as Redes Neurais, possuem a capacidade de estabelecerem fronteiras de decisão (e de tendência no caso da utilização das Árvores para a tarefa de regressão) complexas e não lineares sem a necessidade de parametrização.

5. O quanto o algoritmo acerta e o que queremos que ele acerte

Precisão  é uma palavra que deve fazer parte do vocabulário de qualquer profissional que queira atuar na área de aprendizado de máquina. Apesar de existirem diversas formas de se determinar o desempenho de um algoritmo, esse é, sem dúvida, o primeiro parâmetro a se avaliar. 

Sendo a acurácia a nossa primeira medida é certo que com tempo para treinamento e uma quantidade suficiente de dados, as Redes Neurais, SVMs e métodos ensembles como as Random Forests geralmente apresentam desempenho superiores. Da mesma forma, é comum que métodos como Naïve Bayes e o LDA tenham desempenho inferiores aos demais.

Mas, o cuidado nesse aspecto não é somente de se avaliar qual algoritmo “acerta” mais. Imagine o seguinte: existe um sistema que controla um reator nuclear e ele deve alertar se há ou não risco de vazamento. 

Um típico problema de classificação com duas categorias (existe vazamento / não existe vazamento) sobre o qual reside uma decisão de projeto. Responda o que é pior: o sistema emitir um alerta quando não há vazamento ou não emitir um alerta quando há vazamento?

Nesse caso, é óbvio que o falso positivo tem consequências menos trágicas que um falso negativo. Saber qual medida se deseja privilegiar também pode ajudar na escolha. Nesses casos, somente testes comparativos sobre o problema com os algoritmos escolhidos previamente podem nos ajudar a acertar na escolha.

Como utilizar os algoritmos de machine learning a seu favor? Conclusão

Como vimos, projetar um sistema de aprendizado de máquina que reconheça padrões não é uma tarefa simples. Os aspectos citados neste artigo podem ajudá-lo a escolher de forma mais consciente os algoritmos de machine learning para aumentar, assim, sua chance de sucesso. Para terminar o artigo um último conselho: teste sempre que puder!

Se você quer se aprofundar ainda mais no assunto e aprender a solucionar problemas por meio do aprendizado de máquina, considere cursar o MBA em Machine Learning da XP Educação. Com ele, você é capaz de avaliar cenários, definir as melhores técnicas a serem utilizadas e se tornar um profissional disputado no mercado!

spot_img

Continue Aprendendo

spot_img