Pular para o conteúdo principal

Regularização em machine learning: L1, L2 e Elastic Net explicadas

Um guia prático sobre regularização em machine learning — o que é, como funciona e quando usar L1, L2 e Elastic Net para criar modelos que generalizam.
Atualizado 4 de mai. de 2026  · 9 min lido

Você treinou um modelo que acerta quase 100% dos exemplos de treino, mas falha nos dados novos? Todo mundo já passou por isso.

Isso é, em linhas gerais, overfitting. Seu modelo não aprendeu o padrão de verdade — ele memorizou os dados de treino. Em produção, diante de dados novos, as previsões não seriam confiáveis. Quanto mais os dados do mundo real se afastam dos exemplos de treino, pior fica.

A regularização resolve isso adicionando uma penalidade à função de perda. Essa penalidade desestimula modelos muito complexos. Em outras palavras, é o mecanismo que impede seu modelo de se ajustar a cada ponto e o obriga a generalizar.

Neste artigo, vou explicar a intuição por trás da regularização, os métodos mais comuns — L1, L2 e Elastic Net — e como escolher o ideal para o seu caso de uso.

Se você quer entender por que e como modelos de machine learning falham em produção, leia nosso post trade-off entre viés e variância.

O que é regularização em machine learning

Regularização é uma técnica que adiciona um termo de penalidade à função de perda do modelo para desencorajar a complexidade.

Sem esse termo de penalidade, um modelo pode se ajustar aos dados de treino o quanto quiser — inclusive ao ruído e aos outliers. A regularização coloca um custo nessa flexibilidade. Quanto mais complexo o modelo quiser ser, maior a penalidade.

A função de perda do seu modelo normalmente mede a diferença entre valores previstos e reais. A regularização adiciona um termo extra à equação, que cresce conforme crescem os coeficientes do modelo. Agora o modelo precisa equilibrar dois objetivos concorrentes: ajustar bem os dados de treino e manter os coeficientes pequenos.

Esse equilíbrio é o que controla a flexibilidade do modelo.

Um modelo muito flexível pode se contorcer para caber nos dados de treino. A regularização o suaviza de volta para uma forma mais simples — e mais propensa a se manter estável em dados que o modelo ainda não viu.

Por que a regularização é necessária

Todo modelo que você treina fica em algum ponto entre dois extremos inutilizáveis: simples demais e complexo demais.

Um modelo simples demais não “capta” os padrões reais nos seus dados. Ele perde o sinal. Isso é underfitting — desempenho ruim tanto nos dados de treino quanto nos novos.

Um modelo complexo demais faz o oposto. Ele se ajusta a cada detalhe dos dados de treino, inclusive ao ruído. Isso é overfitting — desempenho excelente no treino, mas falha nos dados novos porque memorizou o que não devia.

Pense em regressão polinomial como exemplo concreto. Um polinômio de grau 3 ajustado a dados com uma curva suave provavelmente captura o padrão correto. Já um polinômio de grau 15, para os mesmos dados, leva ao overfitting — a curva passa por todos os pontos, mas faz previsões aleatórias no meio do caminho.

O gráfico abaixo mostra isso na prática.

Modelo na medida certa versus modelo complexo demais

Modelo na medida certa versus modelo complexo demais

Esse é o trade-off entre viés e variância.

Modelos simples têm alto viés — fazem suposições fortes que ignoram padrões reais. Modelos complexos têm alta variância — são sensíveis demais às amostras específicas do treino, e pequenas mudanças nos dados geram modelos muito diferentes.

A regularização ajuda a equilibrar os dois. Ela não elimina a complexidade, mas a penaliza. Assim, seu modelo tem mais chance de aprender o sinal verdadeiro.

Como a regularização funciona

Todo modelo aprende minimizando uma função de perda — uma medida de quão erradas estão as previsões. Sem regularização, a única tarefa do modelo é reduzir esse erro. Ele fará o que for preciso, inclusive crescer coeficientes enormes que ajustam os dados de treino, mas não generalizam.

