Pular para o conteúdo principal

Overfitting vs. Underfitting: um guia prático de diagnóstico de modelos

Um passo a passo detalhado sobre overfitting e underfitting em machine learning: como identificar cada falha, por que acontecem e como corrigi-las via trade-off viés-variância.
Atualizado 12 de jun. de 2026  · 12 min lido

Você sabe por que seu modelo tem 99% de acurácia nos dados de treino, mas não acerta quase nada em produção?

Existe uma diferença entre um modelo que memorizou e um modelo que aprendeu. Generalização é o objetivo da aprendizagem de máquina: você quer previsões que se sustentem em dados que o modelo nunca viu, não só nos dados usados no treinamento. Quando isso não acontece, quase sempre o problema cai em um de dois lados.

Esses dois lados são overfitting e underfitting. Você precisa saber qual deles está enfrentando antes de corrigir.

Neste artigo, vou mostrar como reconhecer overfitting e underfitting, por que acontecem e os passos práticos para encontrar o equilíbrio.

O que é underfitting?

Underfitting acontece quando seu modelo é simples demais para representar o que realmente está acontecendo nos dados.

Imagine tentar prever preços de casas com uma única regra: "toda casa custa US$ 300.000". Essa regra vai errar quase sempre. Ela ignora bairro, metragem, número de quartos, garagem ou ano de construção. O modelo não tem flexibilidade suficiente para acompanhar o padrão.

Você identifica underfitting sempre do mesmo jeito. Acurácia de treino é baixa, e a de teste também. Os dois números são ruins — o importante é que são ruins juntos.

Um caso clássico é ajustar uma linha reta a dados que fazem uma curva. A linha corta o meio e perde o formato. Não adianta dar mais dados de treino: o modelo simplesmente não consegue representar a relação.

Underfitting example

Exemplo de underfitting

O que é overfitting?

Overfitting é o problema oposto. O modelo é complexo demais.

Em vez de aprender o padrão geral, ele memoriza o conjunto de treino. Cada ruído, cada outlier, cada pico e vale, cada coincidência nos dados recebe atenção como se fosse um padrão real. O modelo fica quase perfeito para os dados em que foi treinado.

A vantagem do overfitting é que ele é fácil de detectar. Acurácia de treino parece ótima, mas a de teste é péssima.

Pense em um aluno que decora as respostas do simulado palavra por palavra, mas não aprende o conteúdo. Vai bem no treino e provavelmente fracassa na prova real.

Overfitting example

Exemplo de overfitting

Overfitting vs underfitting: principais diferenças

Agora que você viu os dois, a diferença fica mais clara. Modelos com underfitting não performam nem nos dados que já viram. Modelos com overfitting não performam nos dados que ainda não viram.

Eles também se comportam de forma distinta durante o treino:

  • Underfitting aparece como desempenho mediano e estável em tudo — o modelo praticamente não aprende
  • Overfitting aparece como um gap: as métricas de treino continuam subindo enquanto as de teste estagnam ou pioram com o tempo

As causas também se espelham. Underfitting vem do "fazer de menos": modelos simples e falta de features. Overfitting vem do "fazer demais": modelos complexos e features em excesso.

Aqui vai um resumo dos dois:

Underfitting compared to overfitting

Underfitting comparado a overfitting

Como identificar overfitting e underfitting

Saber como eles parecem na teoria é uma coisa; pegá-los nos seus próprios modelos é outra.

O jeito mais simples é comparar erro de treino com erro de teste e analisar curvas de aprendizado.

Erro de treino vs. erro de teste

O check mais rápido é dividir os dados em treino e teste, treinar o modelo e olhar o erro em cada um.

No underfitting, ambos os erros serão altos. O modelo não aprendeu bem os dados de treino e não vai performar melhor em dados que nunca viu. O resultado ruim aparece dos dois lados.

No overfitting, o erro de treino fica bem baixo enquanto o erro de teste permanece alto. O modelo memorizou o treino, mas esse conhecimento não generaliza.

Training vs test error visualization

Visualização: erro de treino vs. erro de teste

