【时间序列】NeuralProphet:Prophet的Pytorch实现!精度更高 预测更快 特性更多!
机器学习初学者
共 1856字,需浏览 4分钟
·
2022-01-10 02:37
NeuralProphet
是受Prophet
和AR-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,加入微信群请扫码:
评论