A regularização muda o objetivo. Em vez de minimizar apenas o erro, o modelo passa a minimizar isto:

Como a regularização funciona

Como a regularização funciona

O termo de penalidade é uma função dos coeficientes do modelo. Coeficientes grandes aumentam a penalidade. Para manter o custo total baixo, o modelo é forçado a manter coeficientes pequenos — ou seja, soluções mais simples e que generalizam melhor.

O λ (lambda) controla o peso da penalidade. Um λ mais alto pressiona mais o modelo a permanecer simples. Um λ mais baixo permite focar mais no ajuste aos dados. Você verá como ajustar isso na seção Escolhendo a intensidade da regularização, abaixo.

Tipos de regularização em machine learning

Existem algumas formas de penalizar a complexidade do modelo. Cada uma age nos coeficientes de um jeito, então funcionam melhor em situações diferentes.

Regularização L2 (Ridge regression)

A regularização L2 penaliza o valor ao quadrado de cada coeficiente. Quanto maior o coeficiente, mais ele contribui para a penalidade — e mais o modelo tenta reduzi-lo.

Regularização L2

Regularização L2

A palavra-chave aqui é encolher. A L2 puxa todos os coeficientes em direção a zero, mas raramente os zera. Todo recurso permanece no modelo, só que com peso menor. Isso torna Ridge um bom padrão quando você acredita que a maioria dos recursos é relevante e quer um modelo estável e bem comportado.

Regularização L1 (Lasso regression)

A regularização L1 penaliza o valor absoluto de cada coeficiente, em vez do quadrado.

Regularização L1

Regularização L1

Essa pequena diferença traz uma grande consequência. A L1 pode levar coeficientes exatamente a zero, ou seja, remove recursos do modelo. Pense nisso como uma seleção automática de variáveis. Em outras palavras, a regularização Lasso pode simplificar seu modelo removendo recursos irrelevantes.

L1 vs. L2

A diferença central é a esparsidade. A L1 produz modelos esparsos — apenas um subconjunto de recursos permanece. A L2 produz modelos densos — todos os recursos ficam, com pesos menores.

Isso impacta a interpretabilidade também. Um Lasso com 5 variáveis ativas é mais fácil de explicar do que um Ridge com 50 contribuindo um pouquinho cada. Mas o Ridge tende a ser mais estável quando os recursos são correlacionados entre si, porque distribui o peso entre eles em vez de escolher um arbitrariamente.

Aqui vai um panorama rápido das diferenças:

Regularização L1 versus L2

L1 versus L2

Se você quer ver a comparação em Python, nosso tutorial de Lasso e Ridge Regression em Python cobre tudo.

Regularização Elastic Net

Elastic Net combina L1 e L2 em um único termo de penalidade.

Regularização Elastic Net

Regularização Elastic Net

A ideia é unir o melhor dos dois mundos: a seleção de variáveis da L1 e a estabilidade da L2. Isso é útil quando há recursos correlacionados e você ainda quer eliminar alguns. O Lasso sozinho tende a escolher um recurso de um grupo correlacionado e ignorar o resto. O Elastic Net tende a manter alguns, ainda assim removendo os irrelevantes.

Regularização em diferentes modelos

A regularização aparece em vários modelos de machine learning, mas em formas diferentes. Veja alguns exemplos.

Regressão linear é onde a maioria das pessoas vê regularização pela primeira vez. Ao adicionar L2, você tem Ridge; com L1, você tem Lasso. A matemática é a mesma descrita acima — um termo de penalidade adicionado à perda de mínimos quadrados.

Na regressão logística, funciona do mesmo jeito. A função de perda muda — é entropia cruzada em vez de erro quadrático —, mas o termo de penalidade é idêntico. A maioria das bibliotecas aplica L2 por padrão na regressão logística, por isso você verá um parâmetro chamado C no scikit-learn. Ele é o inverso de λ, então um C menor significa regularização mais forte.

