Bienvenue à exoco-lmd.com! Partagez et consultez des solutions d'examens et d'exercices des programmes LMD et formation d'ingénieur.

L'ingénierie des caractéristiques pour les séries temporelles.

Démarré par Exocoeur, Février 18, 2023, 03:39:57 PM

« précédent - suivant »

Exocoeur

L'ingénierie des caractéristiques (Feature engineering for time series) est une étape cruciale de l'analyse de séries temporelles qui consiste à créer de nouvelles caractéristiques ou à transformer des caractéristiques existantes pour améliorer la performance des modèles prédictifs. Dans cet article, nous allons examiner les meilleures techniques d'ingénierie des caractéristiques pour les séries temporelles.

    Variables retardées ( Lagged variables): l'une des caractéristiques les plus importantes de l'analyse de séries chronologiques est les variables retardées, ce qui signifie utiliser les observations passées comme entrée pour prédire les valeurs futures. Par exemple, si vous souhaitez prédire le prix des actions pour le lendemain, vous pouvez utiliser le prix des actions de la veille comme caractéristique.

    Statistiques de roulement (Rolling statistics): les statistiques de roulement consistent à calculer des statistiques récapitulatives sur une fenêtre mobile de temps. Ces caractéristiques peuvent fournir des informations sur les tendances et les modèles des données. Les exemples incluent les moyennes mobiles, les écarts types et les valeurs maximales / minimales.

    Saisonnalité et tendance : les caractéristiques de saisonnalité et de tendance sont importantes pour l'analyse de séries chronologiques, car elles capturent les modèles sous-jacents des données. Par exemple, si vous analysez des données de ventes, vous pouvez vouloir extraire des caractéristiques qui capturent la saisonnalité mensuelle ou annuelle.

    Transformations de Fourier : les transformations de Fourier sont utilisées pour extraire les composantes périodiques d'une série chronologique, telles que les cycles quotidiens, hebdomadaires ou annuels. Ces caractéristiques peuvent être utilisées pour capturer les modèles saisonniers des données.

    Décomposition de séries temporelles: la décomposition de séries temporelles consiste à décomposer une série chronologique en ses composantes, telles que la tendance, la saisonnalité et la résiduelle. Ces composantes peuvent être utilisées comme caractéristiques dans des modèles prédictifs.

    Regroupement de séries temporelles : le regroupement de séries chronologiques est une technique qui consiste à regrouper des séries chronologiques similaires en fonction de leurs modèles. Cela peut être utile pour identifier des caractéristiques communes à des séries chronologiques similaires.

    Sélection de caractéristiques : une fois que vous avez créé un grand ensemble de caractéristiques, il est important d'effectuer une sélection de caractéristiques pour identifier les caractéristiques les plus importantes pour le modèle prédictif. Cela peut être fait en utilisant des techniques telles que l'analyse de corrélation, l'information mutuelle et les modèles basés sur des arbres.

Voici un exemple de code Python pour implémenter certaines des techniques d'ingénierie des caractéristiques pour les données de séries chronologiques à l'aide des bibliothèques pandas et numpy. Dans ce code, nous chargeons d'abord les données de la série temporelle à partir d'un fichier CSV et créons des variables retardées en utilisant une boucle for. Nous calculons ensuite des statistiques de roulement telles que la moyenne.


import pandas as pd
import numpy as np
# load the time series data
data = pd.read_csv('data.csv', parse_dates=['date'], index_col='date')
# create lagged variables
lags = 5
for i in range(1, lags+1):
    data['lag_{}'.format(i)] = data['value'].shift(i)
# create rolling statistics
window = 3
data['rolling_mean'] = data['value'].rolling(window=window).mean()
data['rolling_std'] = data['value'].rolling(window=window).std()
# create seasonality and trend features
data['month'] = data.index.month
data['day_of_week'] = data.index.dayofweek
# perform Fourier transformations
fourier_terms = 3
for i in range(1, fourier_terms+1):
    data['fourier_{}'.format(i)] = np.sin(2*np.pi*i*data.index.dayofyear/365.25)
   
# perform time series decomposition
from statsmodels.tsa.seasonal import seasonal_decompose
decomposition = seasonal_decompose(data['value'])
data['trend'] = decomposition.trend
data['seasonal'] = decomposition.seasonal
data['residual'] = decomposition.resid
# perform feature selection
from sklearn.feature_selection import SelectKBest, mutual_info_regression
X = data.drop('value', axis=1)
y = data['value']
selector = SelectKBest(mutual_info_regression, k=5)
selector.fit(X, y)
selected_features = X.columns[selector.get_support()]
data = data[selected_features]

Hors ligne Annonceur

  • Jr. Member
  • **
  • Messages: na
  • Karma: +0/-0
Re : message iportant de l'auteur
« le: un jour de l'année »





Suggestions pour vous