超越 Facebook 的 Prophet,NeuralProphet 这个时序工具包也太强了!

原文:NeuralProphet 作者:Eryk Lewinson

欢迎关注 ,专注 Python、数据分析、数据挖掘、好玩工具!

我相信几乎绝大多数做时间序列的朋友都了解 Facebook 的 Prophet 模型,因为其在准确性、可解释性等方面有着良好的性能,而且可以为用户自动化许多元素(如超参数选择或特征工程),因而它获得了广泛的应用。

关注过我的朋友应该知道,之前我分享过这样一篇文章:

出乎意料的是收到了300多个赞,能够感受到朋友们对时间序列新工具的喜爱。

在本文,我将介绍一款最新时序工具:NeuralProphet ,从名字就可以看出,这个是神经网络和Prophet 的结合。

与传统的黑盒NN不同,NeuralProphet 模型集成了 Prophet 的所有优点,不仅具有不错的可解释性,还有优于 Prophet 的预测性能。喜欢的小伙伴,赶快收藏学习、喜欢点赞支持。

1、Prophet

Prophet 如果认为是基本自回归的扩展(除了使用lagged的目标值,还对输入变量使用傅立叶变换,这使得我们可以通过调模型拿到更好的结果)。

  • Prophet可以使用额外的信息,不仅仅是target的延迟值;

  • 模型能融入节假日信息;

  • 可以自动检测趋势的变化;

2、NeuralProphet

和许多黑盒子的NN不同,NeuralProphet 保留了 Prophet 的所有优势,同时,通过引入改进的后端(Pytorch代替Stan)和使用自回归网络(AR网络),将神经网络的可扩展性与AR模型的可解释性结合起来,提高其准确性和可扩展性。

  • AR网络——它是一个单层网络,经过训练可以模拟时间序列信号中的AR过程,但规模比传统模型大得多。

3、NeuralProphet VS Prophet

  • NeuralProphet使用PyTorch的梯度下降进行优化,使得建模速度更快;

  • 利用自回归网络对时间序列自相关进行建模;

  • 滞后回归器使用单独的前馈神经网络建模;

  • NeuralProphet具有可配置的前馈神经网络的非线性深层;

  • 模型可调整到特定的预测范围(大于1);

  • 提供自定义的损失函数和度量策略;

实操代码

1.数据读取

# !pip install neuralprophet
import pandas as pd
from fbprophet import Prophet
from neuralprophet import NeuralProphet
from sklearn.metrics import mean_squared_error

# plotting
import matplotlib.pyplot as plt

# settings
plt.style.use('seaborn')
plt.rcParams["figure.figsize"] = (16, 8)
df = pd.read_csv('./data/wp_log_peyton_manning.csv')
print(f'The dataset contains {len(df)} observations.')
df.head()

The dataset contains 2905 observations.

df.plot(x='ds', y='y', title='Log daily page views');

2.Prophet 预测

test_length = 365
df_train = df.iloc[:-test_length]
df_test = df.iloc[-test_length:]

prophet_model = Prophet()
prophet_model.fit(df_train)
future_df = prophet_model.make_future_dataframe(periods=test_length)
preds_df_1 = prophet_model.predict(future_df)
prophet_model.plot_components(preds_df_1);

prophet_model.plot(preds_df_1);

3. NeuralProphet

nprophet_model = NeuralProphet()
metrics = nprophet_model.fit(df_train, freq="D")
future_df = nprophet_model.make_future_dataframe(df_train,                                                  periods = test_length,                                                  n_historic_predictions=len(df_train))preds_df_2 = nprophet_model.predict(future_df)
nprophet_model.plot(preds_df_2);

4.效果比较

  • NeuralProphet 的效果比 Prophet 好了很多。
# prepping the DataFrame
df_test['prophet'] = preds_df_1.iloc[-test_length:].loc[:, 'yhat']
df_test['neural_prophet'] = preds_df_2.iloc[-test_length:].loc[:, 'yhat1']
df_test.set_index('ds', inplace=True)

print('MSE comparison ----')
print(f"Prophet:\t{mean_squared_error(df_test['y'], preds_df_1.iloc[-test_length:]['yhat']):.4f}")
print(f"NeuralProphet:\t{mean_squared_error(df_test['y'], preds_df_2.iloc[-test_length:]['yhat1']):.4f}")

df_test.plot(title='Forecast evaluation');

小结

NeuralProphet 在时间序列预测的效果上面一般会比 Prophet 好很多,在遇到时间序列问题的时候强烈建议大家尝试一下。更多详情参考Github链接:

https://github.com/ourownstory/neural_prophet

文章推荐

Schedule:一个简单实用的 Python 周期任务调度工具!

受教了!让 Python 代码简洁的7个实用技巧!

25000字玩转 Pandas, 这一篇太给力了!

Sidetable:一种高效的 Python 数据框处理工具!

只需几行 Python 代码,dabl 即可实现数据处理、分析和 ML 自动化!

Rich:Python开发者的完美终端工具!

再次出发!FaceBook 开源"一站式服务"时序利器 Kats !

Pandas pipe: 一种更优雅的数据预处理方法!

有了这个可视化插件, Python 编程更轻松!

超硬核!分享9个功能强大却鲜为人知的 Python 工具包!

超级干货!史上最全数据分析学习路线(附资源下载)


技术交流

欢迎转载、收藏、有所收获点赞支持一下!

在这里插入图片描述
目前开通了技术交流群,群友超过2000人,添加方式如下:

如下方式均可,添加时最好方式为:来源+兴趣方向,方便找到志同道合的朋友

  • 方式一、发送如下图片至微信,进行长按识别,回复加群;
  • 方式二、直接添加小助手微信号:pythoner666,备注:来自CSDN
  • 方式三、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NeuralProphet是一种基于神经网络的时间序列预测库。它建立在Prophet模型的基础上,通过引入神经网络的灵活性和复杂性,提供了更加准确和灵活的预测能力。 NeuralProphet采用的模型结构是一个具有多个隐藏层的多层感知机(MLP)神经网络。通过在时间序列预测任务中引入神经网络的非线性映射特性,NeuralProphet可以更好地捕捉数据的复杂关系和非线性趋势。 与传统的时间序列预测方法相比,NeuralProphet具有一些独特的特点和优势。首先,NeuralProphet具备了自动特征提取和变量选择的能力,可以自动识别和提取时间序列中的重要特征,避免了人工特征工程的繁琐过程。其次,NeuralProphet具有较强的灵活性,可以处理具有缺失值和异常值的时间序列数据,并且可以通过调整网络结构和超参数来优化预测性能。此外,NeuralProphet还提供了一些可视化和分析工具,方便用户对预测结果进行验证和解释。 NeuralProphet在实际应用中具有广泛的适用性。它可以用于预测各种类型的时间序列数据,包括股票价格、销售数据、气象变量等。无论是进行短期预测还是长期趋势分析,NeuralProphet都能够提供高质量的预测结果。 总之,NeuralProphet是一种强大的神经网络时间序列预测库,具有自动特征提取和变量选择能力,具备较强的灵活性和适用性。它为用户提供了更加准确和灵活的时间序列预测工具,帮助用户做出更好的决策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值