Métodos de Suavização de Regressão

Alysson Guimarães
12 min readSep 26, 2022

--

Anteriormente falamos sobre os princípios da regressão linear, sua importância e premissas neste post. A simplicidade dos modelos lineares nos trazem vantagens diante de outros modelos mais complexos como maior interpretação e inferência, porém em seu estado padrão possui algumas limitações em termos de poder preditivo devido a rigidez das suas premissas, como a lineariedade. Neste post falaremos de forma introdutória sobre métodos de suavização do modelo padrão linear que flexibilizam o relacionamento entre as variáveis dependentes e independentes para formas não lineares, mantendo a interpretabilidade, como regressões polinomiais, step funcions, regression splines, e generalized additive models (GAMs).

Aprendendo sobre modelos não lineares. (Imagem: Tenor | Reprodução)

Regressões Polinomiais

Regressões polinomais são extensões dos modelos lineares, a partir da adição de preditores extras que são obtidos ao elevar cada um dos preditores orignais a uma potência. Essa abordagem nos trás uma forma simples de ajustar ou “fittar” uma não lineariedade aos dados. Por exemplo: Numa regressão cúbica seriam usados três variáveis, X, X² e X³ como preditoras.

Regressão linear padrão: yi = β0 + β1 xi + ϵi

Regressão polinomial: yi = β0 + β1 xi + β2 x²i + β3 x³i + … + βd xdi + ϵi

A forma mais comum de se de estender uma regressão linear num cenário em que as variáveis dependentes e independentes possuem um relacionamento não-linear é utilizar a regressão polinomial citada acima. Para um alto grau d, a regressão polinomial produz uma curva extremamente não linear, mas geralmente não usamos num grau d maior que 3 ou 4.

Para vários carros, são mostrados mpg e sua potência. O ajuste de regressão linear é mostrado em laranja. O ajuste de regressão linear para um modelo que inclui cavalos de potência² (grau 2) é mostrado como uma curva azul. O ajuste de regressão linear para um modelo que inclui todos os polinômios de potência até o quinto grau é mostrado em verde. | G. James et al. 2021

O algoritmo de regressão linear não é alterado essencialmente, a única diferença é que acrescentamos as novas variáveis com as potências.

Algumas desvantafens da regressão polinomial é que precisamos saber qual é a forma funcional do processo gerador de dados e geralmente temos mais de duas dimensões, impossibilitando a visualização da relação entre as variáveis. Além de que ele não funciona muito bem quando temos muitas variáveis e o grau do polinômio é muito alto, porquê a quantidade de variáveis cresce exponencialmente com o grau do polinômio ajustado, dificultando muito o aprendizado.

Essa forma de regressão é recomendada nos casos de não lineariedades mais simples, quando ocorrem relações marginalmente crescentes ou decrescentes. Uma relação marginal crescente/decrescente é quando a curva cresce/diminui cada vez menos.

Step funcions

(Imagem: Tenor | Reprodução)

Uma função é chamada de “step function” se for escrita em uma combinação linear e finita de indication functions de intervalos. Com combinação linear quero dizer que ela é construída a partir de um conjunto de termos multiplicado cada termo por uma constante e somando os resultados, e com indication funcion, que é um subconjunto de um conjunto que mapeia os elementos desse subconjunto para 1 e todos os demais para 0. Ou seja, uma step function é uma função definida por partes (piece-wised), uma função definida por várias subfunções, em que cada uma se aplica a um intervalo diferente no domínio. E uma função constante, que seus valores de outputs são os mesmos para cada input de valor.

Quando usamos funções polinomais nas variáveis preditoras em um modelo linear impõe uma estrutura global na função não-linear de X. Em vez disso podemos usar step functions para escapar dessa imposição de uma estrutura global. Para isso, quebramos o range de X em bins, e ajustamos diferentes constantes em cada bin. Isso é o equivalente a converter uma variável contínua em uma variável categórica ordenada. Criamos os pontos de corte c1, c2, c3, …,cK no intervalo de X, e então construímos K+1 novas variáveis. Step funcions cortam o intervalo de uma variável em K regiões diferentes, produzindo uma variável qualitativa, isso tem o efeito de ajustar uma função constante por partes.

