dernière mise à jour le 12 avril 2020
Le lissage exponentiel est une méthode de prévision des séries chronologiques pour les données univariées qui peut être étendue pour prendre en charge les données avec une
c’est une méthode de prévision puissante qui peut être utilisée comme alternative à la famille populaire de méthodes Box-Jenkins ARIMA.
dans ce tutoriel, vous découvrirez la méthode de lissage exponentiel pour la prévision de séries chronologiques univariées.,
Après avoir terminé ce tutoriel, vous saurez:
- ce qu’est le lissage exponentiel et en quoi il est différent des autres méthodes de prévision.
- Les trois principaux types de lissage exponentiel et comment les configurer.
- comment implémenter le lissage exponentiel en Python.
lancez votre projet avec mon nouveau livre Time Series Forecasting With Python, y compris des tutoriels étape par étape et les fichiers de code source Python pour tous les exemples.
nous allons commencer.,
Une Introduction douce au lissage exponentiel pour la prévision des séries chronologiques en Python
Photo de Wolfgang Staudt, quelques droits réservés.
aperçu du tutoriel
ce tutoriel est divisé en 4 parties; elles sont:
- Qu’est-ce que le lissage exponentiel?
- Types de Lissage Exponentiel
- Comment faire pour Configurer Lissage Exponentiel
- Lissage Exponentiel en Python
qu’Est-Ce Lissage Exponentiel?
Le lissage exponentiel est une méthode de prévision des séries chronologiques pour les données univariées.,
Les méthodes de séries chronologiques comme la famille de méthodes Box-Jenkins Arima développent un modèle où la prédiction est une somme linéaire pondérée d’observations passées récentes ou de retards.
Les méthodes de prévision de lissage exponentiel sont similaires en ce sens qu’une prédiction est une somme pondérée d’observations passées, mais le modèle utilise explicitement un poids décroissant exponentiellement pour les observations passées.
plus précisément, les observations passées sont pondérées avec un rapport géométriquement décroissant.,
Les prévisions produites à l’aide de méthodes de lissage exponentiel sont des moyennes pondérées des observations passées, les poids se décomposant de manière exponentielle à mesure que les observations vieillissent. En d’autres termes, plus l’observation est récente, plus le poids associé est élevé.
— Page 171, la Prévision: principes et pratiques, 2013.
Les méthodes de lissage exponentiel peuvent être considérées comme des pairs et une alternative à la classe populaire de méthodes Box-Jenkins ARIMA pour la prévision des séries chronologiques.,
collectivement, les méthodes sont parfois appelées modèles ETS, en référence à la modélisation explicite de L’erreur, de la tendance et de la saisonnalité.
Types de lissage exponentiel
Il existe trois principaux types de méthodes de prévision des séries chronologiques de lissage exponentiel.
une méthode simple qui ne suppose aucune structure systématique, une extension qui gère explicitement les tendances, et l’approche la plus avancée qui ajoute un support pour la saisonnalité.,
lissage exponentiel simple
le lissage exponentiel simple, aussi appelé lissage exponentiel Simple, est une méthode de prévision de séries chronologiques pour des données univariées sans tendance ni saisonnalité.
Il nécessite un seul paramètre, appelé alpha (a), également appelé facteur de lissage ou coefficient de lissage.
ce paramètre contrôle la vitesse à laquelle l’influence des observations aux étapes précédentes diminue de façon exponentielle. Alpha est souvent défini sur une valeur comprise entre 0 et 1., Les grandes valeurs signifient que le modèle accorde principalement une attention aux observations passées les plus récentes, tandis que les plus petites valeurs signifient qu’une plus grande partie de l’histoire est prise en compte lors de la prédiction.
une valeur proche de 1 indique un apprentissage rapide (c’est-à-dire que seules les valeurs les plus récentes influencent les prévisions), alors qu’une valeur proche de 0 indique un apprentissage lent (les observations passées ont une grande influence sur les prévisions).
— Page 89, Pratique à l’Époque de la Série de Prévision avec R, 2016.,
hyperparamètres:
- Alpha: facteur de lissage pour le niveau.
lissage exponentiel double
Le lissage exponentiel Double est une extension du lissage exponentiel qui ajoute explicitement la prise en charge des tendances dans les séries chronologiques univariées.
en plus du paramètre alpha pour contrôler le facteur de lissage du niveau, un facteur de lissage supplémentaire est ajouté pour contrôler la décroissance de l’influence du changement de tendance appelé bêta (b).,
la méthode prend en charge les tendances qui changent de différentes manières: un additif et un multiplicatif, selon que la tendance est linéaire ou exponentielle respectivement.
Le Double lissage exponentiel avec une tendance additive est classiquement appelé modèle de tendance linéaire de Holt, du nom du développeur de la méthode Charles Holt.
- tendance Additive: Double lissage exponentiel avec une tendance linéaire.
- tendance Multiplicative: Double lissage exponentiel avec une tendance exponentielle.,
pour les prévisions à plus longue portée (en plusieurs étapes), la tendance peut se poursuivre de manière irréaliste. En tant que tel, il peut être utile d’atténuer la tendance au fil du temps.
L’amortissement signifie réduire la taille de la tendance au cours des étapes temporelles futures jusqu’à une ligne droite (pas de tendance).
Les prévisions générées par la méthode linéaire de Holt affichent une tendance constante (croissante ou décroissante) indécente dans le futur., Encore plus extrêmes sont les prévisions générées par la méthode de la tendance exponentielle motivée par cette observation introduit un paramètre qui « amortit” la tendance à une ligne plate un certain temps dans le futur.
— 183 Page, les Prévisions: les principes et la pratique, 2013.
comme pour la modélisation de la tendance elle-même, nous pouvons utiliser les mêmes principes pour amortir la tendance, spécifiquement de manière additive ou multiplicative pour un effet d’amortissement linéaire ou exponentiel. Un coefficient d’amortissement Phi (p) est utilisé pour contrôler le taux de mouillage.,
- amortissement additif: amortir une tendance linéairement.
- amortissement multiplicatif: amortir la tendance de manière exponentielle.
hyperparamètres:
- Alpha: facteur de lissage pour le niveau.
- Beta: facteur de Lissage pour la tendance.
- Type de tendance: additif ou multiplicatif.
- Type D’amortissement: additif ou multiplicatif.
- Phi: coefficient d’Amortissement.
lissage exponentiel Triple
Le lissage exponentiel Triple est une extension du lissage exponentiel qui ajoute explicitement la prise en charge de la saisonnalité aux séries chronologiques univariées.,
cette méthode est parfois appelée lissage exponentiel Holt-Winters, du nom de deux contributeurs à la méthode: Charles Holt et Peter Winters.
en plus des facteurs de lissage alpha et bêta, un nouveau paramètre appelé gamma (g) est ajouté qui contrôle l’influence sur la composante saisonnière.
comme pour la tendance, la saisonnalité peut être modélisée comme un processus additif ou multiplicatif pour un changement linéaire ou exponentiel de la saisonnalité.
- saisonnalité Additive: Triple lissage exponentiel avec saisonnalité linéaire.,
- saisonnalité Multiplicative: Triple lissage exponentiel avec une saisonnalité exponentielle.
Le lissage exponentiel Triple est la variation la plus avancée du lissage exponentiel et, grâce à la configuration, il peut également développer des modèles de lissage exponentiel double et simple.
étant une méthode adaptative, le lissage exponentiel de Holt-Winter permet aux modèles de niveau, de tendance et de saisonnalité de changer au fil du temps.
— Page 95, Pratique à l’Époque de la Série de Prévision avec R, 2016.,
de plus, pour s’assurer que la saisonnalité est modélisée correctement, le nombre d’étapes de temps dans une période saisonnière (période) doit être spécifié. Par exemple, si la série était des données mensuelles et que la période saisonnière était répétée chaque année, alors la période=12.
hyperparamètres:
- Alpha: facteur de lissage pour le niveau.
- Beta: facteur de Lissage pour la tendance.
- Gamma: facteur de lissage pour la saisonnalité.
- Type de tendance: additif ou multiplicatif.
- Type D’amortissement: additif ou multiplicatif.
- Phi: coefficient d’Amortissement.,
- la Saisonnalité Type: Additif ou multiplicatif.
- période: Pas de temps dans la période saisonnière.
comment configurer le lissage exponentiel
tous les hyperparamètres de modèle peuvent être spécifiés explicitement.
cela peut être difficile pour les experts et les débutants.
Au Lieu de cela, il est courant d’utiliser l’optimisation numérique pour rechercher et financer les coefficients de lissage (alpha, bêta, gamma et phi) pour le modèle qui entraîne l’erreur la plus faible.,
Une façon plus robuste et objective d’obtenir des valeurs pour les paramètres inconnus inclus dans toute méthode de lissage exponentiel consiste à les estimer à partir des données observées. les paramètres inconnus et les valeurs initiales pour toute méthode de lissage exponentiel peuvent être estimés en minimisant le SSE .
— Page 177, de Prévision: les principes et la pratique, 2013.,
Les paramètres qui spécifient le type de changement dans la tendance et la saisonnalité, tels que la météo ils sont additifs ou multiplicatifs et s’ils doivent être atténués, doivent être spécifiés explicitement.
Lissage Exponentiel en Python
Cette section explique comment mettre en œuvre de lissage exponentiel en Python.
les implémentations du lissage exponentiel en Python sont fournies dans la bibliothèque Python Statsmodels.,
les implémentations sont basées sur la description de la méthode dans L’excellent Livre de Rob Hyndman et George Athanasopoulos « Forecasting: Principles and Practice”, 2013 et leurs implémentations R dans leur package « forecast”.
lissage exponentiel simple
Le lissage exponentiel simple ou le lissage simple peuvent être implémentés en Python via la classe SimpleExpSmoothing Statsmodels.
Tout d’abord, une instance de la classe SimpleExpSmoothing doit être instanciée et transmettre les données d’entraînement., La fonction fit () est alors appelée fournissant la configuration fit, en particulier la valeur alpha appelée smoothing_level. Si cela n’est pas fourni ou défini sur None, le modèle optimisera automatiquement la valeur.
Cette fonction fit () renvoie une instance de la classe HoltWintersResults qui contient les coefficients appris. La fonction forecast () ou predict () sur l’objet result peut être appelée pour faire une prévision.,
Par exemple:
lissage exponentiel double et Triple
Le lissage exponentiel simple, Double et Triple peut être implémenté en Python en utilisant la classe ExponentialSmoothing Statsmodels.
Tout d’abord, une instance de la classe ExponentialSmoothing doit être instanciée, spécifiant à la fois les données d’apprentissage et une configuration pour le modèle.
plus précisément, vous devez spécifier les paramètres de configuration suivants:
- tendance: le type de composant de tendance, comme « add” pour additif ou « mul” Pour multiplicatif. La modélisation de la tendance peut être désactivée en la définissant sur aucun.,
- amorti: indique si le composant de tendance doit être amorti, vrai ou faux.
- saisonnier: le type de Composant saisonnier, comme » add « pour additif ou” mul » Pour multiplicatif. La modélisation du composant saisonnier peut être désactivée en le définissant sur aucun.
- seasonal_periods: le nombre d’étapes de temps dans une période saisonnière, par exemple 12 pour 12 mois dans une structure saisonnière annuelle (plus ici).
le modèle peut alors être ajusté sur les données d’entraînement en appelant la fonction fit ().,
Cette fonction vous permet de spécifier les coefficients de lissage le lissage exponentiel modèle ou optimisé. Par défaut, ils sont optimisés (par exemple optimized=True). Ces coefficients comprennent:
- smoothing_level (alpha): le coefficient de lissage pour le niveau.
- smoothing_slope (beta): le coefficient de lissage de la tendance.
- smoothing_seasonal (gamma): coefficient de lissage pour la composante saisonnière.
- damping_slope (phi): Le coefficient de la tendance amortie.,
de plus, la fonction fit peut effectuer une préparation de données de base avant la modélisation; en particulier:
- use_boxcox: indique s’il faut ou non effectuer une transformation de puissance de la série (True / False) ou spécifier le lambda pour la transformation.
la fonction fit() renverra une instance de la classe HoltWintersResults qui contient les coefficients appris. La fonction forecast () ou predict () sur l’objet result peut être appelée pour faire une prévision.
Lecture
Cette section fournit plus de ressources sur le sujet si vous cherchez à aller plus loin.,
Tutoriels
- Comment faire pour Grille de Recherche Triple Lissage Exponentiel pour les Séries chronologiques de Prévision en Python
Livres
- Chapitre 7 de lissage Exponentiel, de la Prévision: principes et pratiques, 2013.
- la Section 6.4. Introduction à L’analyse des séries chronologiques, Engineering Statistics Handbook, 2012.
- prévisions de séries chronologiques pratiques avec R, 2016.
API
- Statsmodels l’analyse des Séries chronologiques tsa
- statsmodels.TSA.holtwinters.L’API SimpleExpSmoothing
- statsmodels.TSA.holtwinters.L’API ExponentialSmoothing
- statsmodels.,TSA.holtwinters.HoltWintersResults API
- prévisions: en matière de Prévision de Séries temporelles et Modèles Linéaires package R
Articles
- lissage Exponentiel sur Wikipedia
Résumé
Dans ce tutoriel, vous avez découvert la méthode de lissage exponentiel pour les séries chronologiques univariées de la prévision.
plus précisément, vous avez appris:
- ce qu’est le lissage exponentiel et en quoi il est différent des autres méthodes de prévision.
- Les trois principaux types de lissage exponentiel et comment les configurer.,
- comment implémenter le lissage exponentiel en Python.
avez-vous des questions?
Posez vos questions dans les commentaires ci-dessous et je ferai de mon mieux pour y répondre.
vous Voulez Développer des Séries chronologiques des Prévisions avec Python?
développez vos propres prévisions en quelques minutes
…,avec seulement quelques lignes de code python
Découvrez comment dans mon nouvel Ebook:
Introduction à la prévision des séries chronologiques avec Python
Il couvre des tutoriels d’auto-apprentissage et des projets de bout en bout sur des sujets tels que: chargement de données, visualisation, modélisation, réglage des algorithmes, et bien plus encore…
enfin apporter des prévisions de séries chronologiques à
vos propres projets
sauter les universitaires. Seulement Les Résultats.
Voir Ce qui est à l’Intérieur de