O dilema de viés e variância em modelos preditivos

Ao criar um modelo preditivo há dois possíveis problemas comuns que podem acontecer, em termos simples:

  • Sobreajuste (overfitting): o modelo estimado explica “perfeitamente” a variável de interesse; uma simples comparação gráfica dos dados observados com os dados de ajuste entregues pelo modelo permite verificar que a distância entre o observado e o estimado tende a ser mínima. Ao tentar utilizar este modelo para previsão de dados futuros, não observados, a tendência é que o modelo erre bastante.
  • Sub-ajuste (underfitting): o modelo estimado explica “insatisfatoriamente” a variável de interesse; uma simples comparação gráfica dos dados observados com os dados de ajuste entregues pelo modelo permite verificar que a distância entre o observado e o estimado tende a ser grande. Ao tentar utilizar este modelo para previsão de dados futuros, não observados, a tendência é que o modelo erre de forma semelhante.

Para aprender mais e ter acesso a códigos confira o curso de Modelagem e Previsão usando Python ou comece do zero em análise de dados com a formação Do Zero à Análise de Dados com Python.

No gráfico acima são apresentados, como exemplo, dados observados da variável Estoque de empregos formais no setor de serviços (CAGED/ME), assim como dois modelos didáticos que buscam explicar essa variável. O modelo mais simples, mínimos quadrados ordinários, traça uma reta de tendência para as observações da amostra, o que leva a grandes distâncias em relação aos dados observados. Já o modelo mais complexo, suavização exponencial, se sobrepõe aos dados observados, capturando praticamente toda a dinâmica dos dados.

Erro de previsão

Até aqui estamos falando de modelos preditivos, mas olhando apenas para o ajuste dos mesmos com a amostra utilizada para estimar seus devidos parâmetros. Em geral, para problemas de previsão há maior interesse em analisar o erro de “fora da amostra”, ou seja, para dados que o modelo ainda não conhece. Sendo assim, é comum separar os dados em pelo menos duas amostras: uma de treino, usada para estimar os parâmetros do modelos, e outra de teste, usada para realizar previsões e comparar com os dados observados, chegando ao erro de previsão:

ou seja, os valores observados (que ficaram omitidos na estimação) menos o que foi previsto “fora da amostra” pelo modelo. Com essa medida é possível analisar e comparar a acurácia dos modelos. Isso é feito, geralmente, com métricas baseadas no erro de previsão, como ME, MSE, RMSE, etc.

Separando os dados deste exemplo, Estoque de empregos formais (serviços), de forma a termos as 12 últimas observações para a amostra de teste e o restante para treino, reestimamos os modelos acima e geramos previsões, comumente chamadas de “pseudo” fora da amostra. Ao calcular o erro de previsão e as métricas citadas, temos que:

Amostra Modelo ME MSE RMSE
Treino Suavização exponencial 0.0066739 0.0018038 0.0424717
Treino Mínimos quadrados ordinários 0.0000000 1.0786743 1.0385924
Teste Suavização exponencial 0.2177126 0.0542469 0.2329097
Teste Mínimos quadrados ordinários 0.4492230 0.2484394 0.4984369

Para obter o código, considere fazer parte do Clube AM e tenha acesso a exercícios semanais de Ciência da Dados em R e Python!

O que aconteceu? Os números da tabela retratam os dois problemas levantados no início do texto: o modelo mais complexo apresenta sobreajuste na amostra de treino (dados que ele conhece) e erra muito na amostra de teste (dados desconhecidos); já o modelo mais simples apresenta sub-ajuste na amostra de treino e erra de forma “semelhante” na amostra de teste. Ou seja, o modelo de suavização exponencial apresenta um erro 5x maior na amostra de teste em relação a amostra de treino, analisando pelo RMSE, enquanto que o modelo de mínimos quadrados ordinários apresenta um erro menor na amostra de teste em relação a amostra de treino (o RMSE cai, aproximadamente, pela metade).

Entretanto, também é interessante notar que apesar dessas disparidades, o modelo com sobreajuste tem um erro menor fora da amostra em relação ao modelo com sub-ajuste, o que pode torná-lo um candidato final para previsão efetivamente fora da amostra. Ou seja, não existem regras, é necessário analisar os modelos com vistas aos objetivos do exercício. Nem sempre um modelo bem ajustado será o melhor para previsão e nem sempre um modelo mal ajustado será um modelo pior para previsão. Geralmente, busca-se um modelo que minimize o erro de previsão e um modelo “meio termo” pode ser o mais razoável para essa finalidade no longo prazo.