C0 (X) = I(X < c1 ),
C1 (X) = I(c1 ≤ X < c2 ),
C2 (X) = I(c2 ≤ X < c3 ),

CK-1(X) = I(ck-1 ≤ X < CK),
CK(X) = I(cK ≤ X)

Aqui I(.) é uma indication function que retorna 1 se a condição for verdadeira e 0 caso não seja. Por exemplo, I(cK ≤ X) é igual a 1 se cK ≤ X, e 0 caso não seja. Note que para cada valor de X, C0(X) + C1(X)+…+CK(X) =1, desde que X deve estar exatamente em um dos intervalos K+1. Em seguida usamos mínimos quadrados para ajustar um modelo linear usando C1(X), C2(X), …, CK(X) como preditores.

yi = β0 + β1 C1 (xi ) + β2 C2 (xi ) + · · · + βK CK (xi ) + ϵi

Note que para um dado valor de X, pelo menos um dos C1, C2, …, Ck pode ser não-zero. Se quando X < c1, todos os os demais preditores são zero, então o B0 pode ser interpretado como o valor médio de Y para quando X < C1.

Um exemplo de aplicação de step funcion é mostrado abaixo.

Esquerda: A curva sólida exibe o valor ajustado de uma regressão de mínimos quadrados de salário (em milhares de dólares) usando funções degrau de idade. As curvas tracejadas indicam um intervalo de confiança estimado de 95%. Direita: Foi modelado um evento binário salário>250 usando regressão logística usando step funcion de idade. A probabilidade posterior ajustada de salário superior a $ 250.000 é mostrada, juntamente com um intervalo de confiança estimado de 95%. | G. James et al. 2021

Mas a menos que haja pontos de interrupção naturais nos preditores, as funções constantes por partes podem perder “o fit”, a ação. No exemplo acima, no primeiro plot a função perde o fit com a tendência de aumento de salário (wage) de acordo com a idade (age). Apesar disto, a abordagem de step function é muito utilizada na bioestatística e epidemiologia, assim como em outras áreas.

Regression splines

Regression splines é uma classe de funções de base que estende a polinomial e as regressões constante piecewised (como step function). A ideia por trás de funções de base é que em vez de ajustarmos um modelo linear em todo o range de X, aplicamos para cada variável X: b1(X), b2(X),…bk(X):

yi = β0 + β1 b1 (xi ) + β2 b2 (xi ) + β3 b3 (xi ) +… + βK bK (xi ) + ϵi

Para as regressões polinomiais, a função de base é bj(xj) = xĵ_i, e para uma piecewised constante são bj(xi) = I(cj ≤ xi < cj+1). As funções de base são conhecidas e podemos usar mínimos quadrados para estimar os coeficientes desconhecidos.

Regression splines é uma extensão das regressões polinomiais e step funcions, e são modelos mais flexívels que eles. Nela um range de X é dividido em K regiões distintas. Em cada região, uma função polinomiais se ajusta aos dados. Mas esses polinômios são restringidos para que se unam de forma suave nos limites de cada região (ou nós). Quando o intervalo é dividido em regiões suficientes produz um ajuste extremamente flexível.

Uma regressão polinomial por partes (piecewised) ou regression spline em vez de ajustar um polinômio de alto grau em todo o intervalo de X, ajusta os polinômios de baixo grau separados em diferentes regiões de X. Por exemplo, um polinômio cúbico por partes funciona ajustando um modelo de regressão cúbica desta forma:

yi = β0 + β1 xi + β2 x2i + β3 x3i + ϵi

