Tijdvertraagde features en autoregressieve modellen

Machine Learning voor tijdreeksgegevens in Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Het verleden is nuttig

  • Tijdreeksgegevens bevatten bijna altijd info die wordt gedeeld tussen tijdstippen
  • Informatie uit het verleden helpt voorspellen wat er later gebeurt
  • Vaak zijn de beste features om een tijdreeks te voorspellen eerdere waarden van diezelfde tijdreeks.
Machine Learning voor tijdreeksgegevens in Python

Opmerking over gladheid en autocorrelatie

  • Een veelgestelde vraag bij tijdreeksen: hoe glad is de data?
  • Oftewel: hoe sterk is een tijdstip gecorreleerd met zijn buren (dit heet autocorrelatie).
  • De mate van autocorrelatie in data beïnvloedt je modellen.
Machine Learning voor tijdreeksgegevens in Python

Tijdvertraagde features maken

  • Laten we een model bouwen dat waarden uit het verleden als inputfeatures gebruikt.
  • Zo kun je inschatten hoe autocorreleerd je signaal is (en nog veel meer)
Machine Learning voor tijdreeksgegevens in Python

Data tijdverschuiven met Pandas

print(df)
         df 
    0   0.0
    1   1.0 
    2   2.0 
    3   3.0 
    4   4.0 
# Verschuif een DataFrame/Series 3 indexwaarden naar het verleden
print(df.shift(3))
         df
    0   NaN
    1   NaN
    2   NaN
    3   0.0
    4   1.0
Machine Learning voor tijdreeksgegevens in Python

Een tijdverschuiven DataFrame maken

# 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)
Machine Learning voor tijdreeksgegevens in Python

Een model fitten met tijdverschuiven features

# Fit het model met deze inputfeatures 
model = Ridge() 
model.fit(many_shifts, data)
Machine Learning voor tijdreeksgegevens in Python

Autoregressieve modelcoëfficiënten interpreteren

# Visualiseer de modelcoëfficiënten
fig, ax = plt.subplots()
ax.bar(many_shifts.columns, model.coef_)
ax.set(xlabel='Naam coëfficiënt', ylabel='Waarde coëfficiënt')

# Opmaak zodat het er netjes uitziet
plt.setp(ax.get_xticklabels(), rotation=45, horizontalalignment='right')
Machine Learning voor tijdreeksgegevens in Python

Coëfficiënten visualiseren voor een ruw signaal

Machine Learning voor tijdreeksgegevens in Python

Coëfficiënten visualiseren voor een glad signaal

Machine Learning voor tijdreeksgegevens in Python

Laten we oefenen!

Machine Learning voor tijdreeksgegevens in Python

Preparing Video For Download...