Métricas de avaliação para modelos de regressão

Modelos de regressão estão presentes em inúmeros setores da indústria ou do conhecimento. Eles podem ser utilizados para estimar vendas, mudanças climáticas e até para previsões de desenvolvimentos de doenças.

Para construir o modelo, são observadas correlações entre as variáveis explicativas e a variável resposta do conjunto de dados de interesse e, através de métodos de aprendizado de máquina, é realizado um treinamento. Então, temos um modelo que pode fazer previsões de novos valores.

Mas como garantir que, após o treinamento, o modelo está fazendo um bom trabalho e suas previsões são coerentes?

É aí que entram as métricas de avaliação de modelos de regressão, que ajudam a quantificar o desempenho do modelo e identificar pontos de melhoria.

Neste artigo, vamos explorar algumas métricas básicas, como o R² (Coeficiente de Determinação), até outras mais avançadas e especializadas. Entenderemos quando utilizar cada métrica e quais são suas principais limitações.

Para conhecer algumas métricas importantes que podem ser utilizadas tanto em modelos de regressão simples quanto em séries temporais, recomendo fortemente a leitura do artigo Métricas de avaliação para séries temporais.

O processo de avaliação

Após as etapas de pré-processamento dos dados e divisão em treino e teste, acontece o treinamento propriamente dito.

Porém, esse é um processo iterativo. Parte essencial do treinamento é garantir que o modelo tenha um bom desempenho de previsão ao ser apresentado para novos dados.

A imagem exibe o ciclo de desenvolvimento de modelos de previsão. Ela inclui etapas: pré-processamento dos dados, divisão treino-teste, treinamento (com inferência, avaliação e reajustes), e a fase final de deploy.

Isso é feito comparando os valores previstos pelo modelo com os valores reais do grupo de teste.

As métricas de avaliação fazem exatamente esse trabalho: elas quantificam o quão próximo o modelo chega dos valores reais, utilizando diferentes cálculos para medir o erro entre as previsões e os resultados já observados.

Cada métrica foca em aspectos diferentes do erro, como a magnitude média do erro (MAE), o desvio em relação à variabilidade dos dados (R²), ou o impacto de grandes desvios (RMSE).

Sendo assim, escolher a métrica certa é fundamental para entender o desempenho real do modelo, além de possibilitar percepções valiosas sobre pontos de melhoria ou ajustes necessários no modelo.

Banner da Escola de Data Science: Matricula-se na escola de Data Science. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

Quais são as métricas de regressão

Agora, vamos explorar algumas das principais métricas utilizadas na avaliação dos modelos de regressão. Apresentarei a fórmula de cada uma e detalhes de sua utilização.

Coeficiente de determinação (R²)

Equação do R-quadrado, representando a proporção da variância explicada pelo modelo, onde a diferença entre os valores observados e ajustados é comparada à variância total.

Onde:

Valor observado no ponto i.

  • São os valores reais.

Valor previsto no ponto i.

  • São os valores previstos pelo modelo.

Média dos valores observados.

  • É a média dos valores reais.

O Coeficiente de Determinação é uma métrica que mede o quanto da variabilidade da variável resposta é explicada pelo modelo. Em outras palavras, ele mostra a proporção da variância dos valores observados que é capturada pelas previsões do modelo.

O valor de R² indica o quanto o modelo se ajustou bem aos dados, onde:

  • Quanto mais perto de 1, melhor o modelo explica a variabilidade dos dados;
  • Quanto mais perto de 0, pior a qualidade do modelo no ajuste aos dados.

Esse coeficiente se faz especialmente útil em modelos lineares, seja com regressões simples ou múltiplas, e é uma boa métrica inicial para comparar diferentes modelos.

Porém, existem algumas limitações. O R² pode ter resultados enganadores quando existem outliers ou em relações não-lineares entre as variáveis.

Para calcular o R² em Python, você pode utilizar a função r_score da scikit_learn.

from sklearn.metrics import r2_score
# Exemplo de uso:
valores_reais = [10, 15, 20, 25]
valores_previstos = [9, 14, 21, 24]
r2 = r2_score(valores_reais, valores_previstos)
print(f"Coeficiente de determinação (R²): {r2}")

Erro médio absoluto (MAE)

Equação do erro médio absoluto (MAE), calculando a média das diferenças absolutas entre os valores observados e previstos.

Onde:

Valor observado no ponto i.

  • São os valores reais.

Valor previsto no ponto i.

  • São os valores previstos pelo modelo.

Letra n representando o tamanho da amostra.

  • É o número total de observações.

O erro médio absoluto é uma métrica que indica a magnitude média dos erros em um conjunto de previsões, calculando a média das diferenças absolutas entre os valores reais e os valores previstos pelo modelo.

O MAE é útil para obter uma medida intuitiva do erro médio, sem considerar o sinal (positivo ou negativo), o que facilita a interpretação.

  • Quanto menor o valor do MAE, mais próximas as previsões estão dos valores reais.