Aqui, os coeficientes diferem em cada parte em que o range de X é dividida e essas partes são chamadas de nós (knots). Por exemplo, uma regressão piecewised cúbica com nenhum nó teria a forma padrão da regressão polinomial. Enquanto que uma piecewised cubic polynomial regression de um nó no ponto c teria a seguinte forma:

Isso quer dizer que ajustamos diferentes funções polinomiais nos dados, uma no subset em que as observações possuem xi < c e outra no subset em que as observações possuem xi >= c. A primeira teria os coeficientes β01, β11, β21 e β31 e a segunda teria os coeficientes β02, β12, β22 e β32. Cada uma dessas funções polinomiais pode ser ajustada usando mínimos quadrados aplicados a funções simples do preditor original. Ao usar mais nós, aumentamos a flexibilidade (e consequentimente complexidade).

Vários polinômios piecewised foram ajustados a um subconjunto dos dados de Salário (wage), com um nó em idade=50. Superior Esquerdo: Os polinômios cúbicos são irrestritos. Superior Direita: Os polinômios cúbicos são restritos a serem contínuos em idade=50. Inferior Esquerda: Os polinômios cúbicos são restritos a serem contínuos e a ter primeira e segunda derivadas contínuas. Inferior Direita: Uma spline linear é mostrada, restringida para ser contínua. | G. James et al. 2021

O plot do canto superior esquerdo parece meio estranho porquê foi fittado uma curva muito flexível, e para resolver esse problema podemos ajusar uma regressão polinomial piecewised sob a restrição de que a curve deve ser contínua. Isso quer dizer que, não pode haver um salto ou queda abrupta quando idade (age) = 50. O plot do canto superior direito é o resultado do ajuste sob esta restrição.

Nos dois gráficos abaixo, foi adicionado duas restrições adicionais em que tanto a primeira quanto a segunda derivada dos polinômios piecewised são derivadas contínuas em idade = 50, mas ainda sim muito suave. Cada restrição que impomos em em polinomios cúbicos piecewised libera um grau de liberdade, reduzingo a complexidade do ajuste polinomial piecewised resultante. Por isso no gráfico superior esquerdo foi usado oito graus de liberdade mas no gráfico inferior esquerdo ao ser imposto três restrições (continuidade, continuidade da primeira derivada, e continuidade da segunda derivada) ficando com cinco graus de liberdade.

A curva do gráfico inferior esquerdo é chamado de spline cúbico. Geralmente, um spline cúbico com K nós usa um total de 4 + K graus de liberdade. O gráfico inferior direito é um spline linear, que é contínuo em idade = 50. Um spline de grau d é um polinômio de grau d partes, com continuidade nas derivadas até o grau d-1 de cada nó. Um spline linear é obtido ajustando uma linha em cada região do espaço preditor definido pelos nós exigindo uma continuidade em cada nó. Em todos os gráficos acima há um único nó na idade = 50 mas poderíamos adicionar mais nós e impor continuidade em cada um.

Para escolher o número de nós podemos simplesmente testar várias quantidades e ver qual produz a melhor curva ou menor RSS. Ou podemos fazer de uma forma mais eficaz utilizando validação cruzada.

Em comparação com a regressão polinomial, a spline nos fornece um resultado superior. Porquê na polinomial precisamos usar um alto grau para produzir ajustes flexíveis, enquanto que com splines essa flexibilidade é ajustada aumentadando o número de nós, mantendo o grau fixo.

Smoothing splines

Smoothing splines é uma regressão parecida com regression splines, mas surgem em situações diferentes. Smothing splines resulta da minimização de um critério de soma de quadrados residual sujeito a uma penalidade de suavidade. Que ? Calma que já explico.

Ao ajustar uma curva de suavização em um dataset, o que queremos é achar uma função, por exemplo g(x), que se ajuste bem aos valores observados, queremos minimizar a soma dos quadrados residual ou residual sum of squares (RSS). Mas ao faze-los em adicionar nenhuma restrição em g(xi) poderiamos zerar o RSS simplismente escolhendo g que se interpolasse em todos os yi. Mas essa função completamente overfittada porquê seria flexível demais. O que queremos é uma função g que minimize o RSS mas que também seja suave (smooth).