Avalie o gap entre esses dois números. Gap pequeno com erros altos indica underfitting. Gap grande com erro de treino baixo e erro de teste alto indica overfitting. Gap pequeno com erros baixos em ambos é o ideal — significa que o modelo aprendeu a representação real dos dados.

Curvas de aprendizado

Curvas de aprendizado traçam erro de treino e validação em função do tamanho do conjunto de treino ou das iterações. Elas mostram o que acontece enquanto o modelo aprende.

Em um modelo com underfitting, ambas as curvas achatam rápido em erro alto. Adicionar mais dados não ajuda, porque o modelo não consegue representar o padrão. As duas curvas permanecem altas.

Underfit model curves

Curvas de um modelo com underfitting

Em um modelo com overfitting, a curva de treino cai quase a zero enquanto a de validação permanece alta. O gap entre elas cresce conforme o treino continua. Esse gap crescente é a cara do overfitting no gráfico.

Overfit model curves

Curvas de um modelo com overfitting

Um modelo saudável mostra as duas curvas caindo e se encontrando em erro baixo, com um gap pequeno entre elas.

Por que acontecem overfitting e underfitting

Depois de saber identificar, a próxima pergunta é por que eles surgem. Ambos vêm de um descompasso entre o modelo e o problema — mas em direções opostas.

Causas de underfitting

Underfitting quase sempre se explica por um destes três motivos:

  • Modelo simples demais: um modelo linear não representa uma relação curva. Falta capacidade para o que o problema exige.
  • Features insuficientes: mesmo um modelo capaz vai subajustar se você der entradas erradas. Prever preço de casa só pelo CEP não faz sentido e ignora metragem, quartos, estado, idade e tamanho do lote. O modelo não tem insumos úteis.
  • Treinamento insuficiente: faltaram profundidade, iterações, épocas ou ajustes de taxa de aprendizado para chegar a uma boa solução. O treino parou cedo demais.

Causas de overfitting

Overfitting surge quando o modelo tem mais liberdade do que os dados pedem.

  • Modelo complexo demais: uma rede neural profunda com milhões de parâmetros treinada em um dataset minúsculo tem espaço de sobra para memorizar. A capacidade excede o que o problema precisa.
  • Features demais: quando há mais features do que padrões significativos nos dados, o modelo aprende correlações que existem só no seu treino e não se repetem fora dele.
  • Dataset pequeno demais: com poucos dados, até modelos moderados conseguem memorizar tudo. Faltam exemplos para generalizar.
  • Treino longo demais: o modelo continua ajustando pesos depois de já ter aprendido o padrão real e passa a ajustar o ruído. Dali em diante, mais treino só piora.

O trade-off viés-variância

O trade-off entre viés e variância explica por que desempenho de modelo é sobre achar o ponto ideal em que ele generaliza bem para dados não vistos sem simplificar demais o problema nem se ajustar em excesso ao treino.

Viés alto

Viés é o erro que vem das suposições do modelo sobre os dados. Um modelo com viés alto tem suposições fortes e simplistas. Ele não representa a complexidade real do que acontece nos dados.

Isso é exatamente o underfitting. O modelo é rígido demais para encaixar os padrões, então erra as previsões independentemente da quantidade de dados.

Se você treinar um modelo com viés alto 100 vezes em amostras diferentes, todos os 100 vão cometer erros parecidos. As previsões se agrupam em torno da resposta errada.

Variância alta

Variância é o erro que surge quando o modelo é sensível demais aos dados específicos de treino. Um modelo com variância alta capta todo pequeno padrão — geralmente, o ruído.

Isso é o overfitting. O modelo se ajusta muito ao conjunto de treino, mas pequenas mudanças nos dados de treino geram previsões bem diferentes.

Se você treinar um modelo com variância alta 100 vezes em amostras diferentes, terá 100 modelos muito distintos. As previsões variam demais, até para a mesma entrada.

O equilíbrio

Você não elimina totalmente nem viés nem variância — apenas transita entre eles.

Ao reduzir o viés tornando o modelo mais complexo, a variância sobe. Ao reduzir a variância simplificando o modelo, o viés sobe. A meta é achar o meio-termo, onde o erro total é o menor possível.

