Dự đoán dữ liệu theo thời gian

Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Phân loại vs. Hồi quy

Phân loại
classification_model.predict(X_test)
array([0, 1, 1, 0])
Hồi quy
regression_model.predict(X_test)
array([0.2, 1.4, 3.6, 0.6])
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Tương quan và hồi quy

  • Hồi quy giống tính tương quan, nhưng có khác biệt quan trọng
    • Hồi quy: Quy trình tạo ra một mô hình chính thức của dữ liệu
    • Tương quan: Thống kê mô tả dữ liệu. Ít thông tin hơn mô hình hồi quy.
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Tương quan giữa biến thường thay đổi theo thời gian

  • Chuỗi thời gian thường có mẫu hình thay đổi theo thời gian
  • Hai chuỗi thời gian có vẻ tương quan tại một thời điểm có thể không duy trì theo thời gian
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Trực quan hóa quan hệ giữa các chuỗi thời gian

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 cho Dữ liệu Chuỗi thời gian bằng Python

Trực quan hóa hai chuỗi thời gian

Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Mô hình hồi quy với scikit-learn

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y)
model.predict(X)
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Trực quan hóa dự đoán với 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(['Giá trị thật', 'Mô hình 1', 'Mô hình 2', 'Mô hình 3'])
ax.set(xlabel="Time")
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Trực quan hóa dự đoán với scikit-learn

Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Chấm điểm mô hình hồi quy

  • Hai thước đo phổ biến nhất:
    • Tương quan ($r$)
    • Hệ số xác định ($R^2$)
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Hệ số xác định ($R^2$)

  • Giá trị $R^2$ bị chặn trên bởi 1 và có thể thấp vô hạn
  • Giá trị càng gần 1 thì mô hình dự đoán đầu ra càng tốt

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

Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

$R^2$ trong scikit-learn

from sklearn.metrics import r2_score
print(r2_score(y_predicted, y_test))
0.08
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Cùng luyện tập nào!

Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Preparing Video For Download...