Predicția datelor în timp

Machine Learning pentru Date de Tip Șir de Timp în Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Clasificare vs. Regresie

Clasificare
classification_model.predict(X_test)
array([0, 1, 1, 0])
Regresie
regression_model.predict(X_test)
array([0.2, 1.4, 3.6, 0.6])
Machine Learning pentru Date de Tip Șir de Timp în Python

Corelație și regresie

  • Regresia este similară cu calculul corelației, dar cu diferențe esențiale:
    • Regresia: proces ce produce un model formal al datelor
    • Corelația: statistică descriptivă. Conține mai puține informații decât modelul de regresie.
Machine Learning pentru Date de Tip Șir de Timp în Python

Corelația dintre variabile se schimbă adesea în timp

  • Seriile de timp au adesea tipare care se schimbă în timp
  • Două serii aparent corelate la un moment dat pot să nu rămână astfel
Machine Learning pentru Date de Tip Șir de Timp în Python

Vizualizarea relațiilor dintre serii de timp

fig, axs = plt.subplots(1, 2)

# Make a line plot for each timeseries
axs[0].plot(x, c='k', lw=3, alpha=.2)
axs[0].plot(y)
axs[0].set(xlabel='time', title='X values = time')

# Encode time as color in a scatterplot
axs[1].scatter(x_long, y_long, c=np.arange(len(x_long)), cmap='viridis')
axs[1].set(xlabel='x', ylabel='y', title='Color = time')
Machine Learning pentru Date de Tip Șir de Timp în Python

Vizualizarea a două serii de timp

Machine Learning pentru Date de Tip Șir de Timp în Python

Modele de regresie cu scikit-learn

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y)
model.predict(X)
Machine Learning pentru Date de Tip Șir de Timp în Python

Vizualizarea predicțiilor cu scikit-learn

alphas = [.1, 1e2, 1e3]
ax.plot(y_test, color='k', alpha=.3, lw=3)
for ii, alpha in enumerate(alphas):
    y_predicted = Ridge(alpha=alpha).fit(X_train, y_train).predict(X_test)
    ax.plot(y_predicted, c=cmap(ii / len(alphas)))
ax.legend(['True values', 'Model 1', 'Model 2', 'Model 3'])
ax.set(xlabel="Time")
Machine Learning pentru Date de Tip Șir de Timp în Python

Vizualizarea predicțiilor cu scikit-learn

Machine Learning pentru Date de Tip Șir de Timp în Python

Evaluarea modelelor de regresie

  • Cele mai comune metode:
    • Corelația ($r$)
    • Coeficientul de determinare ($R^2$)
Machine Learning pentru Date de Tip Șir de Timp în Python

Coeficientul de determinare ($R^2$)

  • $R^2$ este mărginit superior de 1 și poate fi oricât de mic
  • Valorile mai apropiate de 1 indică un model mai bun

$$ 1 - \frac{error(model)}{variance(testdata)} $$

Machine Learning pentru Date de Tip Șir de Timp în Python

$R^2$ în scikit-learn

from sklearn.metrics import r2_score
print(r2_score(y_predicted, y_test))
0.08
Machine Learning pentru Date de Tip Șir de Timp în Python

Să exersăm!

Machine Learning pentru Date de Tip Șir de Timp în Python

Preparing Video For Download...