Bias-variance tradeoff example

Exemplo do trade-off viés-variância

Como corrigir underfitting

Depois de diagnosticar underfitting, há algumas formas de resolver. Todas aumentam a capacidade do modelo de representar os padrões dos seus dados.

  • Aumente a complexidade do modelo: migre para um modelo mais flexível. De regressão linear para polinomial, ou de uma árvore rasa para outra mais profunda.
  • Adicione mais features: inclua entradas que realmente agreguem valor. Crie termos de interação, features polinomiais ou features específicas do domínio que o modelo não tinha.
  • Treine por mais tempo: o modelo pode não ter tido tempo suficiente para convergir. Dê mais épocas ou ajuste o schedule da taxa de aprendizado.
  • Reduza a regularização: regularização mantém o modelo simples — o oposto do que underfitting precisa. Diminua a força da regularização ou remova-a para dar mais liberdade ao modelo.

Algumas boas features costumam impactar mais do que trocar de arquitetura. Comece por aí antes de mexer no modelo em si.

Como corrigir overfitting

Para corrigir overfitting, a abordagem é o inverso. Você precisa restringir o modelo para que ele pare de memorizar os dados de treino.

  • Colete mais dados: um dataset maior dificulta a memorização. Mais exemplos forçam o modelo a encontrar padrões que valem para todo o conjunto, não só para algumas linhas.
  • Aplique regularização: L1 e L2 adicionam penalidade para pesos grandes, evitando que o modelo dependa demais de uma única feature. É uma das correções mais confiáveis.
  • Reduza a complexidade do modelo: se o modelo está grande demais para os dados, diminua. Use menos parâmetros, árvores mais rasas ou redes menores.
  • Use validação cruzada: validação cruzada dá uma leitura mais fiel de como o modelo vai performar em dados não vistos, com vários splits treino-teste a partir de um único dataset.
  • Aplique dropout em redes neurais: Dropout desativa aleatoriamente uma porcentagem de neurônios durante o treino. Isso força a rede a aprender representações redundantes e reduz a dependência de um único neurônio.
  • Pare de treinar mais cedo: monitore o erro de validação e interrompa quando ele começar a subir, mesmo que o erro de treino continue caindo. Isso é early stopping e é uma das mudanças mais fáceis de implementar.

Regularização e early stopping costumam ser os primeiros passos. Não custam nada e quase sempre ajudam.

Overfitting e underfitting em diferentes modelos

Famílias de modelos diferentes apresentam underfitting e overfitting de jeitos próprios. Veja como três comuns falham nos dois sentidos.

Modelos lineares

  • Underfitting: modelos lineares assumem relação em linha reta. Quando o padrão real é curvo, o modelo não acompanha, por mais dados que você forneça.
  • Overfitting: com termos polinomiais e de interação demais, até regressão linear memoriza ruído. Métodos de regularização como Ridge e Lasso existem principalmente para lidar com isso.

Árvores de decisão

  • Underfitting: uma árvore rasa faz poucas divisões. Com duas ou três decisões, não representa padrões que exigem mais nuance.
  • Overfitting: árvores profundas tendem a sobreajustar. Uma árvore que divide até cada folha ter um único exemplo de treino terá acurácia perfeita no treino e ruim no teste. Por isso existem parâmetros como max_depth, min_samples_split e poda.

Redes neurais

  • Underfitting: redes pequenas demais para o problema vão subajustar. O mesmo vale quando o treino para cedo ou o otimizador fica preso em uma solução ruim.
  • Overfitting: é mais comum em deep learning. Uma rede com milhões de parâmetros pode memorizar até datasets grandes com épocas suficientes. Dropout, weight decay, aumento de dados e early stopping existem para evitar isso.

Mais exemplos de overfitting vs underfitting

Agora vou mostrar dois exemplos clássicos com código para visualizar esses padrões de forma simples.

Regressão polinomial

Uma senoide com ruído é um bom teste. Ao ajustar polinômios de diferentes graus, você vê o comportamento do modelo mudar.

