facebook时间序列预测算法prophet解读+实战

facebook时间序列预测算法prophet解读+实战

  • 原理解读
    • 一、时间序列的分解
    • 二、趋势项模型
      • 基于逻辑回归的趋势项
        • 定义变点(change point)
      • 基于线性回归的趋势项
      • 变点的选择
    • 三、季节性趋势
    • 四、节假日影响
  • 模型实战

原理解读

prophet与常用的自回归时间序列预测模型一样,本质上都是拟合过去,预测未来。作者雨中不同的视角是:在某些特殊日期,可能受到活动、节假日等影响,时间序列会产生一定的波动,因此作者将节假日序列引入了时间序列分解;同时作者在分解/拟合 趋势项的时候考虑到了趋势随时间的自然变化,引入了变点(change point)的概念,更有利于趋势项的拟合。

一、时间序列的分解

常见的自回归时间序列预测模型都需要进行时间序列分解,这是一种常见的时间序列预处理方式,将一个时间序列分解为多个时间序列目的是为了挖掘出序列自身的一些规律。
时间序列分解主要分为加法形式和乘法形式。

加法形式:
加法形式
乘法形式:
乘法形式
而乘法形式等价于加法形式:
在这里插入图片描述
注:季节项 St ,趋势项Tt,剩余项 Rt
因此facebook的工程师定义了如下时间序列分解:
prophet时间序列分解
注:g(t)趋势项,s(t)周期项,h(t)节假日项,Et表示误差项或者称为剩余项,服从正态分布。

二、趋势项模型

基于逻辑回归的趋势项

在这里插入图片描述
注:C称为曲线的最大渐近值, k表示曲线的增长率, m表示曲线的offset parameter(我理解为,类似于线性回归y=kx+b中的b)
在 Prophet 里面,作者考虑最大渐近值、曲线的增长率、offset parameter都不会随着时间变化一成不变,理应是一个随时间变化的参数,因此将上述三个参数全部换成了随着时间而变化的函数:
在这里插入图片描述

定义变点(change point)

变点:曲线的趋势不会一直不变,在某些特定的时候或者有着某种潜在的周期曲线会发生变化。如图所示,很好理解
在这里插入图片描述
假设S个变点:
在这里插入图片描述
一旦变化量k确定了,另外一个参数 m也随之确定。在这里需要把线段的边界处理好,因此通过数学计算可以得到(论文没有给出推导公式):
在这里插入图片描述
逻辑回归的趋势项最终公式:
在这里插入图片描述

基于线性回归的趋势项

本质上其实是分段线性函数,适用于不表现出饱和增长的预测问题。
在这里插入图片描述
在分段线性函数中变化率的计算通逻辑斯特回归,同时为了使函数连续:
在这里插入图片描述

变点的选择

趋势的变化主要与三个参数有关:1、changepoint_range,2、n_changepoint,3、changepoint_prior_scale

changepoint_range 指的是百分比,需要在前 changepoint_range 那么长的时间序列中设置变点,在默认的函数中是 changepoint_range = 0.8。
n_changepoint 表示变点的个数,在默认的函数中是 n_changepoint = 25,表示前changepoint_range范围内均匀分布25个变点。
changepoint_prior_scale 表示变点增长率的分布情况,这里的 τ 就是 change_point_scale。
在这里插入图片描述
为什么要用laplace分布来拟合change_point_scale? 我个人的理解:laplace分布更多的点靠近x=0,即表示再多多数情况下即使这个点设置为了变点,但是在拟合时依然将其变化率的变化设置为零,防止过拟合。
对未来的预估:
在这里插入图片描述

三、季节性趋势

在数学分析中,区间内的周期性函数是可以通过正弦和余弦的函数来表示的。假设 f(x)是以2*pi为周期的函数,那么它的傅立叶级数就是:
在这里插入图片描述
假设 P 表示时间序列的周期,它的傅立叶级数的形式是:
在这里插入图片描述
作者经验:P=365,N=10;P=7,N=3.
当N=3:
在这里插入图片描述
在这里插入图片描述
这一点很好理解,方差越大,表示可以拟合的有离散点变化可以较复杂(变化多样),因此该级数函数可以拟合更复杂的离散点,因此值越大,可以拟合更复杂的季节效应(值太大,也有可能导致过拟合)。

四、节假日影响

在这里插入图片描述
对与第 i个节假日来说,Di表示该节假日的前后一段时间,即节假日的影响范围。
在这里插入图片描述
表示节假日的影响程度,v=holidays_prior_scale 默认值是 10,当值越大时,表示节假日对模型的影响越大(原理同上)。

模型实战

后续补充

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/44425.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kaggle系列之预测泰坦尼克号人员的幸存与死亡(随机森林模型)

Kaggle是开发商和数据科学家提供举办机器学习竞赛、托管数据库、编写和分享代码的平台,本节是对于初次接触的伙伴们一个快速了解和参与比赛的例子,快速熟悉这个平台。当然提交预测结果需要注册,这个可能需要科学上网了。 我们选择一个预测的入…

【时间序列预测】人口数量预测神经网络程序

下载完整代码 clc;clear; %导入1949年至2010年人口数据 dataimportdata(population_data.txt); lag3; %利用前3年数据做为输入,去预测下一年人口数量 nlength(data); %计算数据长度 %% %准备输入和输出数据 inputszeros(lag,n-lag); for i1:n-lag inpu…

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

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

时间序列预测算法梳理(Arima、Prophet、Nbeats、NbeatsX、Informer)

时间序列预测算法梳理(Arima、Prophet、Nbeats、NbeatsX、Informer) Arima1. 算法原理2. 算法实现 Prophet1. 优点2. 算法实现3.算法api实现(fbprophet调api) Nbeats1. Nbeats优点2. Nbeats模型结构 NbeatsXInformer参考&#xff…

