Prophet学习(二) 时序预测开源工具包Prophet介绍

article/2025/9/20 3:37:54

目录

一、Prophet 简介

二、Prophet 适用场景

三、Prophet 算法的输入输出

四、Prophet 算法原理

五、与机器学习算法的对比

六、代码

6.1 依赖安装

6.2 预测demo

七、参考资料

八、官方链接:

九、案例链接:


一、Prophet 简介

Prophet是Facebook开源的时间序列预测算法,可以有效处理节假日信息,并按周、月、年对时间序列数据的变化趋势进行拟合。根据官网介绍,Prophet对具有强烈周期性特征的历史数据拟合效果很好,不仅可以处理时间序列存在一些异常值的情况,也可以处理部分缺失值的情形。算法提供了基于Python和R的两种实现方式。

从论文上的描述来看,这个 prophet 算法是基于时间序列分解和机器学习的拟合来做的,其中在拟合模型的时候使用了 pyStan 这个开源工具,因此能够在较快的时间内得到需要预测的结果。

二、Prophet 适用场景

Prophet适用于具有明显的内在规律的商业行为数据,例如:有如下特征的业务问题:

•有至少几个月(最好是一年)的每小时、每天或每周观察的历史数据;•有多种人类规模级别较强的季节性趋势:每周的一些天和每年的一些时间;•有事先知道的以不定期的间隔发生的重要节假日(比如国庆节);•缺失的历史数据较大的异常数据的数量合理范围内;•有历史趋势的变化(比如因为产品发布);•对于数据中蕴含的非线性增长的趋势都有一个自然极限或饱和状态

三、Prophet 算法的输入输出

image.png


上图为一个时间序列场景:

黑色表示原始的时间序列离散点

深蓝色的线表示使用时间序列来拟合所得到的取值

浅蓝色的线表示时间序列的一个置信区间,也就是所谓的合理的上界和下界

•prophet 所做的事情就是:

•输入已知的时间序列的时间戳和相应的值;

•输入需要预测的时间序列的长度;

•输出未来的时间序列走势。

•输出结果可以提供必要的统计指标,包括拟合曲线,上界和下界等。

传入prophet的数据分为两列 ds 和 y ,ds表示时间序列的时间戳y表示时间序列的取值
其中:

dspandas的日期格式,样式类似YYYY-MM-DD for a date or YYYY-MM-DD HH:MM:SS

y列必须是数值型,代表着我们希望预测的值。

通过 prophet 的计算,可以计算出:

•yhat,表示时间序列的预测值

•yhat_lower,表示预测值的下界

•yhat_upper,表示预测值的上界

四、Prophet 算法原理

算法模型:

模型整体由三部分组成:

growth(增长趋势)seasonality(季节趋势)holidays(节假日对预测值的影响)

其中:

•g(t) 表示趋势项,它表示时间序列在非周期上面的变化趋势;

•s(t) 表示周期项,或者称为季节项,一般来说是以周或者年为单位;

•h(t) 表示节假日项,表示时间序列中那些潜在的具有非固定周期的节假日对预测值造成的影响;

•  

即误差项或者称为剩余项,表示模型未预测到的波动,服从高斯分布;

Prophet 算法就是通过拟合这几项,然后最后把它们累加起来就得到了时间序列的预测值。

五、与机器学习算法的对比

与先进的机器学习算法如LGBM相比,Prophet作为一个时间序列的工具。
优点就是不需要特征工程就可以得到趋势,季节因素和节假日因素。
但是这同时也是它的缺点之一,它无法利用更多的信息,如在预测商品的销量时,无法利用商品的信息,门店的信息,促销的信息等。

因此,寻找一种融合的方法是一个迫切的需求。

六、代码

测试数据集及代码获取地址:

https://github.com/SeafyLiang/machine_learning_study/blob/master/实践项目/prophet_time_forecast.py

6.1 依赖安装

# 安装pystan
conda install pystan# 安装plotly
conda install plotly -y# 安装prophet
sudo pip install fbprophet

6.2 预测demo