import numpy as np

# Data
np.random.seed(7)
X = np.linspace(0, 1, 30)
y_true = np.sin(2 * np.pi * X)
y = y_true + np.random.normal(0, 0.2, X.shape)

# Fit polynomials of three degrees
X_smooth = np.linspace(0, 1, 300)
degrees = [1, 3, 15]

for degree in degrees:
    coefs = np.polyfit(X, y, deg=degree)
    y_pred = np.polyval(coefs, X_smooth)

Polynomial regression example

Exemplo de regressão polinomial

Grau 1 é uma linha reta que subajusta: não acompanha a curva. Grau 3 representa o formato real — absorve um pouco de ruído, mas fica perto da verdade. Grau 15 faz overfitting, serpenteando por cada ponto de treino e gerando oscilações enormes entre eles.

Árvores de decisão com profundidades variadas

A mesma história aparece com árvores de decisão. Você treina árvores com profundidade crescente nos mesmos dados e mede o erro em treino e teste.

import numpy as np
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# Data
np.random.seed(11)
X = np.linspace(0, 10, 250).reshape(-1, 1)
y = np.sin(X).ravel() + np.random.normal(0, 0.3, 250)

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=0
)

depths = range(1, 21)
train_errors = []
test_errors = []

for depth in depths:
    tree = DecisionTreeRegressor(max_depth=depth, random_state=0)
    tree.fit(X_train, y_train)
    train_errors.append(mean_squared_error(y_train, tree.predict(X_train)))
    test_errors.append(mean_squared_error(y_test, tree.predict(X_test)))

Decision tree example

Exemplo de árvore de decisão

O erro de treino cai conforme a árvore aprofunda, aproximando-se de zero quando cada folha contém um único ponto de treino. O erro de teste cai no início — à medida que a árvore captura relações reais — e depois volta a subir quando divisões mais profundas começam a ajustar o ruído. O mínimo fica na profundidade que equilibra os dois.

Erros comuns ao diagnosticar desempenho de modelos

Mesmo escolhendo a métrica certa, é fácil tirar conclusões erradas. Aqui estão coisas que você não deve fazer ao avaliar o desempenho:

  • Avaliar só a acurácia de treino: ela mostra o quão bem o modelo se ajusta ao que já viu. Não diz nada sobre desempenho em novos dados. Sempre meça em um conjunto separado antes de concluir.
  • Ignorar dados de validação: validação serve para ajustar arquitetura, hiperparâmetros e ponto de parada. O modelo pode acabar fazendo overfitting tanto no treino quanto no teste se você reutilizar demais o mesmo split.
  • Achar que mais complexidade é sempre melhor: modelo maior não é sinônimo de modelo mais capaz. Se seus dados são pequenos ou as relações são simples, mais complexidade só atrapalha. Comece simples e aumente a capacidade apenas quando os diagnósticos pedirem.
  • Confundir ruído com sinal: nem todo padrão no treino vale a pena. Flutuações aleatórias, vieses de amostragem, outliers e artefatos de coleta podem parecer significativos para um modelo flexível. Se você não consegue explicar por que uma relação deveria existir, trate-a com cautela.

Sempre verifique os quatro pontos antes de fechar com um modelo. A maioria das falhas em produção está ligada a um (ou mais) deles.

Conclusão

Underfitting e overfitting são as duas formas de um modelo falhar na generalização. Um fica simples demais para aprender o padrão. O outro tenta aprender cada ponto do seu dataset.

O objetivo real do treino é chegar ao meio-termo, onde viés e variância se equilibram e o erro total é o menor.

Desempenho em validação é a métrica que diz onde você está. Acompanhe durante o treino e deixe a diferença entre erro de treino e validação orientar suas decisões. Se o erro de validação para de melhorar enquanto o de treino segue caindo, você passou do ponto ideal. Se ambos ficam altos, você ainda não chegou lá.