Prophet 时间序列预测

Prophet 允许使用具有指定承载能力的物流增长趋势模型进行预测。 我们必须在列中指定承载能力cap。在这里,我们将假设一个特定的值,但这通常是使用有关市场规模的数据或专业知识来设置的。 # Python df[cap] 8.5需要注意的重要事项是cap必须为数据框中…

时间序列预测方法之 DeepAR

本文链接:个人站 | 简书 | CSDN 版权声明:除特别声明外,本博客文章均采用 BY-NC-SA 许可协议。转载请注明出处。 最近打算分享一些基于深度学习的时间序列预测方法。这是第一篇。 DeepAR 是 Amazon 于 2017 年提出的基于深度学习的时间序列预…

【时间序列】初识时间序列预测神器 NeuralProphet 实战预测股票指数

历经神奇的2022年,终于迎来曙光的2023年,新的一年,MyEncyclopedia 会和小伙伴们一同学习思考实践。长风破浪会有时,直挂云帆济沧海!共勉之 NeuralProphet深度学习Prophet NeuralProphet 负有盛名,是 Facebo…

时序预测 | Python实现TCN时间卷积神经网络时间序列预测

时序预测 | Python实现TCN时间卷积神经网络时间序列预测 目录 时序预测 | Python实现TCN时间卷积神经网络时间序列预测预测效果基本介绍环境准备模型描述程序设计学习小结参考资料预测效果 基本介绍 递归神经网络 (RNN),尤其是 LSTM,非常适合时间序列处理。 作为研究相关技术…

使用sklearn.ensemble.RandomForestRegressor和GridSearchCV进行成人死亡率预测

原文链接:https://blog.csdn.net/weixin_44491423/article/details/127011461 本文借鉴博主hhhcbw实现方法完成随机森林回归预测成人死亡率,使用训练数据测试模型的最优得分R20.8161,在测试集上得分R20.5825 成年人死亡率指的是每一千人中15岁…

基于TCN时间序列预测Python程序

基于TCN预测模型 特色:1、单变量,多变量输入,自由切换 2、单步预测,多步预测,自动切换 3、基于Pytorch架构 4、多个评估指标(MAE,MSE,R2,MAPE等) 5、数据从excel文件中读取,更换简单…

时序预测 | Python实现Attention-TCN注意力机制时间卷积神经网络的多元时间序列预测

时序预测 | Python实现Attention-TCN注意力机制时间卷积神经网络的多元时间序列预测 目录 时序预测 | Python实现Attention-TCN注意力机制时间卷积神经网络的多元时间序列预测预测效果基本介绍环境配置程序设计模型效果参考资料预测效果 基本介绍 使用时间注意卷积神经网络进行…

AI预测死亡时间,准确率95%

(本内容转载自公众号“科技与Python”) 日前,谷歌新出炉的一项研究报告称,该公司已开发出一种新人工智能(AI)算法,可预测人的死亡时间,且准确率高达95%。最近,谷歌的这项研究发表在了《自然》杂…

FACEBOOK 时间序列预测算法 PROPHET 的研究

1.思想 在时间序列分析领域,有一种常见的分析方法叫做时间序列的分解(Decomposition of Time Series),它把时间序列 分成几个部分,分别是季节项 ,趋势项 ,剩余项 。也就是说对所有的 &#xff…

python 用LSTM预测时间序列之预测新冠肺炎疫情

用到的模块 import numpy import matplotlib.pyplot as plt from pandas import read_csv import math from keras.models import Sequential from keras.layers import Dense from keras.layers import LSTM from sklearn.metrics import mean_squared_error from keras.call…

基于self-attention-TCN时间序列预测Python程序

基于self-attention-TCN时间序列预测Python程序 特色:1、单变量,多变量输入,自由切换 2、单步预测,多步预测,自动切换 3、基于Pytorch架构 4、多个评估指标(MAE,MSE,R2,M…

Kaggle_Titanic生存预测 -- 详细流程吐血梳理

作者: 大树先生 博客: http://blog.csdn.net/koala_tree 知乎:https://www.zhihu.com/people/dashuxiansheng GitHub:https://github.com/MrLeeTree 2017 年 12 月 5 日 一直想在Kaggle上参加一次比赛,奈何被各种事情所…

python攻陷米哈游《元神》数据?详情请看文章。。

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 《原神》是由米哈游自研的一款全新开放世界冒险RPG。 里面拥有许多丰富得角色,让玩家为之着迷~ 今天,我们就来用python探索一下原神游戏角色信息! 标题大家看看就好了哈~&#xff08…

米哈游技术总监详解《原神》画面效果的技术实现

11月17日,中国Unity线上技术大会游戏专场迎来米哈游技术总监弋振中的分享,此次他围绕“从手机走向主机-《原神》主机版渲染技术”为主题,细致地讲解了《原神》在主机上渲染技术实现的重点内容。 以下是演讲内容(有节选&#xff09…

原神反调试分析

打开CE,打开原神启动器。 至此,游戏未加载驱动。启动器可以被CE正常读写。 打开原神,CE中选择YuanShen.exe,发现原神并不能被读写。 尝试分析不能读写的原因。 CE调用的读取内存函数是NtReadVirtualMemory 猜测有三种可能 1.NtReadVirtu…

关于原神抽奖概率的简要分析

序言 最近迷上了原神这款游戏,趁着保研完,肝了两个星期,也氪了一些金。先不谈这款游戏可玩性有多高,但论氪金强度算是我从小到大玩的游戏中,能排得上第一的了。 对于这种寸卡寸金的游戏,如何在无穷无尽的…