import pandas as pd
from fbprophet import Prophet
import matplotlib.pyplot as plt# 读入数据集
df = pd.read_csv('data/example_wp_log_peyton_manning.csv')
print(df.head())
# 拟合模型
m = Prophet()
m.fit(df)# 构建待预测日期数据框,periods = 365 代表除历史数据的日期外再往后推 365 天
future = m.make_future_dataframe(periods=365)
future.tail()
# 预测数据集
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
# 展示预测结果
m.plot(forecast)
# 预测的成分分析绘图,展示预测中的趋势、周效应和年度效应
m.plot_components(forecast)
plt.show()

                                                                 image.png

                                                     image.png

七、参考资料

•时间序列模型Prophet使用详细讲解[1]

•Prophet官网[2]

•github项目[3]

•论文:Forecasting at scale[4]

•Facebook 时间序列预测算法 Prophet 的研究[5]

八、官方链接:

•论文:《Forecasting at scale》,https://peerj.com/preprints/3190/[6]

•github:https://github.com/facebook/prophet[7]

•官网:https://facebook.github.io/prophet/[8]

九、案例链接:

•预测股价并进行多策略交易:https://mp.weixin.qq.com/s/bf_CHcoZMjqP6Is4ebD58g[9]

•预测Medium每天发表的文章数:https://mp.weixin.qq.com/s/1wujYYDP_P2uerZzZBaspg[10]

•预测网站流量:https://pbpython.com/prophet-overview.html[11]

•预测空气质量:https://mp.weixin.qq.com/s/S-NNG7BmviitBmMBJRJSRQ[12]

•预测客运量:https://www.analyticsvidhya.com/blog/2018/05/generate-accurate-forecasts-facebook-prophet-python-r/[13]

•疫情预测分析:https://mp.weixin.qq.com/s/fZpsy1bQ3Olhng1P5p5WAg[14]

•原理讲解:https://mp.weixin.qq.com/s/675ASxDSVH_8BX6W8WRRqg[15]

•知乎专栏:https://zhuanlan.zhihu.com/p/52330017[16]

•股票价格预测:https://mp.weixin.qq.com/s/78xpmsbC2N1oZ3UIMm29hg[17]

参考资料:时序预测开源工具包Prophet


http://chatgpt.dhexx.cn/article/CcigfY4o.shtml

相关文章

【数据分析】利用机器学习算法进行预测分析(五):Prophet

