Um mapa do norte da Europa com um carrinho de brinquedo preto por cima dele
Photo by Mihis Alex from Pexels

Entendendo Underfit e Overfit com Mapas

Matheus Freitag
Indeorum
5 min readApr 17, 2020

--

Compreendendo visualmente duas das situações mais rotineiras no treinamento de modelos

Dois dos conceitos mais conhecidos (e evitados) de qualquer Cientista de Dados são o underfitting e o overfitting de um modelo, onde temos erros na disponibilização de dados a serem fornecidos a um modelo de Machine Learning qualquer, ou ainda temos problemas na própria configuração dos algoritmos. Para aqueles mais experientes e para aqueles que ainda são novatos, vamos todos sair do mesmo ponto:

O que é Underfit e Overfit?

O principal objetivo dos nossos modelos de Machine Learning é entender como os nossos dados preexistentes se comportam e, finalmente, tentar prever como um novo dado desconhecido se comportará dentro deste universo. Para fazermos isso fornecemos uma parcela de dados já conhecidos para o modelo a fim de ensiná-lo (geralmente de 70% a 80% dos dados existentes são usados para treino) e deixamos o restante, cujo comportamento já conhecemos, para que o modelo faça suas previsões e possamos enfim validá-las.

O Underfit ocorre quando o modelo não consegue criar uma regra para descrever o comportamento dos dados. Ele não compreende todas as nuances e regras que descrevem o ecossistema e acaba, consequentemente, gerando previsões simplistas e erradas. Isso pode ocorrer por um baixo número de exemplos para treino, ou pela arquitetura do modelo que o impossibilita de criar regras mais específicas para tomada de decisões. Seria como um aluno que não consegue compreender alguma matéria e responde questões de prova com respostas genéricas, que não apresentam uma solução ou conclusão ao que foi indagado.

O Overfit por sua vez ocorre quando o modelo não aprende, mas, de certo modo, “decora” os nossos dados. Um dataset provavelmente possuirá ruído e/ou erros de cadastramento. Uma boa limpeza dos dados pode evitar ou minimizar o overfit, mas, quando ele ocorre, temos uma performance muito boa na fase de treino do modelo. Este modelo, contudo, falha ao tentar generalizar as regras aprendidas para dados não vistos. Quase como um aluno que decora questões de provas passadas, porém, não consegue aplicar o conhecimento em questões nunca vistas antes.

Este é o Mapa do Brasil:

Mapa Político Brasileiro. IBGE-2018

O Brasil conta, hoje, com 26 estados e 1 Distrito Federal, totalizando 27 entidades federativas, que estão ilustradas no mapa acima. O que iremos fazer aqui é treinar Árvores de Decisão para tentar prever o formato dos estados e, em seguida, induzir um underfit e um overfit do modelo para visualizar estes efeitos na prática.

Por que Árvores de Decisão?

Árvores de Decisão são uma classe de algoritmos de Machine Learning com conceitos fáceis de compreender e, também, que são fáceis de induzir os efeitos que queremos aqui. Especificamente, iremos usar neste projeto um conjunto de Árvores de Decisão chamadas Random Forests. Este artigo não busca explicar com detalhes estes algoritmos, porém, informações sobre eles podem ser encontradas aqui. Neste projeto também utilizaremos a biblioteca Scikit-Learn na construção do modelo, bem como no tratamento dos dados.

Underfit

Como vimos anteriormente, o Underfit pode ser induzido quando limitamos o poder de especificação, ou de detalhamento, do modelo, impedindo-o de compreender regras mais complexas de comportamento.

Com o exemplar acima, nós impedimos o modelo de aprofundar muito suas folhas, o que evita regras muito específicas e, também, o obrigamos a ter muitos exemplos em cada folha, impedindo ainda mais um detalhamento. O resultado é o visto abaixo:

Mapa do Brasil desenhado por um modelo com Underfit

Percebemos pelo resultado acima que o modelo é incapaz de compreender as nuances das fronteiras, e generaliza muito os desenhos dos estados. Apenas 7 unidades federativas acabam por fazer parte do mapa, e o restante nem mesmo aparece. Os remanescentes são desenhados com características muito diferentes das reais, apesar de conseguirmos enxergar mais ou menos de onde cada um se origina. Isso é um exemplo de underfit do modelo.

Overfit

Também como visto anteriormente, o overfit ocorre quando o modelo superestima as nuances e até ruídos do dataset, gerando bons resultados com dados conhecidos, mas produzindo regras pouco generalistas para dados nunca antes vistos.

O modelo acima é deixado com nenhum acerto de parametrização. Isso tende a gerar overfit porque agora o modelo tem a liberdade para decidir até onde pretende especificar as suas folhas, criando assim regras extremamente específicas para os dados de treino. Nós também estamos treinando-o com todos os dados disponíveis, sem separação de treino e teste. Isto também gera overfit, porque todas as previsões serão feitas com regras derivadas de dados já conhecidos. O resultado pode ser visto abaixo:

Mapa do Brasil desenho por um modelo com Overfit

Podemos visualizar este efeito em alguns estados mais do que outros mas, em todos eles, temos linhas de fronteiras extremamente tortuosas e complexas. O modelo está viciado nas nuances do dataset e é incapaz de generalizar bem o formato de cada unidade federativa, causando erros nas bordas do mapa.

Resultados

Da esquerda para direita: Mapa Real, Mapa de um modelo com Underfit, Mapa de um modelo com Overfit.

Com posse dos 3 mapas gerados, podemos visualizar o Underfit e o Overfit de modelos e como isso impacta nas nossas previsões, além da importância de realizar ajustes de acordo, quando esses problemas são detectados. O Mapa Real provavelmente será uma utopia em muitos casos, mas ele irá guiar todas modificações de modelo, limpezas de dados e tomadas de decisão para que o resultado de qualquer modelo seja sempre o mais parecido possível com a realidade.

Um repositório com o notebook deste projeto pode ser encontrado neste link do GitHub, e os dados estão disponíveis pela plataforma do IBGE.

--

--

Matheus Freitag
Indeorum

We either accept reality or take the responsibility to change it.