Tôi đang nghiên cứu vấn đề dự báo đa biến (hơn 100 biến) nhiều bước (t1 đến t30) trong đó tần suất chuỗi thời gian là 1 phút một lần. Bài toán yêu cầu dự báo một trong hơn 100 biến làm mục tiêu. Tôi muốn biết liệu có thể làm điều đó bằng cách sử dụng API Python của FB Prophet hay không. Tôi đã có thể làm điều đó theo kiểu đơn biến chỉ bằng cách sử dụng biến mục tiêu và biến ngày giờ. Bất kỳ sự giúp đỡ và hướng dẫn được đánh giá cao. Vui lòng cho tôi biết nếu cần thêm bất kỳ đầu vào hoặc sự rõ ràng nào về câu hỏi.

Bạn có thể thêm các biến bổ sung trong Prophet bằng phương thức add_regressor .
Ví dụ, nếu chúng ta muốn dự đoán biến y
bằng cách sử dụng các giá trị của các biến bổ sung add1
và add2
.
Đầu tiên, hãy tạo một df mẫu:
import pandas as pd
df = pd.DataFrame(pd.date_range(start="2019-09-01", end="2019-09-30", freq='D', name='ds'))
df["y"] = range(1,31)
df["add1"] = range(101,131)
df["add2"] = range(201,231)
df.head()
ds y add1 add2
0 2019-09-01 1 101 201
1 2019-09-02 2 102 202
2 2019-09-03 3 103 203
3 2019-09-04 4 104 204
4 2019-09-05 5 105 205
và chia nhỏ chuyến tàu và thử nghiệm:
df_train = df.loc[df["ds"]<"2019-09-21"]
df_test = df.loc[df["ds"]>="2019-09-21"]
Trước khi đào tạo người dự báo, chúng ta có thể thêm các bộ hồi quy sử dụng các biến bổ sung. Ở đây đối số của add_regressor
là tên cột của biến bổ sung trong huấn luyện df.
from fbprophet import Prophet
m = Prophet()
m.add_regressor('add1')
m.add_regressor('add2')
m.fit(df_train)
Sau đó, phương pháp dự đoán sẽ sử dụng các biến bổ sung để dự báo:
forecast = m.predict(df_test.drop(columns="y"))
Lưu ý rằng các biến bổ sung phải có giá trị cho dữ liệu (thử nghiệm) trong tương lai của bạn . Nếu bạn không có chúng, bạn có thể bắt đầu bằng cách dự đoán add1
và add2
với các khoảng thời gian đơn biến, sau đó dự đoán y
với add_regressor
và các giá trị được dự đoán add1
và add2
trong tương lai của các biến bổ sung.
Từ tài liệu, tôi hiểu rằng dự báo y
cho t + 1 sẽ chỉ sử dụng các giá trị của add1
và add2
tại t + 1, chứ không phải các giá trị của chúng tại t, t-1, ..., tn như với y
. Nếu điều đó quan trọng đối với bạn, bạn có thể tạo các biến bổ sung mới với độ trễ.
Xem thêm sổ tay này , với một ví dụ về việc sử dụng các yếu tố thời tiết làm bộ hồi quy bổ sung trong dự báo về việc sử dụng xe đạp.

Tôi đang bối rối, có vẻ như không có thỏa thuận nếu Prophet hoạt động theo cách đa biến, hãy xem các vấn đề github tại đây và tại đây . Đánh giá bằng một số nhận xét, câu trả lời của queise và một hướng dẫn tuyệt vời trên youtube, bạn có thể bằng cách nào đó tạo ra một chức năng đa biến, xem video tại đây: https://www.youtube.com/watch?v=XZhPO043lqU

Để thực hiện dự báo cho nhiều biến phụ thuộc, bạn cần triển khai chuỗi thời gian đó bằng cách sử dụng hồi quy tự động vectơ.
Trong mô hình VAR, mỗi biến là một hàm tuyến tính của các giá trị trong quá khứ của chính nó và các giá trị trong quá khứ của tất cả các biến khác.
để biết thêm thông tin về VAR, hãy truy cập https://www.analyticsvidhya.com/blog/2018/09/multivariate-time-series-guide-forecasting-modeling-python-codes/

Điều này có thể là muộn, tuy nhiên nếu bạn đang đọc nó vào năm 2019, bạn có thể triển khai chuỗi thời gian đa biến bằng cách sử dụng LSTM, Keras.

Bạn có thể làm điều này với một dòng bằng cách sử dụng gói thời gian bao bọc nhà tiên tri ở dạng chức năng. Hãy xem tiên tri trượt ván là chính xác. Đây là một ví dụ về việc sử dụng:
from timemachines.skatertools.data import hospital_with_exog
from timemachines.skatertools.visualization.priorplot import prior_plot
import matplotlib.pyplot as plt
k = 11
y, a = hospital_with_exog(k=k, n=450, offset=True)
f = fbprophet_exogenous
err2 = prior_plot(f=f, k=k, y=y, n=450, n_plot=50)
print(err2)
plt.show()
Lưu ý rằng bạn có thể đặt k là bất cứ điều gì bạn muốn. Đó là số bước phía trước để sử dụng. Bây giờ hãy cẩn thận, bởi vì khi nhà tiên tri nói đa biến, họ thực sự đang đề cập đến các biến đã biết trước (một đối số). Nó không thực sự đề cập đến dự đoán đa biến. Nhưng bạn có thể sử dụng facebook skater có tên _recursive để sử dụng tiên tri để dự đoán các biến ngoại sinh trước khi nó dự đoán biến mà bạn thực sự quan tâm.
Sau khi nói tất cả những điều đó, tôi thực sự khuyên bạn nên đọc bài phê bình về nhà tiên tri này và cũng kiểm tra vị trí của nó trên xếp hạng Elo trước khi sử dụng nó trong cơn giận dữ.

Có thể bạn quan tâm
