Đặc trưng trễ theo thời gian và mô hình tự hồi quy

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

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

Quá khứ hữu ích

  • Dữ liệu chuỗi thời gian gần như luôn có thông tin được "chia sẻ giữa các thời điểm"
  • Thông tin trong quá khứ giúp dự đoán tương lai
  • Thường đặc trưng dự đoán tốt nhất cho một chuỗi thời gian là các giá trị trước đó của chính chuỗi đó.
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Ghi chú về độ mượt và tự tương quan

  • Câu hỏi thường gặp với chuỗi thời gian: dữ liệu mượt đến mức nào.
  • Tức là, một thời điểm tương quan thế nào với các thời điểm lân cận (gọi là tự tương quan).
  • Mức độ tự tương quan sẽ ảnh hưởng đến mô hình của bạn.
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Tạo đặc trưng trễ theo thời gian

  • Hãy xem cách xây dựng mô hình dùng các giá trị quá khứ làm đầu vào.
  • Dùng cách này để đánh giá mức tự tương quan của tín hiệu (và nhiều thứ khác nữa)
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Dịch dữ liệu theo thời gian với Pandas

print(df)
         df 
    0   0.0
    1   1.0 
    2   2.0 
    3   3.0 
    4   4.0 
# Dịch một DataFrame/Series lùi 3 chỉ số về quá khứ
print(df.shift(3))
         df
    0   NaN
    1   NaN
    2   NaN
    3   0.0
    4   1.0
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Tạo DataFrame dịch theo thời gian

# data là một pandas Series chứa dữ liệu chuỗi thời gian
data = pd.Series(...)

# Các độ trễ
shifts = [0, 1, 2, 3, 4, 5, 6, 7]

# Tạo một dict dữ liệu dịch theo thời gian
many_shifts = {'lag_{}'.format(ii): data.shift(ii) for ii in shifts}

# Chuyển thành dataframe
many_shifts = pd.DataFrame(many_shifts)
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Fit mô hình với đặc trưng dịch theo thời gian

# Fit mô hình với các đặc trưng đầu vào này 
model = Ridge() 
model.fit(many_shifts, data)
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Diễn giải hệ số của mô hình tự hồi quy

# Trực quan hóa các hệ số của mô hình đã fit
fig, ax = plt.subplots()
ax.bar(many_shifts.columns, model.coef_)
ax.set(xlabel='Tên hệ số', ylabel='Giá trị hệ số')

# Định dạng cho dễ nhìn
plt.setp(ax.get_xticklabels(), rotation=45, horizontalalignment='right')
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python

Trực quan hóa hệ số cho tín hiệu gồ ghề

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

Trực quan hóa hệ số cho tín hiệu mượt

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...