Uma abordagem para garantir que a g é suave é achando uma função g que minimiza quando o lambda λ é um parâmetro de tunning não negativo. Essa função g que minimiza é conhecida como smoothing spline:

O primeiro termo (destacado em verde) é uma função de perda (loss function) que faz com que g se ajuste bem aos dados, e o segundo termo (destacado em laranja) é um termo de penalização que penaliza a variabilidade em g. A notação g’’(t) indica uma segunda derivada da função g. A primeira derivada g’(t) mensura o declive (slope) da função em t, e a segunda derivada corresponde ao quanto em que o slope está mudando.

O primeiro termo (destacado em verde) é uma função de perda (loss function) que faz com que g se ajuste bem aos dados, e o segundo termo (destacado em laranja) é um termo de penalização que penaliza a variabilidade em g. A notação g’’(t) indica uma segunda derivada da função g. A primeira derivada g’(t) mensura o declive (slope) da função em t, e a segunda derivada corresponde ao quanto em que o slope está mudando. A segunda derivada da função é uma mensuração da sua rígidez (roughness), ela é grande em valor absoluto se o g(t) for muito ondular próximo a t, e próximo de zero se não. A notação ∫ é uma integral, que é basicamente o somatório da mudança total na função g’(t) em todo seu intervalo. Isso quer dizer que ∫g’’(t)²dt é simplesmente a mensuração da mudança na função g’(t) em todo seu intervalo. Se g for muito suave, então g’(t) será próximo a constante e ∫g’’(t)²dt terá um valor pequeno. Para o caso de g ser ondular e variável então g’(t) irá variar significativamente e ∫g”(t)² terá um valor grande. Por isso λ∫g”(t)²dt encoraja para que g seja suave. Quanto maior o valor de λ, mais suave g será.

Quando λ = 0, então a penalidade não tem efeito, e a função g será muito ondulada e irá interpolar exatamente nas observações de treino. Quando λ tente ao infinito, g será perfeitamente suave, será uma linha reta que passa o mais próximo possível das observações de treino. Nesse caso, g será uma reta linear de mínimo quadrado, desde que a loss function minimize a soma residual dos quadrados. Para um valor intermediário de λ, g vai se aproximar das observações de treino, mas será um pouco suave. O λ faz o controle do trade-off entre viés-variância no smoothing spline.

O spline de suavização se ajusta aos dados de salário. A curva vermelha resulta da especificação de 16 graus de liberdade efetivos. Para a curva azul, λ foi encontrado automaticamente por validação cruzada leave-one-out, que resultou em 6,8 graus de liberdade efetivos. | G. James et al. 2021

Generalized Additive Model (GAM)

Generalized additive models permitem extender todos os métodos citados mas para lidar com multiplos preditores. GAMs nos trás um framework geral para estender um modelo linear padrão permitindo funções não lineares de cada variável, enquanto mantêm sua característica de additivity. A premissa de ativididade (additivity) na regressão linear significa que a associação entre a preditora X e a resposta Y não depende dos valores dos outros preditores. Assim como os modelos lineares, GAMs podem ser aplicados em variávels resposta quantitativas e qualitativas.

Para problemas de regressão, um jeito natural de extender o modelo linear para permitir relacionamentos não lineares entre cada feature e a resposta é substituindo cada componente linear βjxij com uma função não linear suave (smooth) fj(xij). Com sua característica additive, calculamos um fj para cada xj, e então somamos todas as suas contibuições.

Reescrevendo desta forma:

A soma de cada fj que substituiu os coeficientes da regressão linear formam o GAM. Resultando num modelo altamente flexível mas que continua com alguma explicabilidade da regressão linear.

