O que é Overfitting?

Edilson Santos
comunidadeds
Published in
4 min readNov 22, 2023

Os conceitos de Overfitting e Underfitting são muito comuns nos modelos de Machine Learning e saber como identificar e lidar com eles é essencial para a performance do algoritmo.

Overfitting vs Underfitting

Antes de definirmos esses conceitos precisamos entender como funciona a divisão dos dados em um modelo de Machine Learning. Geralmente nós dividimos os dados em Treino e Teste.

Divisão entre Treino e Teste

Imagine o processo de aprender uma matéria na escola ou faculdade: primeiro é fornecido o material para você estudar e depois é aplicado uma prova para verificar se você realmente aprendeu. O Machine Learning é parecido, o material de estudo seriam os dados de Treino e a prova seriam os dados de Teste. Nesse caso nós separamos uma parte dos dados para o modelo aprender e uma parte para testá-lo:

Fig.1 — Divisão entre Treino e Teste.

Portanto, os dados de Teste são uma parte dos dados originais que separamos para simular dados que o modelo nunca viu.

Como Acontece o Overfitting e Underfitting?

O Overfitting ocorre quando o modelo se ajusta demais aos dados de treino, porém quando ele é testado nos dados de teste, ele erra muito, ou seja, ele não está conseguindo generalizar o que ele aprendeu no treino para dados nunca vistos no teste.

Voltando ao exemplo das provas, é como se você tivesse decorado o material que foi fornecido para estudar, e quando chega na hora da prova você erra várias questões por ter apenas decorado, e não entendido a matéria.

O overfitting geralmente acontece quando usamos um modelo muito complexo que acaba se adaptando demais aos a esses dados de treino.

Já o Underfitting é o oposto. Nesse caso o modelo é tão simples que ele não consegue capturar os padrões dos dados, é como se você colocasse uma criança de 5 anos para aprender física quântica, está acima da capacidade dela.

Fig. 2 — Visualização do Overfitting e Underfitting.

Observe que no gráfico da esquerda, o modelo(linha azul) tenta se ajustar a todos os pontos de treinamento(rosa), e quando um ponto novo(vermelho) aparece, geralmente está longe do modelo.

Já no gráfico da direita, o modelo simplesmente não tem capacidade de se ajustar os dados por ser muito simples(uma reta). O que buscamos é o modelo do meio, que tem um erro parecido tanto para dados do treinamento quanto do teste, ou seja, capacidade de generalização.

Outras Causas do Overfitting e Underfitting

Além da complexidade do modelo, existem outros fatores que podem contribuir para o aparecimento do over e underfitting:

  • O conjunto de dados não foi limpo ou processado adequadamente, pode possuir ruídos, outliers ou variáveis que atrapalham o modelo.
  • Quantidade de dados insuficientes.

Como Resolver o Overfitting e Underfitting?

Temos algumas soluções para resolver ambos os problemas:

  • Escolher o modelo apropriado para seu dataset: caso esteja enfrentando um problema de overfitting, escolha um modelo mais simples, se estiver enfrentando o underfitting, um mais complexo.
  • Ajuste de Hiperparâmetros: cada modelo tem parâmetros que podem ser ajustados para torná-lo mais simples/complexo, você pode tentar ajustá-los para aumentar a capacidade de generalização.
  • Técnicas de regularização: Existem técnicas que ajudam a penalizar variáveis que não estão ajudando o modelo a performar bem.
  • Coletar mais dados: Às vezes o conjunto de dados é muito pequeno e insuficiente para o modelo capturar qualquer padrão dentro deles.
  • Validação Cruzada: Pode ser que na hora que você dividiu o conjunto de treino e teste, acabou deixando a parte mais importante dos dados para o teste, o que impediu o modelo de aprender corretamente, a validação cruzada divide o conjunto de dados várias vezes de forma diferente para impedir que isso ocorra.
Fig. 3 — Como funciona a Validação Cruzada.

Conclusão

Conseguimos observar que o overfitting é um problema bastante comum nos modelos de Machine Learning e que deve ser tratado com atenção, pois pode trazer problemas futuros caso seja enviado para produção dessa forma. Felizmente, temos vários modos de resolvê-lo, e compreender o conceito de overfitting combinado com esses modos deve ser considerado por todos os cientistas de dados.

Como exercício aqui está um exemplo do próprio Scikit-Learn, uma das bibliotecas mais utilizadas de Machine Learning, de o que é Overfitting e um exemplo com código, é só baixá-lo no fim da página e rodar no seu computador. Você pode também alterar os hiperparâmetros do modelo para ver como o overfitting ocorre!

--

--