Uma característica importante do MAE é que grandes desvios não são penalizados de forma desproporcional, então a presença de outliers não tem impacto tão grande no resultado, o que pode ser uma vantagem. Por outro lado, em casos onde o modelo apresenta erros por grandes margens, o resultado do MAE pode não refletir bem o impacto desses desvios.

Para calcular o MAE em Python, você pode utilizar a função mean_absolute_error da scikit-learn.

from sklearn.metrics import mean_absolute_error
# Valores reais e valores previstos (exemplo)
valores_reais = [10, 15, 20, 25]
valores_previstos = [11, 14, 22, 23]
mae = mean_absolute_error(valores_reais, valores_previstos)
print(f"Erro Médio Absoluto (MAE): {mae}")

Embora métricas como MAE e R² forneçam informações valiosas sobre o desempenho geral do modelo, em muitos casos, é necessário utilizar métricas mais sofisticadas para capturar aspectos específicos do erro ou melhorar a precisão em situações mais desafiadoras.

Raiz do Erro Quadrático Médio (RMSE)

Equação do RMSE (raiz do erro quadrático médio), que calcula a raiz quadrada da média dos quadrados das diferenças entre os valores observados e previstos.

Onde:

Valor observado no ponto i.

  • São os valores reais.

Valor previsto no ponto i.

  • São os valores previstos pelo modelo.

Letra n representando o tamanho da amostra.

  • É o número total de observações.

O RMSE (Root Mean Squared Error) mede o desvio padrão dos erros de previsão, calculando a raiz quadrada da média dos erros quadráticos.

Essa métrica é mais sensível a grandes desvios, pois o erro é elevado ao quadrado, o que significa que grandes diferenças entre o valor previsto e o valor real terão um grande impacto no resultado.

O RMSE é ideal para cenários onde grandes desvios são considerados prejudiciais e devem ser minimizados.

Ele é amplamente utilizado em modelos de séries temporais e em problemas de regressão com distribuições normais.

Sendo assim, o contrário não é tão indicado: devido à penalização excessiva de grandes erros, o RMSE pode não ser adequado para contextos com muitos outliers, onde outras métricas como MAE ou MAPE podem ser mais informativas.

Para calcular o RMSE com Python, utilize a função root_mean_squared_error

from sklearn.metrics import root_mean_squared_error
# Exemplo de valores reais (y_true) e predições (y_pred)
valores_reais = [3, -0.5, 2, 7]
valores_previstos = [2.5, 0.0, 2, 8]
# Calculando o RMSE
rmse_value = root_mean_squared_error(valores_reais, valores_previstos)
print(f"RMSE: {rmse_value:.4f}")

Erro Percentual Absoluto Médio (MAPE)

Equação do MAPE (erro percentual absoluto médio), que calcula a média dos valores percentuais absolutos das diferenças entre os valores observados e previstos.

Onde:

Valor observado no ponto i.

  • São os valores reais.

Valor previsto no ponto i.

  • São os valores previstos pelo modelo.

Letra n representando o tamanho da amostra.

  • É o número total de observações.

O MAPE (*Mean Absolute Percentage Error) é uma métrica bastante utilizada para medir o erro médio em termos percentuais.

Por ser uma métrica expressa em porcentagem, tem a vantagem de ser mais facilmente comunicada e compreendida, mesmo em casos de comparações de modelos com escalas muito diferentes.

  • Quanto mais baixo o valor do MAPE, melhor o desempenho do modelo;
  • Quanto maior o valor do MAPE, mais longe as previsões estão dos valores reais.

Porém, quando os valores observados se aproximam de zero, ou se há recorrência de valores 0, o denominador da equação pode resultar em divisões muito grandes ou indefinidas, o que afeta o cálculo do MAPE.

Outro ponto importante que deve ser considerado é que o MAPE tende a penalizar superestimações de maneira mais severa do que subestimações:

  • Superestimação: Quando o valor previsto é maior que o real, o denominador pequeno faz com que a fração do erro seja muito alta, resultando em uma penalização maior.
  • Subestimação: Quando o valor previsto é menor que o real, a fração do erro é geralmente menor, já que o denominador (valor real) não é afetado da mesma forma.
Exemplo numérico de penalização assimétrica

Se o valor real for 1 e o valor previsto for 10 (superestimação), o erro percentual será muito grande, pois:

|1 - 10| / 1 = 9

Isso resulta em um erro de 900%.

Agora, se o valor real for 10 e o valor previsto for 1 (subestimação), o erro percentual será:

|10 - 1| / 10 = 0,9

Aqui, o erro percentual é de apenas 90%.

Essa diferença nos valores de erro, dependendo da direção do erro, é o que chamamos de penalização assimétrica no MAPE, já que os erros de superestimação são amplificados enquanto os erros de subestimação são minimizados. Para calcular o MAPE em Python, você pode utilizar a função mean_absolute_percentage_error do scikit.learn:

