Algoritmos de Aprendizagem de Máquina: qual deles escolher?

Um guia rápido sobre vários algoritmos em diferentes tarefas de aprendizagem

Nota do Tradutor: este post é uma tradução do artigo original escrito por Daniil Korbut para o Statsbot.


Quando eu estava iniciando na área de data science, frequentemente enfrentava o problema de escolher o algoritmo mais apropriado para um problema específico. Se você é igual a mim, quando lê um artigo sobre algoritmos de aprendizagem de máquina você vê uma enxurrada de especificações detalhadas. O paradoxo é que elas não facilitam a nosa escolha.

Em um artigo para a Statsbot, eu tentei explicar os conceitos básicos e dar alguma intuição sobre o uso de diferentes tipos de algoritmos de aprendizagem de máquina em várias tarefas. Ao final do artigo, você encontra uma revisão estruturada das principais características dos algoritmos descritos.

Primeiramente, devemos distinguir 4 tipos de tarefas de aprendizagem de máquina:

  • aprendizagem supervisionada
  • aprendizagem não-supervisionada
  • aprendizagem semi-supervisionada
  • aprendizagem por reforço

Aprendizagem Supervisionada

Aprendizagem supervisionada é a tarefa de encontrar uma função a partir de dados de treinamento rotulados. O objetivo é encontrar os parâmetros ótimos que ajustem um modelo que possa prever rótulos desconhecidos em outros objetos (o conjunto de teste). Se o rótulo é um número real, a tarefa chama-se regressão. Se o rótulo vem de um conjunto finito e não ordenado, então a tarefa chama-se classificação.

Illustration source

Aprendizagem Não-supervisionada

Na aprendizagem não-supervisionada temos menos informação sobre os objetos, em particular, o conjunto de treinamento não é rotulado. O nosso objetivo, neste contexto, é observar algumas similaridades entre os objetos e incluí-los em grupos apropriados. Alguns objetos podem diferir largamente de todos os grupos e, deste modo, podemos assumir que estes objetos são anomalias.

Illustration source

Aprendizagem Semi-supervisionada

A aprendizagem semi-supervisionada inclui ambos os problemas discutidos antiormente: ela usa dados rotulados e não-rotulados. Esta é uma grande oportunidade para quem não pode bancar o preço de rotular seus dados. Este método permite-nos melhorar significativamente a acurácia, pois permite utilizar dados não rotulados juntamente com uma pequena quantidade de dados rotulados.

Illustration source

Aprendizagem por Reforço

Aprendizagem por reforço é diferente de todas as tarefas anteriores porque não há conjunto de treinamento, rotulado ou não. Aprendizagem por reforço é uma área de aprendizagem de máquina que investiga como agentes de software devem agir em determinados ambientes de modo a maximizar alguma noção de recompensa cumulativa.

Illustration source

Imagine que você é um robô em um lugar desconhecido. Você pode realizar atividades e receber recompensas do ambiente pelas atividades realizadas. Após cada ação seu comportamento ficará mais complexo e inteligente, ou seja, você está treinando para se comportar de modo mais efetivo a cada instante. Em biologia, isto é chamado de adaptação ao ambiente natural.

Algoritmos de Aprendizagem de Máquina Comumente Utilizados

Agora que temos uma certa intuição sobre os tipos de tarefas de aprendizagem de máquina, vamos explorar os algoritmos mais populares com suas aplicações no mundo real.

Regressão e Classificação Linear

Estes talvez sejam os algoritmos mais simples em aprendizagem de máquina. Você dispõe de características (ou atributos) x1, x2, …, xn sobre objetos (matriz A) e os seus rótulos (vetor b). O objetivo é encontrar um conjunto de pesos e viés ótimo para estas características de acordo com alguma função de custo, como por exemplo MSE (mean squared error) ou MAE (mean absolute error) para regressão. No caso de MSE há uma equação matemática do método quadrados mínimos:

Na prática é mais fácil otimizar com o método da descida do gradiente (gradient descent), que é muito mais eficiente computacionalmente. Apesar de sua simplicidade, este algoritmo funciona muito bem quando se tem milhares de características, por exemplo, bag of words ou n-grams em análise de texto. Algoritmos mais complexos sofrem de sobreajuste (overfitting) quando se tem muitas características em conjuntos de dados pequenos, ao passo que regressão linear provê qualidade razoável.

Illustration source

Para prevenir o sobreajuste, normalmente utilizamos técnicas de regularização, tais como LASSO e Ridge. A ideia é adicionar a soma dos módulos dos pesos e soma dos quadrados dos pesos, respectivamente, à função de custo. Leia um excelente tutorial sobre estes algoritmos no final deste post.

Regressão Logistica

Apesar do seu nome, este é um algoritmo de classificação e não um método de regressão. A regressão logística realiza classificação binária, portanto os rótulos de saída são dicotômicos. Vamos definir P(y=1 | x ) como a probabilidade condicionada de que a saida y é 1 quando dado como entrada um vetor de características x. Os coeficientes w são os pesos do modelo que serão encontrados pelo algoritmo.

Este algoritmo calcula a probabilidade do objeto pertencer a cada classe. Por isso, a função de custo pode ser a diferença entre a probabilidade predita e o rótulo 0 ou 1, e calcular a média para todos os objetos como fizemos na regressão linear. Esta função de custo é conhecida como média das entropias cruzadas (average of cross-entropies):

Não entre em pânico, vou explicar tudo. Seja y o vetor de resposta corretas, 0 ou 1, e y_pred o vetor de respostas preditas. Se y é igual a 0, então o primeiro termo da soma é 0 e o segundo termo representa a classe 0. Quanto mais próximo de zero, mais proximo de 1 será este termo devido ao logaritmo. O mesmo raciocínio se aplica quando y for igual a 1.