Redes neurais usam algumas abordagens diferentes:

  • Weight decay: L2 aplicada aos pesos da rede — funciona do mesmo jeito, só que em outra escala
  • Dropout: durante o treino, desativa aleatoriamente uma fração dos neurônios a cada passagem, evitando que a rede dependa demais de um único caminho pelas camadas.

Ambas reduzem o overfitting, mas por meios diferentes.

Modelos baseados em árvores não usam penalidade na perda. Em vez disso, controlam a complexidade com poda — limitando a profundidade da árvore ou removendo ramos que não melhoram as previsões o suficiente para justificar sua existência. Hiperparâmetros como max_depth e min_samples_split no scikit-learn são parâmetros de regularização, mesmo que não sejam chamados assim.

Regularização e o trade-off viés-variância

Regularização é sobre compromissos.

Ao adicionar um termo de penalidade, você restringe o que o modelo pode fazer. Ele não consegue mais se ajustar aos dados de treino tão de perto quanto gostaria. Essa restrição introduz viés — o modelo faz suposições um pouco erradas por design, porque você disse para ele ficar simples.

Mas a mesma restrição reduz a variância. Um modelo que não consegue se ajustar a cada ponto é menos sensível às amostras específicas em que foi treinado. Se você o treina com um conjunto um pouco diferente, obtém um resultado semelhante. Essa estabilidade é o que você quer, para o modelo não falhar em produção.

Sem regularização, você tem um modelo muito flexível, com baixo viés (faz poucas suposições e se ajusta bem aos dados de treino) e alta variância (pequenas mudanças nos dados de treino produzem modelos muito diferentes, então não dá para confiar em dados novos).

A regularização muda esse equilíbrio. Um pouco mais de viés em troca de muito menos variância geralmente leva a melhor desempenho em dados que o modelo não viu. É um ótimo compromisso — quase sempre vale a pena.

Escolhendo a intensidade da regularização

Como praticante de machine learning, você vai definir a força da regularização depois de escolher o tipo.

Essa intensidade é controlada por um hiperparâmetro — geralmente chamado de lambda (λ) na notação matemática, ou alpha no scikit-learn. É o multiplicador na frente do termo de penalidade. Ao mudá-lo, você altera o quanto o modelo é pressionado a ser simples.

Se exagerar para qualquer lado, terá problema em produção:

  • Muito baixo: a penalidade é fraca demais para fazer diferença. O modelo faz overfitting, como se não houvesse regularização.
  • Muito alto: a penalidade domina. O modelo fica tão restrito que não consegue captar os padrões reais dos dados. Isso é underfitting.

O valor certo está no meio — e não existe resposta universal. Depende dos seus dados, do modelo e do nível de ruído.

A forma padrão de encontrar é com validação cruzada. Você divide os dados de treino em folds, treina o modelo em combinações desses folds e mede o desempenho de validação em uma faixa de valores de alpha. O valor que dá a melhor média de validação é o que você usa.

No scikit-learn, RidgeCV e LassoCV fazem isso automaticamente — rodam validação cruzada em uma grade de valores de alpha e escolhem o melhor para você.

from sklearn.linear_model import RidgeCV

model = RidgeCV(alphas=[0.01, 0.1, 1.0, 10.0], cv=5)
model.fit(X_train, y_train)

print(model.alpha_)

O alpha impresso mostra o melhor valor encontrado pela validação cruzada. Comece com uma faixa ampla e depois vá afunilando quando souber onde está a região ideal.

Conclusão

A regularização é como você impede que um modelo seja esperto demais para o próprio bem.

Ela penaliza a complexidade, forçando o modelo a encontrar soluções que generalizam, em vez de só memorizar os dados de treino. L2 mantém todos os recursos e reduz sua influência. L1 remove recursos irrelevantes. Elastic Net combina as duas. Em regressão linear, regressão logística, redes neurais e modelos de conjunto, a mesma ideia aparece em formas diferentes — e nem sempre com o nome “regularização”.

O mais importante é a técnica que você escolhe e a intensidade que define. Então, experimente. Teste abordagens diferentes com valores de parâmetros distintos. Não escolha uma só e siga em frente.