from sklearn.metrics import mean_absolute_percentage_error
# Valores reais e valores previstos (exemplo)
valores_reais = [10, 15, 20, 25]
valores_previstos = [9, 14, 21, 24]
# Calculando o MAPE
mape = mean_absolute_percentage_error(valores_reais, valores_previstos)
# Exibindo o resultado em porcentagem
print(f"Erro Percentual Absoluto Médio (MAPE): {mape * 100:.2f}%")

Erro Percentual Absoluto Médio Simétrico (sMAPE)

Equação da sMAPE (erro percentual absoluto médio simétrico), que calcula o percentual médio das diferenças absolutas entre valores observados e previstos, normalizados pela média dos valores absolutos observados e previstos.

Onde:

Valor observado no ponto i.

  • São os valores reais.

Valor previsto no ponto i.

  • São os valores previstos pelo modelo.

Letra n representando o tamanho da amostra.

  • É o número total de observações.

O sMAPE (Symmetric Mean Absolute Percentage Error) é uma métrica derivada do MAPE (Mean Absolute Percentage Error), projetada para resolver algumas de suas limitações, como a penalização assimétrica de erros de superestimação e subestimação.

A fórmula do sMAPE introduz uma normalização simétrica ao dividir a diferença entre os valores reais e previstos pela média dos valores observados e previstos. Isso equilibra o erro e evita a penalização excessiva de superestimações.

Ainda assim, o sMAPE também apresenta limitações quando os valores observados são muito próximos à zero

A métrica ainda não conta com uma função em biblioteca Python, mas é possível implementar a fórmula:

import numpy as np
def smape(valores_reais, valores_previstos):
    # Convertendo para numpy arrays para operações vetoriais
    valores_reais = np.array(valores_reais)
    valores_previstos = np.array(valores_previstos)
   
    # Fórmula do sMAPE
    smape_valor = 100/len(valores_reais) * np.sum(2 * np.abs(valores_previstos - valores_reais) /
                                                  (np.abs(valores_reais) + np.abs(valores_previstos)))
   
    return smape_valor
# Exemplo de valores reais e previstos
valores_reais = [10, 15, 20, 25]
valores_previstos = [9, 14, 21, 24]
# Calculando o sMAPE
resultado_smape = smape(valores_reais, valores_previstos)
print(f"sMAPE: {resultado_smape:.2f}%")

Tabelinha com as principais características das métricas citadas

MétricaQuando UtilizarLimitaçõesConsiderações Adicionais
Coeficiente de Determinação (R²)- Modelos lineares para avaliar o grau de ajuste.
- Comparar diferentes modelos.
- Pode dar resultados enganadores em presença de outliers.
- Não lida bem com relações não-lineares.
Útil como métrica inicial, mas não indica o erro absoluto ou a escala do erro.
Erro Médio Absoluto (MAE)- Contextos onde é necessária uma medida intuitiva do erro médio.
- Quando se quer evitar penalizar grandes erros.
- Não captura o impacto dos grandes desvios.
- Insensível à magnitude do erro.
Simples de interpretar, ideal para conjuntos de dados com poucas flutuações bruscas.
Raiz do Erro Quadrático Médio (RMSE)- Quando se deseja dar maior peso a grandes erros.
- Modelos com distribuição normal dos erros.
- Penaliza severamente grandes desvios.
- Não é robusto contra outliers.
Usado em contextos onde grandes desvios são indesejáveis, como em previsões financeiras.
Erro Médio Percentual Absoluto (MAPE)- Modelos onde a interpretação do erro percentual é mais útil.
- Comparação entre diferentes escalas de séries temporais.
- Se valores reais forem zero ou próximos de zero, a métrica se torna instável.Ideal para comparações entre séries temporais com diferentes magnitudes.
Erro Médio Percentual Absoluto Simétrico (sMAPE)- Modelos onde se deseja equilíbrio entre erros de superestimação e subestimação.
- Séries temporais sazonais.
- Instável quando valores reais e previstos são próximos de zero.Proporciona um erro percentual equilibrado para comparações simétricas.

Conclusão

Nesse artigo, conhecemos algumas métricas utilizadas para avaliar modelos de regressão.

Descobrimos que a escolha adequada de métricas de avaliação é fundamental, pois só assim é possível garantir que o modelo esteja apresentando um desempenho alinhado às necessidades específicas do problema em questão.

Mesmo quando um modelo se apresenta eficaz no R², ele pode ser insatisfatório quando observamos métricas que penalizam desvios extremos, como é o RSME, por exemplo.

Não existe uma única métrica que atenda todos os cenários de regressão!

É necessário conhecer bem o próprio modelo e as características de cada métrica, com suas limitações e vantagens.

Inclusive, o uso combinado de várias métricas pode trazer um conhecimento mais profundo sobre o desempenho do modelo, além de mapear pontos de melhoria que poderiam estar inicialmente ocultos.

Veja outros artigos sobre Data Science