时间序列预测中的机器学习方法(五):Prophet 本文是“时间序列预测中的机器学习方法”系列文章的第五篇,如果您有兴趣,可以先阅读前面的文章: 【数据分析】利用机器学习算法进行预测分析(一&…

关于导入Prophet库

在做项目时在参考别人的代码时,其from fbgrophet import Proghet给我造成了很大的困扰。我先是用conda装了能在里面找到的prophet,可以看到我在里面安装了prophet(p是小写的): 但这个并不能用import prophet来替代他的那句from fbgrophet im…

Prophet学习(一) Python API实现

目录 Python API 详细介绍 完整代码: Python API 详细介绍 Prophet遵循sklearn模型API。我们创建Prophet类的实例,然后调用它的fit和predict方法。 Prophet的输入总是一个有两列的数据帧:ds和y。ds(日期戳)列应该是Pandas期望的格式,理想…

Prophet时间序列

Prophet参数介绍 growth:趋势函数-默认是线性趋势(linear),还可以选非线性(logistic). changepoints:突变点-默认是none,可以手动选择,如6-18节日有活动,就可以指点突变点在6-18。 n_changepoints:突变点个数-若未指定&#xff0c…

Windows下安装Python版本的prophet

prophet是Facebook开源的一款时序预测的工具。地址。 在Mac和linux下比较好安装,在Windows下安装就比较坑了。所以,记录以下自己安装成功的过程。 我的环境是win10 64位,python 3.6.1 第一步:安装PyStan fbprophet依赖于PyStan…

【关于时间序列的ML】项目 8 :使用 Facebook Prophet 模型预测股票价格

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

Prophet调参

本篇主要讲解实际运用中Prophet调参的主要步骤以及一些本人实际经验。 一 参数理解篇 class Prophet(object):def __init__(self,growthlinear,changepointsNone,n_changepoints25,changepoint_range0.8,yearly_seasonalityauto,weekly_seasonalityauto,daily_seasonalityaut…

Python实现Prophet时间序列数据建模与异常值检测(Prophet算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 Prophet由facebook开源的基于python和R语言的数据预测工具,基于时间和变量值结合时间序列分…

结合 Prophet 的原理理解 Prophet 的使用

结合 Prophet 的原理理解 Prophet 的使用 前言 本文也是时序领域工作学习过程中的一些学习笔记,将会结合 Prophet 的原理,讲一讲如何成为一个合格的 Prophet 调包侠 使用者。如果有任何理解不到位的地方,请多多指正。 Why Prophet? Prop…

大白话Prophet模型以及简单的应用(一)

Prophet 是基于加法模型预测时间序列数据。适合于具有季节性影响的时间序列和具有多个季节的历史数据。Prophet对数据中的异常值和缺失值以及趋势的强烈变化有着较好的鲁棒性(耐操性),所以通常情况下都不需要对数据进行处理。 优点&#xff1…

Prophet算法

Prophet简介 Prophet是FaceBook公司在2017年开源的一款时间序列建模工具。Prophet的方法是将时间序列看成是关于t的一个函数,用你和函数曲线的方法进行预测,所以这和传统的时间序列模型有本质上的区别,他更倾向于机器学习的建模方式。 Prop…

时间序列模型Prophet使用详细讲解

之前我们已经讲过了如何在Windows系统下安装Python版本的Prophet。详细见这里。 接下来的几个部分,我们说下如何使用Prophet,以此来体验下Prophet的丰富内容。内容会比较多,主要翻译自官方文档。教程中使用的数据集可在 Prophet 的 github 主…

Prophet拟合模型入门学习

先展示效果: Facebook 时间序列预测算法 Prophet 的研究 Prophet 简介 Facebook 去年开源了一个时间序列预测的算法,叫做 fbprophet,它的官方网址与基本介绍来自于以下几个网站: Github:https://github.com/facebo…

时间序列预测——Prophet模型

文章链接: 时间序列预测——ARIMA模型https://blog.csdn.net/beiye_/article/details/123317316?spm1001.2014.3001.5502 1、Propht模型概述 Prophet模型是Facebook于2017年发布开源的时间序列预测框架。Prophet适用于各种具有潜在特殊特征的预测问题包括广泛的业…

Prophet 时间序列预测框架入门实践笔记

1. Prophet时间序列预测框架概述 Prophet是Facebook开源的一种时间序列预测框架,旨在使时间序列分析更加容易和快速。Prophet可以处理具有多个季节性和突发事件的时间序列数据,并且在数据缺失或异常情况下仍然能够进行良好的预测。Prophet采用了一种基于…

Prophet的原理知识

目录 1、Prophet 简介 2、Prophet 适用场景 3、Prophet 算法的输入输出 4、Prophet 算法原理 5、Prophet 使用时可设置的参数 6、Prophet 学习资料参考 7、Prophet 模型应用 7.0 背景描述7.1 导入数据7.2 拟合模型7.3 预测(使用默认参数)7.4 趋势…

Prophet:一种大规模时间序列预测模型

前言 Prophet是由facebook开发的开源时间序列预测程序,擅长处理具有季节性特征大规模商业时间序列数据。本文主要介绍了Prophet模型的设计原理,并与经典的时间序列模型ARIMA进行了对比。 1. Prophet模型原理 Prophet模型把一个时间序列看做由3种主要成分…

Prophet模型的简介以及案例分析

目录 前言一、Prophet安装以及简介二、适用场景三、算法的输入输出四、算法原理五、使用时可以设置的参数六、学习资料参考七、模型应用7-1、股票收盘价格预测7-1-1、导入相关库7-1-2、读取数据7-1-3、数据预处理以及进行训练集和测试集的划分。7-1-4、实例化Prophet对象&#…

时序预测工具库(Prophet)介绍+代码

时序预测工具库(Prophet) 一、Prophet 简介二、Prophet 适用场景三、Prophet 算法的输入输出四、Prophet 算法原理五、与机器学习算法的对比六、代码6.1 依赖安装6.2 预测demo6.3 效果图 七、参考资料八、官方链接:九、案例链接: …

图的顺序存储及其深度优先遍历和广度优先遍历

图的基本概念 在线性表中,数据元素之间是被串起来的,仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继。在树形结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素相关&am…