Três Maneiras de Usar Ensembles para Melhorar a Performance de seus Modelos de Machine Learning

Ensemble Learning é uma área de Machine Learning que estuda maneiras de agrupar os resultados de diversos modelos com o objetivo de obter uma melhor generalização. Esta área ganhou bastante destaque quando o prêmio do Netflix foi dado a times que uniram centenas de modelos para alcançar os 10% de melhora no sistema de recomendação e receber o prêmio milionário.

O princípio é simples e depende principalmente de dois fatores: a precisão e a diversidade dos modelos que integram o ensemble. A precisão dos modelos deve ser bastante similar, mas o modo como eles chegam a essa precisão deve ser diferente.

No nosso exemplo, vamos usar dados de um problema de classificação binária com cerca de 20 variáveis independentes. A métrica de avaliação da performance será log loss. Os modelos devem prever a probabilidade de um exemplo pertencer à classe positiva. Esta métrica pune rigorosamente modelos muito confiantes em previsões erradas, como por exemplo, prever que uma instância negativa tenha 80% de chance de ser positiva. Quanto menor a log loss, melhor.

Os números relatados são obtidos a partir de um validation set separado, com 10% dos dados. Ou seja, temos 90% dos dados para treino, e 10% para validação.

No nosso ensemble vamos utilizar 4 modelos, cada um treinado apenas em variáveis similares escolhidas manualmente. Existem três maneiras muito utilizadas de fazer o ensemble: média simples, média ponderada, ou treinar um outro modelo de Machine Learning usando como variáveis as previsões dos modelos originais (conhecido como blending).

Neste artigo vamos analisar apenas a média simples e o blending. Os princípios utilizados no blending podem ser facilmente utilizados com a média ponderada. Todos os modelos utilizados aqui são regressões logísticas.

Média simples

Log Loss: 0.4273

Normalmente a média simples dos modelos envolvidos no ensemble nos dá um ótimo resultado. Neste caso, talvez pelo fato dos modelos buscarem padrões bem diferentes, ela acabou sendo a hipótese com o pior desempenho.

É recomendável que a primeira tentativa seja essa, pois é fácil de fazer e, se apresentar um bom resultado, pode tornar desnecessário tentar outras.

Blending

Para o blending utilizaremos as previsões dos modelos originais para alimentar uma outra regressão logística que nos dará a previsão final. As variáveis independentes deste modelo final serão o scores dos modelos anteriores, individuais, antes da transformação pela função sigmoide. Ou seja, o valor das variáveis multiplicados pelos pesos dos modelos.

Dentro do blending vamos tratar de duas possibilidades: treinar os modelos originais em todo o training set, e depois usar as previsões deles neste mesmo conjunto de dados para obter os coeficientes da regressão logística final; ou treinar os modelos originais em 90% do training set, e deixar 10% separados como “ensemble set”, para treinar apenas o modelo final. Estes conjuntos de dados são criados aleatoriamente a partir do training set original.

Usando o mesmo training set para todos os modelos
Log Loss: 0.4101

Apesar de corrermos o risco de overfitting ao usar o mesmo conjunto de dados para os modelos originais e o ensemble, houve uma melhora significativa ao testarmos nos dados que deixamos separados no início. Isso possivelmente deve-se ao fato de alguns modelos possuírem uma precisão significativamente maior do que os outros, o que atribui a eles uma maior importância.

Usando 90% do training set para os modelos originais e 10% para o ensemble set
Log Loss: 0.4068

Neste caso vemos que havia um pouco de overfitting no modelo anterior. Ao separarmos o training set original e deixarmos uma parte dele exclusiva para descobrir o peso de cada modelo no ensemble estamos ajudando na generalização, apesar da diferença não ser tão grande quanto do primeiro para o segundo.

Observações finais

Ao escolhermos o terceiro cenário demonstrado, temos mais um parâmetro para ajustar, que é a divisão de dados que usaremos para treinar os modelos originais, e o ensemble. Neste caso testamos apenas 90/10, mas outras quantidades podem oferecer uma melhora ainda maior dependendo do caso.

No caso da média ponderada, em vez de utilizarmos uma regressão logística para o ensemble, usaríamos uma otimização simples de pesos para cada modelo original também baseada no “ensemble set”.

Neste caso tratamos de um exemplo específico com quatro modelos baseados em variáveis diferentes, mas se você possui vários modelos baseados em algoritmos com propriedades diferentes (uma decision tree e uma regressão logística, por exemplo) que estão oferecendo uma precisão parecida, juntá-los é um caminho fácil e quase infalível de obter uma performance melhor.

Leave a Reply

Your email address will not be published. Required fields are marked *