Helpex - Trao đổi & giúp đỡ Đăng nhập
24

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.

24 hữu ích 0 bình luận 20k xem chia sẻ
36

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 ybằng cách sử dụng các giá trị của các biến bổ sung add1add2.

Đầ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_regressorlà 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 add1add2với các khoảng thời gian đơn biến, sau đó dự đoán yvới add_regressorvà các giá trị được dự đoán add1add2trong 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 ycho t + 1 sẽ chỉ sử dụng các giá trị của add1add2tạ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.

36 hữu ích 1 bình luận chia sẻ
2

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 đâytạ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

2 hữu ích 0 bình luận chia sẻ
1

Để 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/

1 hữu ích 0 bình luận chia sẻ
1

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

1 hữu ích 0 bình luận chia sẻ
0

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

0 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ python machine-learning time-series forecasting facebook-prophet , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading