Modelos de Predição | Regressão de Ridge e Lasso

Um olhar para as parcelas L1 e L2 (Ridge e Lasso)

Andre Devay
Turing Talks
7 min readSep 29, 2019

--

Esse texto é para você, iniciante no mundo de IA e que começou a ter contato com os primeiros tipos de métodos de Machine Learning. Embora o intuito dos Turing Talks seja deixar o texto o mais simples possível para o leitor, talvez você ainda não tenha muita familiaridade com regressão e outros conceitos básicos de ciência de dados, então, seguem algumas leituras adicionais a esse texto:

E também, vale relembrar o modelo de regressão linear.

Sem mais delongas, o texto.

Bias e Variance

Um dos principais problemas a serem enfrentados na construção de modelos de predição é o de balancear a relação entre bias e variance. Esses conceitos já foram bem detalhados no Turing Talks #10, mas o retomaremos brevemente aqui somente de uma forma intuitiva.

De uma maneira bem simplificada, bias e variance são métricas de erro do modelo e um bom balanceamento de seus valores corroboram para se obter alta acurácia preditiva.

Para facilitar a compreensão desses conceitos vamos pensar na regressão linear. Sabemos que se trata de ajustar os dados a uma reta. E que obtemos essa reta minimizando o erro quadrático médio (MSE).

Bias, quando em alta, indica que o modelo se ajusta pouco aos dados de treino, causando o que é chamado de underfitting. O que significa que o MSE é alto, para a base de teste.

Variance, em alta, diz que o modelo se ajusta demais aos dados, causando por sua vez, overfitting. Nesse caso o MSE é zero para os dados de teste, mas podemos dizer que não generaliza bem os dados.

Veja como ficam esses conceitos dentro de uma regressão

Mas você pode estar se perguntando, como avalio esses indicadores na prática? Ambos tipos de erros podem ser avaliados, analisando-se os erros em dados de treino e dados de teste. Veja:

  • Baixo erro em dados de treino e alto erro em dados de teste indica que temos alta variância.
  • Alto erro em dados de treino e erro parecido em dados de teste indicam presença de um valor alto de bias.
  • Alto erro em dados de treino e erro maior em dados de teste mostra que o modelo tem alto bias e alta variância.
  • Baixo erro em dados de treino e baixo erro em dados de teste indica baixa variância e baixo bias.

Lembrando que sempre comparamos os erros dos modelos a um erro base. Por exemplo, se desejamos classificar imagens de cachorros em um dataset, o erro base é que o ser humano teria ao analisar essas imagens. Isso é definido porque não desejamos obter um erro muito maior do que o que um ser humano teria ao realizar essa classificação.

Onde entra Ridge e Lasso em tudo isso?

Entendemos que bons modelos de predição precisam apresentar uma boa relação entre os erros bias e variance. Mas na prática se temos uma pequena quantidade de dados é mais complicado realizar uma boa generalização dos dados, e muito fácil causar overfitting.

Temos algumas alternativas a esse problema, a mais rápida seria aumentar a quantidade de observações em dados de teste, podemos também treinar o modelo auxiliado por validação cruzada, isto é, utilizamos esse método para otimizar hiperparâmetros. Mas, além disso, é possível usar o que é chamado de regularização. E veremos que essa é essa a característica que os modelos de Ridge e Lasso trazem consigo.

Regularização

De uma maneira bem direta, podemos entender regularização como a inserção de bias em um modelo. Ou em outras palavras, essa técnica desencoraja o ajuste excessivo dos dados, afim de diminuir a sua variância.

Dentro da regressão linear, Ridge e Lasso são formas de regularizarmos a nossa função através de penalidades. De forma simples, dentro de uma equação estatística dos dados, nós alteramos os fatores de forma a priorizar ou não certas parcelas da equação e, assim, evitamos ‘overfitting’ e melhoramos a qualidade de predição.

Os parâmetros L1 e L2

Como já sabemos uma regressão linear tenta ajustar uma função linear aos dados:

O procedimento de ajuste envolve a função de custo como soma residual dos quadrados ou RSS. Os coeficientes w são escolhidos para minimizar essa função de custo com base nos dados de treinamento:

No entanto, pode ocorrer overfitting, ou seja, o modelo pode “memorizar” o ruído dos dados de treinamento. Nesse caso, dizemos que o modelo tem um erro de generalização (erro na base de teste) elevado. Esse fenômeno está associado à variância do modelo, como vimos acima. Portanto, uma forma de diminuir o erro é aumentar o bias.

