Reporting Prediction Errors
There are several types of reporting errors in prediction. There is a whole research behind this topic, especially for the purpose of training the ML models. However, I put some of them that I usually use here.
Given that $f \rightarrow forcast$ and $y \rightarrow value$, we can calculate these errros:
Raw Error (RE)
\[RE = f - y\]Percentage Error (PE)
\[PE = {(f - y) \over y}\]Symmetric Percentage Error (sPE)
\[sPE = {(f - y) \over (f + y) / 2}\]Log Error (LE)
\(LE = log(f) - log(y)\) or
\[LE = log({f \over y})\]
And some of the associated performance metrics are:
Mean Symmetric Error (MSE)
\[{1 \over n} \sum_{k=1}^n (f_k - y_k)^2\]Mean Absolute Percentage Error (MAPE)
\[{1 \over n} \sum_{k=1}^n |f_k - y_k| / y_k\]Symmetric Mean Absolute Percentage Error (sMAPE)
\[{1 \over n} \sum_{k=1}^n |f_k - y_k| / y_k\]Mean Absolute Log Error (MALE)
\[{1 \over n} \sum_{k=1}^n |log(f_k/y_k)|\]Root Mean Square Log Error (RMSLE)
\[sqrt({1 \over n} \sum_{k=1}^n |log(f_k/y_k)|^2)\]Exponential Mean Absolute MALE (EMALE)
\[\exp({1 \over n} \sum_{k=1}^n |log(f_k/y_k)|)\]Exponential Root Mean Square Log Error (ERMSLE)
\[\exp(sqrt({1 \over n} \sum_{k=1}^n |log(f_k/y_k)|^2))\]
Python version
# Given:
# f -> forecast
# y -> value
# RAW Error (RE)
RE = f - y
# Percentage Error (PE)
PE = (f - y) / y
# Symmetric Percentage Error (sPE)
sPE = (f - y) / ((f + y) / 2)
# Log Error (LE)
LE = log(f) - log(y)
# or
LE = log(f/y)
# LE = log(1 + PE)
And the respective performance metrics of the model/prediction:
# Mean Absolute Percentage Error
MAPE = mean(abs(PE))
# Symmetric Mean Absolute Percentage Error
sMAPE = mean(abs(sPE))
# Mean Absolute Log Error
MALE = mean(abs(LE))
# Root Mean Square Log Error
RMSLE = sqrt(mean(LE ** 2))
# Exponential Mean Absolute MALE
EMALE = exp(MALE)
# Exponential Root Mean Square Log Error
ERMSLE = expo(RMSLE)
There are tons of resources out there. If you want to see which one suits your usecase, take a look at here.