【时间序列】NeuralProphet:Prophet的Pytorch实现!精度更高 预测更快 特性更多!

机器学习初学者

共 1856字,需浏览 4分钟

 ·

2022-01-10 02:37

NeuralProphet是受ProphetAR-Net的启发,并建立在Pytorch上的强大继续模型。

官网:https://neuralprophet.com/

NeuralProphet功能

Prophet相比,NeuralProphet具备的功能有:

  • 通过使用PyTorch的深度学习完成优化
  • 使用AR-Net对时间序列的自相关建模
  • 使用前馈神经网络对滞后建模
  • 可自定义损失和指标

同时也具备用户友好Python接口:

from neuralprophet import NeuralProphet
import pandas as pd

df = pd.read_csv('toiletpaper_daily_sales.csv')
m = NeuralProphet()
metrics = m.fit(df, freq="D")
forecast = m.predict(df)

特征1:自回归模型

n_lags为NeuralProphet的参数,向AR-Net提供5个滞后并接收 3 个步骤作为预测:

m = NeuralProphet(
    n_forecasts=3,
    n_lags=5,
    yearly_seasonality=False,
    weekly_seasonality=False,
    daily_seasonality=False,
)

https://neuralprophet.com/html/auto-regression.html

特性2:滞后回归模型

滞后回归器仅AR-Net可用,并且需要指定n_lags值,调用add_lagged_regressor函数注册这些滞后回归量:

m = m.add_lagged_regressor(names='A')

https://neuralprophet.com/html/lagged-regressors.html

特性3:添加特殊事件

在预测问题中需要考虑重复发生的特殊事件,可以以加法格式和乘法格式添加:

m = NeuralProphet(
        n_forecasts=10,
        yearly_seasonality=False,
        weekly_seasonality=False,
        daily_seasonality=False,
    )
m = m.add_events(["superbowl""playoff"])

https://neuralprophet.com/html/events.html

特性4:对未来进行回归

未来回归量是具有已知未来值的外部变量,我们还需要提供回归量的未来值:

df['A'] = df['y'].rolling(7, min_periods=1).mean()
df['B'] = df['y'].rolling(30, min_periods=1).mean()

m = NeuralProphet(
        n_forecasts=10,
        yearly_seasonality=False,
        weekly_seasonality=False,
        daily_seasonality=False,
    )

m = m.add_future_regressor(name='A')
m = m.add_future_regressor(name='B')

https://neuralprophet.com/html/future-regressors.html

与Prophet实验对比

训练时间

训练时间是Prophet的四倍,但预测非常快,上线部署如果有GPU更快!

模型选择

数据量比较小、以及长序列预测比较适合用Prophet,其他情况都可以无脑选择NeuralProphet

具体精度



往期精彩回顾




站qq群955171419,加入微信群请扫码:
浏览 216
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报