Essas funções são estimadas uma de cada vez e de maneira progressiva. A estimativa de cada fj é conseguida através de um scatterplot smoother num processo interativo chamado local scoring.

Com as GAMs é possível modelar variáveis que assumem forma de contagem, contínuas simétricas e assimétricas, binárias e categóricas selecionando direrentes distribuições como poisson, bernoulli, gama, binomial, etc.

Esse framework possui alguns vantagens como permitir o ajuste de não lineariedade para cada variável, fj para cada Xj, daí podemos modelar relacionamentos não lineares que a regressão linear padrão perderia. Isso quer dizer que não precisamos testar manualmente várias transformações em cada variável individualmente. Por causa da aditividade, podemos verificar o efeito de cada Xj em Y individualmente enquanto mantemos as demais fixas. A suavidadade (smoothness) da função fj para variável Xj pode ser resumida via graus de liberdade.

Mas também possui como desvantagem ou limitações por ser restrito a forma aditiva. Em situações em que existem diversas variávels, algumas interações entre elas podem não ser detectadas. Mas assim como na regressão linear, podemos manualmente adicionar termos de interação ao modelo GAM incluindo preditores adicionais na forma de Xj vezes Xk. E ainda podemos adicionar interações de baixa dimensionalidade na forma de fjk(Xj, Xk) no modelo.

(Imagem: Tenor | Reprodução)

Conclusão

Neste post falei de forma introdutória sobre alguns modelos de regressão não-lineares, buscando divulgar essas técnicas pouco utilizadas e até pouco conhecida entre os cientistas da dados apesar da grande importância da bagabem teórica em machine learning. Modelos de regressão não lineares a primeira vista podem parecer complexos mas são ferramentas que valem estar em sua caixa de ferramentas junto aos modelos mais populares como random forest e xgboost.

Siga o meu perfil e se inscreva para receber para acompanhar os próximos posts sobre este e outros temas.

Como Citar

Guimarães, Alysson. (Sep 2022). Métodos de Suavização de Regressão. https://k3ybladewielder.medium.com/. https://k3ybladewielder.medium.com/p-d2512ae645c4

ou

@miscellaneous{guimaraes2022smoot,
title = {Métodos de Suavização de Regressão},
author = {Guimarães, Alysson},
journal = {https://k3ybladewielder.medium.com},
year = {2022},
month = {Sep},
url = {https://k3ybladewielder.medium.com/p-d2512ae645c4}
}

Referências:

G. James et al., An Introduction to Statistical Learning, Springer Texts in Statistics, https://doi.org/10.1007/978-1-0716-1418-1_1

Hastie, T., & Tibshirani, R. (1986). Generalized Additive Models. Statistical Science, 1(3), 297–310. http://www.jstor.org/stable/2245459

FACURE, Matheus. Regressão Polinomial. Indo além de simples relações lineares. Matheus Facture, 2017. Disponível em: <https://matheusfacure.github.io/2017/02/26/regr-poli/>, Acesso em 08/08/2022

Step Funcion. Wikipédia, 2022. Disponível em: <https://en.wikipedia.org/wiki/Step_function>, Acesso em 10/08/2022

Indicator Function. Wikipédia, 2022. Disponível em: <https://en.wikipedia.org/wiki/Indicator_function>, Acesso em 12/08/2022

Piecewise. Wikipédia, 2022. Disponível em: <https://en.wikipedia.org/wiki/Piecewise>, Acesso em 12/08/2022

Constant Function. Wikipédia, 2022. Disponível em: <https://en.wikipedia.org/wiki/Constant_function>, Acesso em 12/08/2022

SHAFI, Adam. What is a Generalised Additive Model?. Toward Data Science, 2021. Disponível em: <https://towardsdatascience.com/generalised-additive-models-6dfbedf1350a>, Acesso em 16/08/2022

--

--

Alysson Guimarães

Data Scientist. MBA Competitive Intelligence, Bachelor of Business Administration.