Caractéristiques retardées et modèles autorégressifs

Machine Learning pour les données chronologiques en Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Le passé est utile

  • Les séries chronologiques contiennent presque toujours de l'information partagée entre les instants.
  • L'information passée aide à prédire l'avenir.
  • Souvent, les meilleures variables pour prédire une série sont ses valeurs antérieures.
Machine Learning pour les données chronologiques en Python

Note sur la « lissité » et l'autocorrélation

  • Une question courante pour une série chronologique : à quel point les données sont-elles lisses ?
  • Autrement dit, quelle est la corrélation d'un instant avec ses voisins (autocorrélation).
  • Le degré d'autocorrélation influence vos modèles.
Machine Learning pour les données chronologiques en Python

Créer des variables décalées dans le temps

  • Voyons comment bâtir un modèle qui utilise des valeurs passées comme variables d'entrée.
  • On peut ainsi évaluer l'autocorrélation du signal (et bien d'autres aspects).
Machine Learning pour les données chronologiques en 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 indices vers le passé
print(df.shift(3))
         df
    0   NaN
    1   NaN
    2   NaN
    3   0.0
    4   1.0
Machine Learning pour les données chronologiques en Python

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

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

# Décalages
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}

# Les convertir en DataFrame
many_shifts = pd.DataFrame(many_shifts)
Machine Learning pour les données chronologiques en Python

Ajuster un modèle avec des variables décalées

# Ajuster le modèle avec ces variables d'entrée 
model = Ridge() 
model.fit(many_shifts, data)
Machine Learning pour les données chronologiques en Python

Interpréter les coefficients du modèle autoré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 une meilleure lisibilité
plt.setp(ax.get_xticklabels(), rotation=45, horizontalalignment='right')
Machine Learning pour les données chronologiques en Python

Visualiser les coefficients pour un signal irrégulier

Machine Learning pour les données chronologiques en Python

Visualiser les coefficients pour un signal lisse

Machine Learning pour les données chronologiques en Python

Passons à la pratique !

Machine Learning pour les données chronologiques en Python

Preparing Video For Download...