Caratteristiche ritardate e modelli auto-regressivi

Machine Learning per dati di serie temporali in Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Il passato è utile

  • Le serie temporali quasi sempre condividono informazioni tra i timepoint
  • Il passato può aiutare a prevedere il futuro
  • Spesso le feature migliori per prevedere una serie temporale sono i suoi valori passati.
Machine Learning per dati di serie temporali in Python

Nota su regolarità e autocorrelazione

  • Una domanda comune sulle serie temporali: quanto sono regolari i dati?
  • Cioè: quanto è correlato un timepoint con i suoi vicini (chiamato autocorrelazione).
  • Il grado di autocorrelazione nei dati incide sui modelli.
Machine Learning per dati di serie temporali in Python

Creare feature con ritardo temporale

  • Vediamo come creare un modello che usa valori passati come feature in input.
  • Possiamo usarlo per valutare quanta autocorrelazione ha il segnale (e molto altro)
Machine Learning per dati di serie temporali in Python

Shift temporale dei dati con Pandas

print(df)
         df 
    0   0.0
    1   1.0 
    2   2.0 
    3   3.0 
    4   4.0 
# Sposta un DataFrame/Series di 3 indici verso il passato
print(df.shift(3))
         df
    0   NaN
    1   NaN
    2   NaN
    3   0.0
    4   1.0
Machine Learning per dati di serie temporali in Python

Creare un DataFrame con ritardi temporali

# data è una Series di pandas con dati di serie temporale
data = pd.Series(...)

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

# Crea un dizionario di dati con ritardo temporale
many_shifts = {'lag_{}'.format(ii): data.shift(ii) for ii in shifts}

# Converti in un DataFrame
many_shifts = pd.DataFrame(many_shifts)
Machine Learning per dati di serie temporali in Python

Adattare un modello con feature ritardate

# Adatta il modello usando queste feature di input 
model = Ridge() 
model.fit(many_shifts, data)
Machine Learning per dati di serie temporali in Python

Interpretare i coefficienti del modello auto-regressivo

# Visualizza i coefficienti del modello adattato
fig, ax = plt.subplots()
ax.bar(many_shifts.columns, model.coef_)
ax.set(xlabel='Nome coefficiente', ylabel='Valore coefficiente')

# Formattazione per una resa migliore
plt.setp(ax.get_xticklabels(), rotation=45, horizontalalignment='right')
Machine Learning per dati di serie temporali in Python

Visualizzare i coefficienti per un segnale irregolare

Machine Learning per dati di serie temporali in Python

Visualizzare i coefficienti per un segnale regolare

Machine Learning per dati di serie temporali in Python

Esercitiamoci!

Machine Learning per dati di serie temporali in Python

Preparing Video For Download...