Mesures de performances de prévision de séries chronologiques avec Python
Les mesures de performance des prédictions de séries chronologiques fournissent un résumé des compétences et des capacités du modèle de prévision qui a effectué les prédictions.
Il existe de nombreuses mesures de performance différentes parmi lesquelles choisir. Il peut être déroutant de savoir quelle mesure utiliser et comment interpréter les résultats.
Dans ce didacticiel, vous découvrirez les mesures de performances permettant d'évaluer les prévisions de séries chronologiques avec Python.
Les séries chronologiques se concentrent généralement sur la prédiction de valeurs réelles, appelées problèmes de régression. Par conséquent, les mesures de performances de ce didacticiel se concentreront sur les méthodes d'évaluation des prédictions à valeur réelle.
Après avoir terminé ce tutoriel, vous saurez :
- Mesures de base de la performance des prévisions, y compris l'erreur de prévision résiduelle et le biais de prévision.
- Calculs d'erreurs de prévision de séries chronologiques qui ont les mêmes unités que les résultats attendus, telles que l'erreur absolue moyenne.
- Calculs d'erreur largement utilisés qui punissent les erreurs importantes, telles que l'erreur quadratique moyenne et l'erreur quadratique moyenne.
Démarrez votre projet avec mon nouveau livre Time Series Forecasting With Python, comprenant des tutoriels étape par étape et les fichiers code source Python pour tous les exemples.
Commençons.
- Juin/2019 : Correction d'une faute de frappe dans le biais de prévision (merci Francisco).
Erreur de prévision (ou erreur de prévision résiduelle)
L'erreur de prévision est calculée comme la valeur attendue moins la valeur prédite.
C’est ce qu’on appelle l’erreur résiduelle de la prédiction.
forecast_error = expected_value - predicted_value
L'erreur de prévision peut être calculée pour chaque prévision, fournissant ainsi une série chronologique d'erreurs de prévision.
L'exemple ci-dessous montre comment l'erreur de prévision peut être calculée pour une série de 5 prédictions par rapport à 5 valeurs attendues. L'exemple a été conçu à des fins de démonstration.
expected = [0.0, 0.5, 0.0, 0.5, 0.0]
predictions = [0.2, 0.4, 0.1, 0.6, 0.2]
forecast_errors = [expected[i]-predictions[i] for i in range(len(expected))]
print('Forecast Errors: %s' % forecast_errors)
L'exécution de l'exemple calcule l'erreur de prévision pour chacune des 5 prédictions. La liste des erreurs de prévision est ensuite imprimée.
Forecast Errors: [-0.2, 0.09999999999999998, -0.1, -0.09999999999999998, -0.2]
Les unités de l’erreur de prévision sont les mêmes que les unités de prédiction. Une erreur de prévision de zéro indique l’absence d’erreur ou une maîtrise parfaite de cette prévision.
Erreur de prévision moyenne (ou biais de prévision)
L’erreur de prévision moyenne est calculée comme la moyenne des valeurs d’erreur de prévision.
mean_forecast_error = mean(forecast_error)
Les erreurs de prévision peuvent être positives et négatives. Cela signifie que lorsque la moyenne de ces valeurs est calculée, l’erreur de prévision moyenne idéale serait nulle.
Une valeur d’erreur de prévision moyenne autre que zéro suggère une tendance du modèle à surestimer (erreur négative) ou à sous-estimer (erreur positive). En tant que telle, l’erreur moyenne de prévision est également appelée biais de prévision.
L'erreur de prévision peut être calculée directement comme la moyenne des valeurs de prévision. L'exemple ci-dessous montre comment la moyenne des erreurs de prévision peut être calculée manuellement.
expected = [0.0, 0.5, 0.0, 0.5, 0.0]
predictions = [0.2, 0.4, 0.1, 0.6, 0.2]
forecast_errors = [expected[i]-predictions[i] for i in range(len(expected))]
bias = sum(forecast_errors) * 1.0/len(expected)
print('Bias: %f' % bias)
L’exécution de l’exemple imprime l’erreur de prévision moyenne, également appelée biais de prévision.
Dans ce cas, le résultat est négatif, ce qui signifie que nous avons une surestimation.
Bias: -0.100000
Les unités du biais de prévision sont les mêmes que les unités des prédictions. Un biais de prévision de zéro, ou un très petit nombre proche de zéro, montre un modèle impartial.
Erreur absolue moyenne
L'erreur absolue moyenne, ou MAE, est calculée comme la moyenne des valeurs d'erreur de prévision, toutes les valeurs d'erreur de prévision étant forcées d'être positives.
Forcer les valeurs à être positives s’appelle les rendre absolues. Ceci est signifié par la fonction absolue abs() ou affiché mathématiquement sous la forme de deux caractères barres autour de la valeur : |value|.
mean_absolute_error = mean( abs(forecast_error) )
Où abs() rend les valeurs positives, forecast_error est une ou une séquence d'erreurs de prévision, et mean() calcule la valeur moyenne.
Nous pouvons utiliser la fonction Mean_absolute_error() de la bibliothèque scikit-learn pour calculer l'erreur absolue moyenne d'une liste de prédictions. L'exemple ci-dessous illustre cette fonction.
from sklearn.metrics import mean_absolute_error
expected = [0.0, 0.5, 0.0, 0.5, 0.0]
predictions = [0.2, 0.4, 0.1, 0.6, 0.2]
mae = mean_absolute_error(expected, predictions)
print('MAE: %f' % mae)
L'exécution de l'exemple calcule et imprime l'erreur absolue moyenne pour une liste de 5 valeurs attendues et prédites.
MAE: 0.140000
Ces valeurs d'erreur sont dans les unités d'origine des valeurs prédites. Une erreur absolue moyenne de zéro indique qu’il n’y a pas d’erreur.
Erreur quadratique moyenne
L'erreur quadratique moyenne, ou MSE, est calculée comme la moyenne des valeurs d'erreur quadratique de prévision. La mise au carré des valeurs d’erreur de prévision les oblige à être positives ; cela a également pour effet d’accorder plus de poids aux erreurs importantes.
Les erreurs de prévision très importantes ou aberrantes sont mises au carré, ce qui à son tour a pour effet de faire sortir la moyenne des erreurs de prévision quadratiques, ce qui donne lieu à un score d'erreur quadratique moyenne plus élevé. En effet, le score donne de moins bonnes performances aux modèles qui font des prévisions largement erronées.
mean_squared_error = mean(forecast_error^2)
Nous pouvons utiliser la fonction Mean_squared_error() de scikit-learn pour calculer l'erreur quadratique moyenne d'une liste de prédictions. L'exemple ci-dessous illustre cette fonction.
from sklearn.metrics import mean_squared_error
expected = [0.0, 0.5, 0.0, 0.5, 0.0]
predictions = [0.2, 0.4, 0.1, 0.6, 0.2]
mse = mean_squared_error(expected, predictions)
print('MSE: %f' % mse)
L’exécution de l’exemple calcule et imprime l’erreur quadratique moyenne pour une liste de valeurs attendues et prédites.
MSE: 0.022000
Les valeurs d'erreur sont en unités carrées des valeurs prédites. Une erreur quadratique moyenne de zéro indique une compétence parfaite ou aucune erreur.
Erreur quadratique moyenne
L’erreur quadratique moyenne décrite ci-dessus est exprimée en unités carrées des prédictions.
Il peut être reconverti dans les unités d'origine des prédictions en prenant la racine carrée du score d'erreur quadratique moyenne. C’est ce qu’on appelle l’erreur quadratique moyenne, ou RMSE.
rmse = sqrt(mean_squared_error)
Cela peut être calculé en utilisant la fonction mathématique sqrt() sur l'erreur quadratique moyenne calculée à l'aide de la fonction mean_squared_error() scikit-learn.
from sklearn.metrics import mean_squared_error
from math import sqrt
expected = [0.0, 0.5, 0.0, 0.5, 0.0]
predictions = [0.2, 0.4, 0.1, 0.6, 0.2]
mse = mean_squared_error(expected, predictions)
rmse = sqrt(mse)
print('RMSE: %f' % rmse)
L’exécution de l’exemple calcule l’erreur quadratique moyenne.
RMSE: 0.148324
Les valeurs d'erreur RMES sont dans les mêmes unités que les prédictions. Comme pour l’erreur quadratique moyenne, un RMSE de zéro n’indique aucune erreur.
Lectures complémentaires
Vous trouverez ci-dessous quelques références pour des lectures plus approfondies sur les mesures d’erreur de prévision des séries chronologiques.
- Section 3.3 Mesure de la précision prédictive, prévision pratique de séries chronologiques avec R : un guide pratique.
- Section 2.5 Évaluation de la précision des prévisions, Prévisions : principes et pratiques
- API de métriques scikit-learn
- Section 3.3.4. Métriques de régression, guide de l'API scikit-learn
Résumé
Dans ce didacticiel, vous avez découvert une suite de 5 mesures de performances de séries chronologiques standard en Python.
Concrètement, vous avez appris :
- Comment calculer l'erreur résiduelle des prévisions et comment estimer le biais dans une liste de prévisions.
- Comment calculer l’erreur absolue moyenne de prévision pour décrire l’erreur dans les mêmes unités que les prédictions.
- Comment calculer l’erreur quadratique moyenne et l’erreur quadratique moyenne largement utilisées pour les prévisions.
Avez-vous des questions sur les mesures de performances des prévisions de séries chronologiques ou sur ce didacticiel
Posez vos questions dans les commentaires ci-dessous et je ferai de mon mieux pour y répondre.