Métricas de avaliação para séries temporais

karoline.penteado
karoline.penteado

Compartilhe

histograma num monitor

As batidas do seu coração por minuto, a temperatura registrada com o passar dos meses na cidade de São Paulo, o comportamento da bolsa de valores, a produção mensal de uma fábrica e o número de casos registrados de Covid-19 ao longo de toda a pandemia, são apenas alguns exemplos de séries temporais. De maneira objetiva, podemos pensar que uma série temporal são conjuntos de dados de um determinado evento coletados, de maneira sequencial, ao longo do tempo.

Estudar esse tipo de dado é fundamental na identificação de possíveis padrões e, assim, torna-se essencial na criação de modelos preditivos que têm como motor uma série temporal. Dito isso, pensando sob a perspectiva estratégica, não podemos dissociar essa análise ao planejamento de um negócio e à tomada de decisões mais acertadas, por exemplo.

Mas, parte do nosso problema é entender se o modelo preditivo que construímos está ajustado à base de dados e, para isso, precisamos medí-lo.

E a pergunta é: como podemos medir a qualidade do ajuste de um modelo de previsão para uma série temporal?

Para medir um modelo (seja ele qual for), vamos tentar medir e analisar os erros que ele apresenta, ou seja, vamos comparar Y e Ŷ (Y real e Y previsto, respectivamente) e dar atenção à esses resíduos.

Sendo assim, a seguir, apresentaremos 4 técnicas diferentes para aferir seu modelo de previsão para séries temporais:

Tipos de métricas

Erro Médio Absoluto - MAE

O erro médio absoluto, MAE (da sigla em inglês Mean Absolute Error), é calculado a partir da média dos erros absolutos, ou seja, utilizamos o módulo de cada erro para evitar a subestimação, isso porque, o valor é menos afetado por pontos especialmente extremos (outliers).

Cada erro, pode ser interpretado como a diferença entre Y e Ŷ e assim, temos:

MAE é igual ao somatório de n módulos da diferença entre n Y e n Ŷ, dividido por n

Utilizamos essa medida em séries temporais, pois há casos em que o erro negativo pode zerar o positivo ou dar uma ideia de que o modelo é preciso. Mas aqui, medimos apenas a distância do valor real, independente de ser acima ou abaixo.

Por exemplo, no Scikit-Learn - uma biblioteca de machine learning para Python (consulte a documentação aqui, para medir o MAE, usamos:

from sklearn.metrics import mean_absolute_error

y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
mean_absolute_error(y_true, y_pred)
>>> 0.5

Você pode explorar a documentação do Scikit-Learn para o cálculo do MAE aqui.

Erro Quadrático Médio - MSE

O erro quadrático médio, MSE (da sigla em inglês Mean Squared Error), é comumente usado para verificar a acurácia de modelos e dá um maior peso aos maiores erros, já que, ao ser calculado, cada erro é elevado ao quadrado individualmente e, após isso, a média desses erros quadráticos é calculada.

Usando o mesmo conceito de erro utilizado anteriormente, temos a equação abaixo:

MSE é igual ao somatório da diferença entre  Y e  Ŷ elevada ao quadrado, dividido por n

Por conta do expoente ao quadrado que o erro assume, essa métrica é bastante sensível a outliers (valores discrepantes) e, caso tenha muitos erros significativos em sua análise, essa métrica poderá ser extrapolada.

No Scikit-Learn, por exemplo, para medir o MSE, usamos:

from sklearn.metrics import mean_squared_error

y_true = [[0.5, 1],[-1, 1],[7, -6]]
y_pred = [[0, 2],[-1, 2],[8, -5]]

mean_squared_error(y_true, y_pred, squared=True)
>>> 0.708...

Você pode explorar a documentação do Scikit-Learn para o cálculo do MSE aqui.

Raiz Quadrada do Erro Médio - RMSE

A raiz quadrada do erro médio, RMSE (da sigla em inglês Root Mean Squared Error) é apenas a raiz quadrada do MSE, onde o erro retorna à unidade de medida do modelo (no MSE, a unidade de medida é quadrática).

É frequentemente usada em séries temporais por ser mais sensível a erros maiores devido ao processo de quadratura que a produziu.

A equação para cálculo, dá-se por:

RMSE é igual a raiz quadrada do somatório da diferença entre n Y e n Ŷ elevada ao quadrado, dividido por n

No Scikit-Learn, por exemplo, para medir o RMSE, usamos:

from sklearn.metrics import mean_squared_error

y_true = [[0.5, 1],[-1, 1],[7, -6]]
y_pred = [[0, 2],[-1, 2],[8, -5]]

mean_squared_error(y_true, y_pred, squared=False)
>>> 0.822...

Repare que, para calcular o MSE e o RMSE no Scikit-Learn, a única mudança é o parâmetro squared.

Você pode explorar a documentação do Scikit-Learn para o cálculo do RMSE no mesmo link do cálculo do MSE.

Média Percentual Absoluta do Erro - MAPE

Esta é outra métrica interessante para usar, geralmente usada em relatórios de gerenciamento, porque o erro é medido como uma porcentagem e assim, é possível fazer comparações entre erros percentuais do modelo entre produtos.

A fórmula para cálculo é a seguinte:

MAPE é igual a um dividido por n multiplicado pelo somatório de n módulos da diferença entre n Y e n Ŷ, dividido pelo respectivo Y, multiplicado por 100%

No Scikit-Learn, por exemplo, para medir o MAPE, usamos:

from sklearn.metrics import mean_absolute_percentage_error

y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]

mean_absolute_percentage_error(y_true, y_pred)
>>> 0.3273...

Você pode explorar a documentação do Scikit-Learn para o cálculo do MAPE aqui.

Conclusão

Dadas as métricas, é importante lembrar que para cada modelo, podemos utilizar uma ou mais métricas combinadas para analisá-lo, além disso, podemos pensar que dependendo da métrica ou métricas escolhidas, abrimos mão de algo (seja precisão, tratamento de outliers ou semelhantes).

Além disso, neste artigo, utilizamos a biblioteca Scikit-Learn como exemplo, mas existem outras bibliotecas em que podemos desenvolver um modelo de previsão para séries temporais analisá-las.

Para se aprofundar

Explore o Prophet, uma outra biblioteca de séries temporais para Python.

Alura+ de previsão de séries temporais com o Prophet

Curso de análise de séries temporais para Covid-19

Veja outros artigos sobre Data Science