Por que a regressão logística é tão interessante? Ela recebe uma combinação linear de características e aplica uma função não linear (sigmoid) a ela, de modo que é uma instância bem pequena de uma rede neural!

Árvores de Decisão

Outro algoritmo popular e fácil de compreender é o Árvores de Decisão. O resultado é fácil de visualizar e o seu processamento requer uma abordagem sistemática e bem documentada.

A ideia deste algoritmo é simples. Em cada nodo escolhemos o melhor valor entre todas as características e todos os pontos possíveis de corte (split). Cada corte é selecionado de tal modo que maximize alguma função. Em árvores para classificação, utiliza-se entropia cruzada (cross entropy) e Gini index. Em árvores para regressão minimiza-se a soma dos erros quadrados entre a valor predito e o valor dos pontos que caem naquela região.

Illustration source

Este procedimento é definido recursivamente para cada nodo e encerra quando encontramos um critério de parada, como por exemplo, número mínimo de folhas em um nodo ou a altura máxima da árvore. Uma árvore sozinha é utilizada muito raramente, mas em combinação com muitas outras elas formam algoritmos muito eficientes tais como Florestas Aleatórias ou Gradient Tree Boosting.

K-médias

Algumas vezes não se sabe os rótulos dos objetos e o nosso objetivo é atribuir rótulos aos objetos. Esta tarefa é denominada análise de agrupamento (clustering).

Suponha que você deseja dividir todos os objetos em k grupos. Você pode selecionar k pontos aleatóriamente do seu conjunto de dados e nomeá-los centros de grupos. Os grupos de objetos são definidos por sua proximidade com algum centro de grupo. Então, os centros dos grupos são atualizados e o processo se repete até que haja convergência.

K-médias é a técnica de agrupamento mais simples, mas também apresenta desvantagens. Primeiro, você deve saber de antemão quantos grupos deve haver e geralmente é isto que não sabemos. Segundo, os resultados dependem dos pontos inicialmente escolhidos e o algoritmo não garante que iremos alcançar um mínimo global da função objetivo que o k-médias tenta otimizar.

Há uma grande quantidade de métodos de agrupamento com vantagens e desvantagens. Você pode aprender mais sobre eles na seção de leituras recomendadas.

Principal component analysis (PCA)

Você já se preparou para uma avaliação difícil em poucas horas? Você não tem como lembrar de toda a informação, mas você quer maximizar a informação que você pode lembrar no tempo disponível, como por exemplo, tentar aprender primeiro os teoremas que são mais frequentes em avaliações anteriores.

Análise de Componentes Principais (principal component analysis, PCA) é baseado na mesma ideia. Este algoritmo provê redução de dimensionalidade. Algumas vezes você tem uma grande quantidade de características, provavelmente muito correlacionadas entre si, e os modelos podem facilmente serem sobreajustados em um grande conjunto de dados. Neste cenário, aplica-se PCA.

PCA calcula a projeção dos dados em algum vetor que maximize a variança dos dados e perca a menor quantidade de informação possível. Surpreendentemente, estes vetores são os autovetores da matriz de correlação das características de um conjunto de dados.

Illustration source

O algoritmo é definido pelos seguintes passos:

  1. Calcule a matriz de correlação das colunas de características (atributos) e encontre os autovetores desta matriz.
  2. Calcule a projeção de todas as características nos autovetores encontrados no passo anterior.

Novas características são coordenadas de uma projeção e seu número depende do número de autovetores, com os quais você calcula a projeção.

Redes Neurais

Mencionei redes neurais antes, quando falávamos sobre regressão logística. Há uma grande variedade de arquiteturas que são mais adequadas para tarefas específicas. Muito frequentemente, é uma sequencia de camadas ou componentes com conexão linear entre eles seguidos de não linearidades.

Se você trabalha com imagens, redes neurais convolutivas profundas apresentam ótimos resultados. As não-linearidades são representadas pelas camadas de convolução e pooling, capazes de capturar as características mais marcantes das imagens.

Illustration source

Para quem trabalha com texto e sequências, recomenda-se que escolham redes neurais recorrentes (recurrent neural networks, RNN). RNN incluem os módulos LSTM ou GRU e podem trabalhar com dados, quando a dimensionalide é conhecida a priori. Talvez, uma das aplicações mais conhecidads das RNN é tradução automática.

Conclusão

Espero ter conseguido explicar de modo geral os principais pontos sobre os algoritmos mas utilizados em aprendizagem de máquina e dar uma intuição de como escolher um deles para seu problema específico. Para tornar as coias mais fáceis, preparei uma visão geral das suas principais características:

Regressão e Classificação Linear. Apesar da aparente simplicidade, eles são muito úteis quando a quantidade de atributos é muito grande, onde algoritmos melhores tendem a sofrer de sobreajuste.

Regressão Logística é o classificador não-linear mas simples com uma combinação linear de parâmetros e função não-linear (sigmoid) para classificação binária.

Árvores de Decisão é geralmente similar ao processo de decisão das pessoas e é muito fácil de interpretar. Entretanto, é mais utilizado em combinação tais como Florestas Aleatórias e Gradient Boosting.

K-médias é um algoritmo bem simples e muito fácil de compreender. Pode perfeitamente servir de base de comparação em uma gama de problemas.

PCA é uma grande escolha se o problema é reduzir a dimensionalidade do espaço de características com um mínimo de perda de informação.

Redes Neurais representam a nova leva de algoritmos de aprendizagem de máquina e podem ser aplicados a muitas tarefas, mas seu treinamento exige uma enorme capacidade computacional.

Para saber mais


Nota do Tradutor: este post é uma tradução de um artigo original escrito por Daniil Korbut para o Statsbot.