Quer aprender conceitos avançados de ciência de dados e conquistar empregabilidade em 2026? Inscreva-se na nossa Machine Learning Engineer track e vá dos fundamentos a MLOps.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Cientista de dados sênior baseado na Croácia. Principal redator técnico com mais de 700 artigos publicados, gerando mais de 10 milhões de visualizações. Autor do livro Automação do aprendizado de máquina com TPOT.

FAQs

Qual é a diferença entre overfitting e underfitting?

Underfitting ocorre quando o modelo é simples demais para representar os padrões dos seus dados, então ele vai mal tanto no treino quanto no teste. Overfitting é o contrário: o modelo aprende bem demais os dados de treino, inclusive o ruído, performa ótimo no treino e falha em dados novos. Ambos geram previsões fracas, mas por motivos diferentes.

Como saber se meu modelo está com overfitting ou underfitting?

Compare o erro de treino com o de teste. Se ambos forem altos, é underfitting. Se o erro de treino for muito baixo e o de teste for alto, é overfitting. Curvas de aprendizado também ajudam: em overfitting, erros de treino e validação divergem; em underfitting, ficam estáveis em um erro alto.

O que é o trade-off viés-variância?

Viés é o erro de um modelo simples demais; variância é o erro de um modelo sensível demais aos dados de treino. Reduzir um geralmente aumenta o outro, então a meta é equilibrar para minimizar o erro total. Modelos com o melhor equilíbrio generalizam melhor para novos dados.

Coletar mais dados resolve overfitting?

Geralmente ajuda, mas não é garantia. Mais dados dificultam a memorização, forçando o modelo a encontrar padrões que valem para todo o conjunto. Mas se o modelo é complexo demais para o problema, ou suas features são majoritariamente ruído, mais dados não resolvem totalmente. Nesses casos, regularização e modelos mais simples costumam funcionar melhor.

Posso usar early stopping para evitar overfitting em redes neurais?

Sim, e é uma das correções mais fáceis de implementar. Monitore o erro de validação durante o treino e pare quando ele estabilizar ou começar a subir, mesmo que o erro de treino siga caindo. Isso captura o ponto em que o modelo já aprendeu o padrão real e está começando a ajustar o ruído. A maioria dos frameworks de deep learning já tem callbacks de early stopping.

Tópicos

Aprenda com a DataCamp

Curso

Feature Engineering for Machine Learning in Python

4 h
38.8K
Crie novos atributos para melhorar o desempenho dos seus modelos de aprendizado de máquina.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

Modelos generativos versus modelos discriminativos: Diferenças e casos de uso

Este artigo explica as principais diferenças entre os modelos generativos e discriminativos, abordando seus princípios, casos de uso e exemplos práticos para ajudar você a escolher a abordagem certa para suas tarefas de machine learning.
Arun Nanda's photo

Arun Nanda

15 min

blog

A maldição da dimensionalidade no aprendizado de máquina: Desafios, impactos e soluções

Explore a maldição da dimensionalidade na análise de dados e no aprendizado de máquina, incluindo seus desafios, efeitos nos algoritmos e técnicas como PCA, LDA e t-SNE para combatê-la.
Abid Ali Awan's photo

Abid Ali Awan

7 min

Tutorial

Uma introdução às redes neurais convolucionais (CNNs)

Um guia completo para entender as CNNs, seu impacto na análise de imagens e algumas estratégias importantes para combater o overfitting para aplicações robustas de CNNs e aprendizagem profunda.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

Entendendo data drift e model drift: detecção de drift em Python

Navegue pelos riscos do model drift e confira nosso guia prático de monitoramento de data drift.
Moez Ali's photo

Moez Ali

Tutorial

Tutorial do DeepChecks: Automatizando os testes de machine learning

Saiba como realizar a validação de dados e modelos para garantir um desempenho robusto de machine learning usando nosso guia passo a passo para automatizar testes com o DeepChecks.
Abid Ali Awan's photo

Abid Ali Awan

Tutorial

Dominando a retropropagação: Um guia abrangente para redes neurais

Mergulhe nos fundamentos da retropropagação em redes neurais com um guia prático para treinar e avaliar um modelo para um cenário de uso de classificação de imagens.
Zoumana Keita 's photo

Zoumana Keita

Ver maisVer mais