Cechy z opóźnieniem czasowym i modele autoregresyjne

Uczenie maszynowe dla danych szeregów czasowych w Pythonie

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Przeszłość jest użyteczna

  • Dane szeregów czasowych niemal zawsze zawierają informacje wspólne dla różnych punktów czasowych
  • Informacje z przeszłości pomagają przewidywać przyszłość
  • Najlepszymi cechami do prognozowania szeregu czasowego są często jego poprzednie wartości.
Uczenie maszynowe dla danych szeregów czasowych w Pythonie

Gładkość i autokorelacja

  • Częste pytanie dotyczące szeregu czasowego: jak gładkie są dane.
  • Czyli jak skorelowany jest punkt czasowy z sąsiadującymi punktami (tzw. autokorelacja).
  • Poziom autokorelacji w danych wpływa na Twoje modele.
Uczenie maszynowe dla danych szeregów czasowych w Pythonie

Tworzenie cech z opóźnieniem czasowym

  • Zobaczmy, jak zbudować model wykorzystujący wartości z przeszłości jako cechy wejściowe.
  • Pozwala to ocenić autokorelację sygnału (i wiele więcej).
Uczenie maszynowe dla danych szeregów czasowych w Pythonie

Przesuwanie danych w czasie z Pandas

print(df)
         df 
    0   0.0
    1   1.0 
    2   2.0 
    3   3.0 
    4   4.0 
# Shift a DataFrame/Series by 3 index values towards the past
print(df.shift(3))
         df
    0   NaN
    1   NaN
    2   NaN
    3   0.0
    4   1.0
Uczenie maszynowe dla danych szeregów czasowych w Pythonie

Tworzenie przesuniętego czasowo DataFrame

# data is a pandas Series containing time series data
data = pd.Series(...)

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

# Create a dictionary of time-shifted data
many_shifts = {'lag_{}'.format(ii): data.shift(ii) for ii in shifts}

# Convert them into a dataframe
many_shifts = pd.DataFrame(many_shifts)
Uczenie maszynowe dla danych szeregów czasowych w Pythonie

Dopasowanie modelu z cechami przesuniętymi w czasie

# Fit the model using these input features 
model = Ridge() 
model.fit(many_shifts, data)
Uczenie maszynowe dla danych szeregów czasowych w Pythonie

Interpretacja współczynników modelu autoregresyjnego

# Visualize the fit model coefficients
fig, ax = plt.subplots()
ax.bar(many_shifts.columns, model.coef_)
ax.set(xlabel='Coefficient name', ylabel='Coefficient value')

# Set formatting so it looks nice
plt.setp(ax.get_xticklabels(), rotation=45, horizontalalignment='right')
Uczenie maszynowe dla danych szeregów czasowych w Pythonie

Wizualizacja współczynników dla sygnału szorstkiego

Uczenie maszynowe dla danych szeregów czasowych w Pythonie

Wizualizacja współczynników dla sygnału gładkiego

Uczenie maszynowe dla danych szeregów czasowych w Pythonie

Czas na ćwiczenia!

Uczenie maszynowe dla danych szeregów czasowych w Pythonie

Preparing Video For Download...