Seus dados vão mostrar o que funciona.

Se quiser ver mais técnicas de regularização na prática, inscreva-se na nossa trilha Machine Learning Scientist in Python. São 85 horas de conteúdo para deixar você pronto para o mercado.


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

What is regularization in machine learning?

Regularização é uma técnica que adiciona um termo de penalidade à função de perda de um modelo para desencorajar a complexidade. Ela evita overfitting ao forçar o modelo a manter coeficientes pequenos, levando a soluções mais simples que generalizam melhor para dados novos.

When should I use regularization?

Use regularização sempre que seu modelo mandar bem no treino, mas tiver desempenho ruim na validação ou no teste — esse gap é sinal de overfitting. Também é uma boa prática padrão quando você trabalha com dados de alta dimensionalidade ou quando o número de recursos é próximo ou maior que o número de amostras.

Does regularization always improve model performance?

Nem sempre. Se o seu modelo já está com underfitting, adicionar regularização vai piorar, empurrando-o para soluções ainda mais simples. O objetivo é achar o equilíbrio certo — a regularização ajuda quando o modelo está complexo demais, não quando está simples demais.

What's the difference between alpha in Lasso and C in logistic regression?

Ambos controlam a força da regularização, mas em direções opostas. alpha no Lasso escala a penalidade — quanto maior, mais forte a regularização. C na regressão logística do scikit-learn é o inverso da força da penalidade, então um C menor significa regularização mais forte. Se alternar entre os dois, lembre-se: aumentar alpha e diminuir C têm o mesmo efeito.

Can I use L1 and L2 regularization together?

Sim — é exatamente o que o Elastic Net faz. Ele combina ambos os termos de penalidade em um único objetivo, dando a seleção de variáveis da L1 e a estabilidade da L2 ao mesmo tempo. É útil quando há recursos correlacionados e você ainda quer uma poda, já que o Lasso sozinho tende a abandonar arbitrariamente todos, menos um, de um grupo correlacionado.

Tópicos

Aprenda com a DataCamp

Curso

Aprendizado de máquina com modelos baseados em árvores em Python

5 h
115.2K
Neste curso, você aprenderá a usar modelos baseados em árvores e conjuntos para regressão e classificação usando o scikit-learn.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

Tutorial

Tutorial de regressão Lasso e Ridge em Python

Saiba mais sobre as técnicas de regressão lasso e ridge. Compare e analise os métodos em detalhes.
DataCamp Team's photo

DataCamp Team

Python

Tutorial

Tutorial para entender a regressão logística em Python

Aprenda sobre a regressão logística, suas propriedades básicas e crie um modelo de aprendizado de máquina em um aplicativo do mundo real em Python.
Avinash Navlani's photo

Avinash Navlani

Tutorial

Tutorial de regressão logística no R

Descubra tudo sobre a regressão logística: como ela difere da regressão linear, como ajustar e avaliar esses modelos no R com a função glm() e muito mais!
Vidhi Chugh's photo

Vidhi Chugh

Tutorial

Guia de Introdução ao Ajuste Fino de LLMs

O ajuste fino dos grandes modelos de linguagem (LLMs, Large Language Models) revolucionou o processamento de linguagem natural (PLN), oferecendo recursos sem precedentes em tarefas como tradução de idiomas, análise de sentimentos e geração de textos. Essa abordagem transformadora aproveita modelos pré-treinados como o GPT-2, aprimorando seu desempenho em domínios específicos pelo processo de ajuste fino.
Josep Ferrer's photo

Josep Ferrer

Tutorial

Tutorial de regressão linear no R

Neste tutorial, você aprenderá os fundamentos de um modelo estatístico muito popular: a regressão linear.

Eladio Montero Porras

multiple linear regression

Tutorial

Regressão linear múltipla no R: Tutorial com exemplos

Uma visão geral completa para entender as regressões lineares múltiplas no R por meio de exemplos.
Zoumana Keita 's photo

Zoumana Keita

Ver maisVer mais