prophet是facebook在2017年开源的强大的时间序列预测工具。
prophet(读作 ˈprɒfɪt)这个英文单词的意思是先知,预言家(没错,就是天黑请睁眼的那位😋)。顾名思义,它能够预测未来。

Prophet是一个设计精妙的单层的回归模型,特别适合对具有明显季节周期性(如气温,商品销量,交通流量等)的时间序列进行预测,并具有强大的解释性。
我们将简要介绍Prophet框架的算法原理,并以一个开源的能源消耗时间序列数据预测为例,展示prophet的使用方法和强大能力。
公众号算法美食屋后台回复关键词:prophet,获取本教程notebook代码和数据集下载链接~
预测效果展示:

〇,Prophet原理概述
1,prophet的优点:
1, 拟合能力强。可以拟合时间序列数据中的趋势特性,周期特性,以及节假日时间/特殊事件影响等,可以返回置信区间作为预测结果。
2,对噪声鲁棒。趋势项中引入了changepoints,模型的参数量远远小于lstm等深度方案,不容易过拟合,收敛迅速。
3,模型解释性好。提供了强大的可视化分析辅助工具,便于分析趋势,不同周期,不同节假日/特殊事件 各自的贡献。
2,prophet的缺点:
1,不适用协变多维序列。prophet仅仅能够对单个时间序列建模(例如某地气温),不能够对协变的多个序列同时建模(例如沪深300支股票走势)。
2,无法进行自动化复杂特征抽取。受prophet模型相对简单的假设空间的限制,它无法对输入特征进行交叉组合变换等自动化抽取操作。
3,prophet的原理:
prophet是一个加法模型,将时间序列分解成 趋势项,周期项,节假日项/特殊事件影响,以及残差项的组合。
【注:根据需要,也可以将 周期项 和 节假日项/特殊事件影响 设置为乘数,而非加数】
1,其中趋势项被拟合成 分段线性函数(默认) 或者 分段logistic函数(存在上下限的情形,如虫口模型,病毒传播等存在容量上限)。
2,周期项使用有限阶(通常对一个是3到8阶)的傅里叶级数进行拟合,大大减少了参数量,避免对噪声数据过拟合。
3,节假日项/特殊事件项 可以作为点特征或者区间特征引入,并支持自定义不同类型的节假日或事件,还可通过add_regressor引入其它已知序列作为特征,非常灵活。
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight') # For plots
一,准备数据
我们使用的数据集是美国能源消耗数据集。该数据集包含了美国一家能源公司的长达数十年的能源消耗数据,数据分辨率为小时。
1,读取数据
dfdata = pd.read_csv('PJME_hourly.csv',
index_col=[0], parse_dates=[0])
dfdata.columns = ['y'] #将预测目标列名称改为y
dfdata.index.name = 'ds' #将时间序列名称改为ds
# Color pallete for plotting
color_pal = ["#F8766D", "#D39200", "#93AA00",
"#00BA38", "#00C19F", "#00B9E3",
"#619CFF", "#DB72FB"]
dfdata.plot(style='.', figsize=(15,5), color=color_pal[1], title='PJM East')
plt.show()

本文介绍了Facebook开源的Prophet时间序列预测工具,强调其在处理具有季节性和特殊事件影响的数据上的优势,包括模型的结构、优点和局限性,以及如何使用和评估。通过美国能源消耗数据实例展示了Prophet的使用方法和预测性能。
最低0.47元/天 解锁文章
886

被折叠的 条评论
为什么被折叠?