Mas o que isso tem a ver com viés e variância?

Decomposição do erro de previsão

Tudo, pois o erro de previsão na amostra de teste pode ser proveniente tanto de sobreajuste quanto de sub-ajuste. Para averiguar isso podemos decompor a métrica de erro, o MSE, em três componentes:

viés é o quadrado da diferença entre as previsões e os valores observados, e pode ser entendido como o “erro sistemático” do modelo de previsão, após ter sido ajustado para diversos conjuntos de dados independentes, ou seja, para diferentes “realizações” do modelo. Modelos com sub-ajuste (baixa complexidade) tendem a apresentar um viés alto. Em termos simples, imagine desenhar, com alguma aleatoriedade, várias linhas de regressão linear sobre a série temporal acima: em média, a distância entre as linhas e as observações será alta.

variância é a média do quadrado da diferença entre as previsões e o valor “esperado” das previsões, e pode ser entendido como o quanto as previsões variam, em média, para uma determinada observação, após o modelo também ter sido ajustado para diversos conjuntos de dados independentes, ou seja, para diferentes “realizações” do modelo. Modelos com sobreajuste (alta complexidade) tendem a apresentar uma variância alta. Em termos simples, imagine desenhar, com alguma aleatoriedade, várias curvas de regressão polinomial sobre a série temporal acima: conforme há mais parâmetros determinando o formato da curva, a variedade de previsões geradas aumentará.

ruído é um termo aleatório de erro, ou seja, uma parcela da métrica de erro que não é explicada nem pelo viés e nem pela variância.

Matematicamente, isso é o mesmo que:

Conclusão

Sendo assim, o objetivo do profissional que trabalha com previsão é explorar uma especificação de modelo, f(x), de modo a obter previsões menos erráticas, tendo em vista que ela pode aumentar tanto o viés quanto a variância do erro. Em modelos sub-ajustados, de baixa complexidade, a maior parcela do erro de previsão advém do viés; já em modelos sobreajustados, de alta complexidade, a maior parcela do erro de previsão advém da variância. Escolher uma especificação de modelo entre estes dois extremos é o que se chama de dilema, ou trade-off, entre viés e variância.

Referências

Ely, R. A. (2016, August 25). O tradeoff entre viés e variância em três gráficos. Regis A. Ely Blog. http://regisely.com/blog/bias-variance/

Wilber, J. & Werness, B. (2021, January). The bias variance tradeoff. MLU-EXPLAIN. https://mlu-explain.github.io/bias-variance/

Notas de rodapé

  1. Veja mais em Bias variance decomposition de Rob J Hyndman: https://robjhyndman.com/files/2-biasvardecomp.pdf↩︎

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Criando um Dashboard de análise de Ações no Python

Um Dashboard é um painel de controle que consolida uma variedade de informações sobre um determinado objeto de estudo em um ou mais painéis. Ele simplifica significativamente o processo de análise de dados, oferecendo uma visão global e fácil de entender. Uma maneira simples de construir um Dashboard para acompanhar uma ação específica é utilizando duas ferramentas: Quarto e Python. Neste post, mostramos o resultado da criação de um Dashboard de Ação.

Analisando séries temporais no Python e esquecendo de vez o Excel

Séries temporais representam uma disciplina extremamente importante em diversas áreas, principalmente na economia e na ciência de dados. Mas, afinal, como lidar com esses dados que se apresentam ao longo do tempo? Neste exercício, demonstraremos como compreender uma série temporal e como o Python se destaca como uma das melhores ferramentas para analisar esse tipo de dado.

Cálculo do Retorno Econômico de uma Política Pública

Como podemos traduzir os efeitos de uma política pública para valores monetários? Essa é uma tarefa árdua que requer algumas premissas, entretanto, com métodos bem definidos, é possível obter estimativas precisas dos ganhos e os gastos de uma política pública.

Neste exercício, demonstramos tal método usando a política hipotética "Mãe Paranense”, um conjunto de ações que visam reduzir a mortalidade materna e infantil no estado. Usamos a linguagem R como ferramenta para analisar os dados.

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.