Recursos com atraso temporal e modelos autorregressivos

Machine Learning para dados de séries temporais em Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

O passado é útil

  • Séries temporais quase sempre têm informação compartilhada entre instantes
  • O passado pode ajudar a prever o futuro
  • Muitas vezes, os melhores recursos para prever uma série são valores anteriores da própria série.
Machine Learning para dados de séries temporais em Python

Observação sobre suavidade e autocorrelação

  • Uma pergunta comum sobre séries temporais: quão suave é a série?
  • Ou seja, quão correlacionado é um instante com seus vizinhos (chamamos de autocorrelação).
  • A quantidade de autocorrelação nos dados impacta seus modelos.
Machine Learning para dados de séries temporais em Python

Criando recursos com defasagem temporal

  • Vamos ver como criar um modelo que usa valores passados como recursos de entrada.
  • Com isso, dá para avaliar quão autocorrelado é o sinal (e muito mais)
Machine Learning para dados de séries temporais em Python

Deslocando dados no tempo com Pandas

print(df)
         df 
    0   0.0
    1   1.0 
    2   2.0 
    3   3.0 
    4   4.0 
# Desloque um DataFrame/Series em 3 índices para o passado
print(df.shift(3))
         df
    0   NaN
    1   NaN
    2   NaN
    3   0.0
    4   1.0
Machine Learning para dados de séries temporais em Python

Criando um DataFrame com defasagens

# data é uma Series do pandas com dados de série temporal
data = pd.Series(...)

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

# Crie um dicionário com dados deslocados no tempo
many_shifts = {'lag_{}'.format(ii): data.shift(ii) for ii in shifts}

# Converta para um DataFrame
many_shifts = pd.DataFrame(many_shifts)
Machine Learning para dados de séries temporais em Python

Ajustando um modelo com recursos defasados

# Ajuste o modelo usando esses recursos de entrada 
model = Ridge() 
model.fit(many_shifts, data)
Machine Learning para dados de séries temporais em Python

Interpretando coeficientes do modelo autorregressivo

# Visualize os coeficientes do modelo ajustado
fig, ax = plt.subplots()
ax.bar(many_shifts.columns, model.coef_)
ax.set(xlabel='Nome do coeficiente', ylabel='Valor do coeficiente')

# Formatação para ficar legível
plt.setp(ax.get_xticklabels(), rotation=45, horizontalalignment='right')
Machine Learning para dados de séries temporais em Python

Visualizando coeficientes para um sinal ruidoso

Machine Learning para dados de séries temporais em Python

Visualizando coeficientes para um sinal suave

Machine Learning para dados de séries temporais em Python

Vamos praticar!

Machine Learning para dados de séries temporais em Python

Preparing Video For Download...