Tidsfördröjda särdrag och autoregressiva modeller

Maskininlärning för tidsseriedata i Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Det förflutna är användbart

  • Tidsseriedata innehåller nästan alltid information som delas mellan tidpunkter
  • Information från det förflutna kan hjälpa till att förutsäga framtida värden
  • De särdrag som bäst lämpar sig för att förutsäga en tidsserie är ofta tidigare värden från samma tidsserie.
Maskininlärning för tidsseriedata i Python

Om jämnhet och autokorrelation

  • En vanlig fråga om en tidsserie: hur jämna är data.
  • Det vill säga, hur korrelerad är en tidpunkt med sina grannpunkter (kallas autokorrelation).
  • Graden av autokorrelation i data påverkar dina modeller.
Maskininlärning för tidsseriedata i Python

Skapa tidsfördröjda särdrag

  • Vi ska se hur man bygger en modell som använder tidigare värden som indatasärdrag.
  • Det kan vi använda för att bedöma hur autokorrelerad signalen är (och mycket mer)
Maskininlärning för tidsseriedata i Python

Tidsskiftning av data med 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
Maskininlärning för tidsseriedata i Python

Skapa en tidsskiftad 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)
Maskininlärning för tidsseriedata i Python

Träna en modell med tidsskiftade särdrag

# Fit the model using these input features 
model = Ridge() 
model.fit(many_shifts, data)
Maskininlärning för tidsseriedata i Python

Tolka koefficienterna i den autoregressiva modellen

# 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')
Maskininlärning för tidsseriedata i Python

Visualisera koefficienter för en ojämn signal

Maskininlärning för tidsseriedata i Python

Visualisera koefficienter för en jämn signal

Maskininlärning för tidsseriedata i Python

Nu kör vi en övning!

Maskininlärning för tidsseriedata i Python

Preparing Video For Download...