Para isso, regularizamos os coeficientes w, ou seja, restringimos o seu tamanho. Isso é feito adicionando um termo na função de custo, de forma que minimizar a função de custo automaticamente minimize também os coeficientes.

Lasso (ou L1)

Além de diminuir a variância do modelo, essa regularização tem uma outra importante aplicação em machine learning. Quando há múltiplas features altamente correlacionadas (ou seja, features que se comportam da mesma maneira) a regularização Lasso seleciona apenas uma dessas features e zera os coeficientes das outras, de forma a minimizar a penalização L1. Desse modo, dizemos que esse modelo realiza feature selection automaticamente, gerando vários coeficientes com peso zero, ou seja, que são ignorados pelo modelo. Isso facilita a interpretação do modelo, o que é uma enorme vantagem.

Ridge (ou L2)

Nesse caso, a penalização consiste nos quadrados dos coeficientes, ao invés de seus módulos. Qual será o efeito dessa regularização nos coeficientes de duas features altamente correlacionadas? Poderíamos ter duas features com coeficientes parecidos, ou uma com coeficiente alto, e outra com coeficiente zero. Como a penalização L2 é desproporcionalmente maior para coeficientes maiores, a regularização Ridge faz com que features correlacionadas tenham coeficientes parecidos.

No entanto, essa regularização não diminui a susceptibilidade do modelo a outliers, de forma que é recomendável limpar o dataset e remover features desnecessárias antes de realizar esse tipo de regressão.

Em termos matemáticos, a penalidade L1 não é diferenciável, o que pode complicar a sua implementação. Já a L2 é diferenciável, o que significa que ela pode ser usada em abordagens baseadas em gradiente.

Elastic Net — L1+L2

Sim, se trata exatamente de combinar os termos de regularização de L1 e L2. Assim, obtemos o melhor dos dois mundos, porém temos que enfrentar o problema de determinar dois hiperparâmetros para obter soluções ótimas.

Comparação entre os métodos de regularização

Agora que já vimos os 3 tipos de regularização utilizados com regressão linear (Lasso, Ridge e Elastic Net), vamos analisar os seus efeitos a partir dos gráficos abaixo.

Os gráficos mostram os resultados da regressão linear em 3 datasets com relações x-y variadas. No gráfico da esquerda, ainda que os pontos sejam aleatórios, observa-se uma tendência fraca nos dados (ruído). Essa tendência é capturada pela regressão linear e Ridge, mas não pela regressão Lasso ou Elastic Net. Para entender esse comportamento, observe que, nesse caso, os coeficientes da regressão linear são pequenos, de forma que a penalização Ridge, que conta com os coeficientes ao quadrado, é muito pequena. Já a penalização Lasso é alta o suficiente para levar os coeficientes a zero.

No gráfico do meio, a tendência de crescimento é maior, tal que a regressão Lasso obtém um coeficiente não nulo, ainda que pequeno. Os coeficientes da regressão Ridge são maiores e mais próximos do correto.

No gráfico da direta, a situação se inverte. As regressões Lasso e Elastic Net chegam muito próximo dos dados, mas a Ridge fica mais longe dos dados, porque a penalidade L2 é mais influenciada por coeficientes grandes.

Baseado nessas observações, podemos observar que a regressão com regularização Lasso tende a ignorar relações fracas, enquanto a regressão com regularização Ridge considera também relações fracas, mas não lida tão bem com relações fortes. A regressão Elastic Net é um intermediário entre Ridge e Lasso.

Ridge, Lasso e Elastic Net na prática

Fazemos isso com o auxílio da biblioteca de python Sci-kit Learn, basta adicionar as seguintes linhas de comando:

>>> from sklearn.linear_model import Ridge
>>> from sklearn.linear_model import Lasso
>>> from sklearn.linear_model import ElasticNet

Documentação dos modelos: Ridge, Lasso e ElasticNet.

Obs: Em ElasticNet o Sci-kit Learn utiliza uma forma alternativa para os parâmetros α1 e α2, vide documentação.

Mais um Turing Talks se foi, mas dele ficam muitos aprendizados sobre os modelos de Ridge, Lasso e ElasticNet, e como uma ideia sutil pode trazer um diferencial para as nossas predições.

E aí? Curtiu o Turing Talks de hoje? Quer saber mais e mais sobre tudo de inteligência artificial? O jeito que eu acho mais legal é seguir o Grupo Turing nas redes: facebook, instagram, linkedin e medium. Porque assim você vai estar sempre ligado nas melhores oportunidades de aprender IA.

Enfim, por hoje é só, esperamos que tenham aproveitado a leitura. Até uma próxima!

--

--