Caractéristiques retardées et modèles auto-régressifs

Machine Learning for Time Series Data in Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Le passé est utile

  • Les séries temporelles contiennent presque toujours des informations partagées entre instants.
  • Le passé peut aider à prédire le futur.
  • Souvent, les meilleures caractéristiques sont les valeurs passées de la même série.
Machine Learning for Time Series Data in Python

À propos de la régularité et de l'autocorrélation

  • Question courante sur une série temporelle : quelle est sa régularité ?
  • Autrement dit, à quel point un instant est-il corrélé à ses voisins (autocorrélation).
  • Le degré d'autocorrélation influence vos modèles.
Machine Learning for Time Series Data in Python

Créer des caractéristiques à retard

  • Voyons comment construire un modèle utilisant des valeurs passées comme caractéristiques d'entrée.
  • Cela permet d'évaluer l'autocorrélation du signal (et bien d'autres aspects).
Machine Learning for Time Series Data in Python

Décaler des données avec pandas

print(df)
         df 
    0   0.0
    1   1.0 
    2   2.0 
    3   3.0 
    4   4.0 
# Décaler un DataFrame/Series de 3 index vers le passé
print(df.shift(3))
         df
    0   NaN
    1   NaN
    2   NaN
    3   0.0
    4   1.0
Machine Learning for Time Series Data in Python

Créer un DataFrame décalé dans le temps

# data est une Series pandas contenant des données de série temporelle
data = pd.Series(...)

# Retards
shifts = [0, 1, 2, 3, 4, 5, 6, 7]

# Créer un dictionnaire de données décalées dans le temps
many_shifts = {'lag_{}'.format(ii): data.shift(ii) for ii in shifts}

# Convertir en DataFrame
many_shifts = pd.DataFrame(many_shifts)
Machine Learning for Time Series Data in Python

Ajuster un modèle avec des caractéristiques décalées

# Ajuster le modèle avec ces caractéristiques d'entrée 
model = Ridge() 
model.fit(many_shifts, data)
Machine Learning for Time Series Data in Python

Interpréter les coefficients du modèle auto-régressif

# Visualiser les coefficients du modèle ajusté
fig, ax = plt.subplots()
ax.bar(many_shifts.columns, model.coef_)
ax.set(xlabel='Nom du coefficient', ylabel='Valeur du coefficient')

# Mise en forme pour un meilleur rendu
plt.setp(ax.get_xticklabels(), rotation=45, horizontalalignment='right')
Machine Learning for Time Series Data in Python

Visualiser les coefficients pour un signal bruité

Machine Learning for Time Series Data in Python

Visualiser les coefficients pour un signal lisse

Machine Learning for Time Series Data in Python

Passons à la pratique !

Machine Learning for Time Series Data in Python

Preparing Video For Download...