20240328-1-Prophet面试题

Prophet面试题

在这里插入图片描述

1. 简要介绍Prophet

常见的时间序列分解方法:

将时间序列分成季节项 S t S_t St,趋势项 T t T_t Tt,剩余项 R t R_t Rt,即对所有的 t ≥ 0 t≥0 t0
y t = S t + T t + R t y_{t}=S_{t}+T_{t}+R_{t} yt=St+Tt+Rt

y t = S t × T t × R t y_{t}=S_{t} \times T_{t} \times R_{t} yt=St×Tt×Rt

ln ⁡ y t = ln ⁡ S t + ln ⁡ T t + ln ⁡ R t \ln y_{t}=\ln S_{t}+\ln T_{t}+\ln R_{t} lnyt=lnSt+lnTt+lnRt

fbprophet 的在此基础上,添加了节日项。
y ( t ) = g ( t ) + s ( t ) + h ( t ) + ϵ t y(t)=g(t)+s(t)+h(t)+\epsilon_{t} y(t)=g(t)+s(t)+h(t)+ϵt

2. 趋势项模型

  • 基于逻辑回归

    sigmoid 函数为
    σ ( x ) = 1 / ( 1 + e − x ) \sigma(x)=1 /\left(1+e^{-x}\right) σ(x)=1/(1+ex)
    prophet在逻辑回归的基础上添加了随时间变化的参数,那么逻辑回归就可以改写成:
    f ( x ) = C ( t ) ( 1 + e − k ( t ) ( x − m ( t ) ) ) f(x)=\frac{C(t)}{\left(1+e^{-k(t)(x-m(t))}\right)} f(x)=(1+ek(t)(xm(t)))C(t)
    这里的 C C C 称为曲线的最大渐近值, k k k 表示曲线的增长率, m m m 表示曲线的中点。当 C = 1 , k = 1 , m = 0 C=1, k=1, m=0 C=1,k=1,m=0时,恰好就是大家常见的 sigmoid 函数的形式。

  • 基于分段线性函数
    g ( t ) = C ( t ) 1 + exp ⁡ ( − ( k + a ( t ) t δ ) ⋅ ( t − ( m + a ( t ) T γ ) g(t)=\frac{C(t)}{1+\exp \left(-\left(k+\boldsymbol{a}(t)^{t} \boldsymbol{\delta}\right) \cdot\left(t-\left(m+\boldsymbol{a}(t)^{T} \boldsymbol{\gamma}\right)\right.\right.} g(t)=1+exp((k+a(t)tδ)(t(m+a(t)Tγ)C(t)
    k k k表示变化量

    a j ( t ) a_{j}(t) aj(t)表示指示函数:
    a j ( t ) = { 1 ,  if  t ≥ s j 0 ,  otherwise  a_{j}(t)=\left\{\begin{array}{l}1, \text { if } t \geq s_{j} \\ 0, \text { otherwise }\end{array}\right. aj(t)={1, if tsj0, otherwise 
    δ j \delta_{j} δj表示在时间戳 s j s_{j} sj上的增长率的变化量

    γ j \gamma_{j} γj确定线段边界
    γ j = ( s j − m − ∑ ℓ < j γ ℓ ) ⋅ ( 1 − k + ∑ ℓ < j δ ℓ k + ∑ ℓ ≤ j δ ℓ ) \gamma_{j}=\left(s_{j}-m-\sum_{\ell<j} \gamma_{\ell}\right) \cdot\left(1-\frac{k+\sum_{\ell<j} \delta_{\ell}}{k+\sum_{\ell \leq j} \delta_{\ell}}\right) γj= sjm<jγ (1k+jδk+<jδ)
    其中:
    a ( t ) = ( a 1 ( t ) , ⋯   , a S ( t ) ) T , δ = ( δ 1 , ⋯   , δ S ) T , γ = ( γ 1 , ⋯   , γ S ) T \boldsymbol{a}(t)=\left(a_{1}(t), \cdots, a_{S}(t)\right)^{T}, \boldsymbol{\delta}=\left(\delta_{1}, \cdots, \delta_{S}\right)^{T}, \boldsymbol{\gamma}=\left({\gamma}_{1}, \cdots, \gamma_{S}\right)^{T} a(t)=(a1(t),,aS(t))T,δ=(δ1,,δS)T,γ=(γ1,,γS)T

3. 变点的选择

在 Prophet 算法中,需要给出变点的位置,个数,以及增长的变化率:

  • changepoint_range

    changepoint_range 指的是百分比,需要在前 changepoint_range 那么长的时间序列中设置变点

  • n_changepoint

    n_changepoint 表示变点的个数,在默认的函数中是 n_changepoint = 25

  • changepoint_prior_scale。

    changepoint_prior_scale 表示变点增长率的分布情况
    δ j ∼ Laplace ⁡ ( 0 , τ ) \delta_{j} \sim \operatorname{Laplace}(0, \tau) δjLaplace(0,τ)
    T \mathcal{T} T就是 change_point_scale

4. 对未来的预估

对于已知的时间序列,可以手动设置s个变点

对于预测的数据模型使用Poisson分布找到新增的变点,然后与已知的变点进行拼接

5. 季节性趋势

时间序列通常会随着天,周,月,年等季节性的变化而呈现季节性的变化,也称为周期性的变化

prophet算法使用傅立叶级数来模拟时间序列的周期性

P P P表示时间序列的周期, P = 365.25 P = 365.25 P=365.25表示以年为周期, P = 7 P = 7 P=7表示以周为周期。它的傅立叶级数的形式都是:
s ( t ) = ∑ n = 1 N ( a n cos ⁡ ( 2 π n t P ) + b n sin ⁡ ( 2 π n t P ) ) s(t)=\sum_{n=1}^{N}\left(a_{n} \cos \left(\frac{2 \pi n t}{P}\right)+b_{n} \sin \left(\frac{2 \pi n t}{P}\right)\right) s(t)=n=1N(ancos(P2πnt)+bnsin(P2πnt))

6. 节假日效应(holidays and events)

除了周末,同样有很多节假日,而且不同的国家有着不同的假期,不同的节假日可以看成相互独立的模型,并且可以为不同的节假日设置不同的前后窗口值,表示该节假日会影响前后一段时间的时间序列。
h ( t ) = Z ( t ) κ = ∑ i = 1 L κ i ⋅ 1 { t ∈ D i } h(t)=Z(t) \boldsymbol{\kappa}=\sum_{i=1}^{L} \kappa_{i} \cdot 1_{\left\{t \in D_{i}\right\}} h(t)=Z(t)κ=i=1Lκi1{tDi}
其中: Z ( t ) = ( 1 { t ∈ D 1 } , ⋯   , 1 { t ∈ D L } ) , κ = ( κ 1 , ⋯   , κ L ) T Z(t)=\left(1_{\left\{t \in D_{1}\right\}}, \cdots, 1_{\left\{t \in D_{L}\right\}}\right), \boldsymbol{\kappa}=\left(\kappa_{1}, \cdots, \kappa_{L}\right)^{T} Z(t)=(1{tD1},,1{tDL}),κ=(κ1,,κL)T κ ∼ Normal ⁡ ( 0 , v 2 ) \boldsymbol{\kappa} \sim \operatorname{Normal}\left(0, v^{2}\right) κNormal(0,v2)

并且该正态分布是受到 v v v = holidays_prior_scale 这个指标影响的。默认值是 10,当值越大时,表示节假日对模型的影响越大;当值越小时,表示节假日对模型的效果越小

7. 参数

在 Prophet 中,用户一般可以设置以下四种参数:

  1. Capacity:在增量函数是逻辑回归函数的时候,需要设置的容量值。

  2. Change Points:可以通过 n_changepoints 和 changepoint_range 来进行等距的变点设置,也可以通过人工设置的方式来指定时间序列的变点。

  3. 季节性和节假日:可以根据实际的业务需求来指定相应的节假日。

  4. 光滑参数:

    τ \tau τ = changepoint_prior_scale 可以用来控制趋势的灵活度

    σ \sigma σ = seasonality_prior_scale 用来控制季节项的灵活度,

    v v v = holidays prior scale 用来控制节假日的灵活度。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

janus部署

配置和运行janus 1. 配置nginx 安装nginx&#xff0c;主要用来提供web访问。 生成证书 mkdir -p ~/cert cd ~/cert # CA私钥 openssl genrsa -out key.pem 2048 # 自签名证书 openssl req -new -x509 -key key.pem -out cert.pem -days 1095安装nginx #下载nginx 1.15.8版…

【MySQL】20. 使用C语言链接

mysql connect mysql的基础&#xff0c;我们之前已经学过&#xff0c;后面我们只关心使用 要使用C语言连接mysql&#xff0c;需要使用mysql官网提供的库&#xff0c;大家可以去官网下载 我们使用C接口库来进行连接 要正确使用&#xff0c;我们需要做一些准备工作&#xff1a; …

Servlet的文件上传下载

Servlet的文件上传|下载 二、文件上传实现 2.1实现思路 需要使用到Commons-FileUpload组件需要将jsp页面form表单的enctype属性值设置为“multipart/form-data”&#xff0c;Servlet中使用IO流实现文件的上传 2.2、实现过程 2.2.1新建web项目导入jar包 <dependency>…

weblogic oracle数据源配置

在weblogic console中配置jdbc oracle数据源 1. base_domain->Service->DataSources 在Summary of JDBC Data Sources中&#xff0c;点击New, 选择【Generic Data Source】通用数据源。 2. 设置数据源Name和JNDI name 注&#xff1a;设置的JNDI Name是Java AP中连接…

数据可视化高级技术Echarts(桑基图入门)

目录 一、什么是桑基图 二、基本特征 三、设计注意事项 四、使用Echarts进行初级绘制 1.首先不能忘记五个基本步骤 2.绘制的时需要将图像类型series.type设定为sankey类型。 一、什么是桑基图 桑基图&#xff08;Sankey diagram&#xff09;&#xff0c;即桑基能量分流图&…

EI级 | Matlab实现TCN-LSTM-MATT、TCN-LSTM、TCN、LSTM多变量时间序列预测对比

EI级 | Matlab实现TCN-LSTM-MATT、TCN-LSTM、TCN、LSTM多变量时间序列预测对比 目录 EI级 | Matlab实现TCN-LSTM-MATT、TCN-LSTM、TCN、LSTM多变量时间序列预测对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 【EI级】Matlab实现TCN-LSTM-MATT、TCN-LSTM、TCN、LSTM…

Grok-1.5 Vision:X AI发布突破性的多模态AI模型,超越GPT 4V

在人工智能领域&#xff0c;多模态模型的发展一直是科技巨头们竞争的焦点。 近日&#xff0c;马斯克旗下的X AI公司发布了其最新的多模态模型——Grok-1.5 Vision&#xff08;简称Grok-1.5V&#xff09;&#xff0c;这一模型在处理文本和视觉信息方面展现出了卓越的能力&#x…

Elasticsearch分布式搜索

实用篇-ES-环境搭建 ES是elasticsearch的简称。我在SpringBoot学习 数据层解决方案 的时候&#xff0c;写过一次ES笔记&#xff0c;可以结合一起看一下。 之前在SpringBoot里面写的相关ES笔记是基于Windows的&#xff0c;现在我们是基于docker容器来使用&#xff0c;需要你们提…

突破编程_前端_SVG(ellipse 椭圆形)

1 ellipse 元素的基本属性和用法 ellipse 元素用于创建椭圆形状。它具有一系列的基本属性&#xff0c;允许自定义椭圆的外观和位置。以下是一些 ellipse 元素的基本属性和用法&#xff1a; &#xff08;1&#xff09;基本属性 cx 和 cy&#xff1a;这两个属性定义了椭圆中心…

【CicadaPlayer】prepare和start的触发和异步处理

主线程可以直接用SuperMediaPlayer 但SuperMediaPlayer 的处理是异步的。实际上msgproc的目的在于异步处理外部请求 例如,启动后会先设置view,这个与播放流程无关,但是是必须要让播放器拥有的。用户点击prepare是直接调用SuperMediaPlayer的Prepare接口,才会触发url的设置 …

数据结构--栈,队列,串,广义表

3.栈 &#xff08;先进后出&#xff09; 栈是一种特殊的线性表&#xff0c;只能从一端插入或删除操作。 4.队列 4.1 4.1.1初始化 4.1.2判断队列是否为空 4.1.3判断队列是否为满 4.1.4入队 4.1.5出队 4.1.6打印队列 4.1.7销毁队列 5.串 5.1 串的定义 由零个或者任意多…

最新AI创作系统ChatGPT网站源码AI绘画,GPTs,AI换脸支持,GPT联网提问、DALL-E3文生图

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已支持GPT…

VMware安装Linux虚拟机(rocky9)

软件准备&#xff1a; VMware虚拟机ISO系统镜像文件 选择创建虚拟机→典型→下一步→点击稍后安装操作系统 选择Linux系统和对应版本 输入虚拟机名称和选择保存位置 设置磁盘大小 根据需要自定义硬件配置→完成 然后点击编辑虚拟机设置→CD/DVD→选择ISO镜像 然后开启虚拟机→…

vue2 二次封装element 组件,继承组件原属性,事件,插槽 示例

测试页面代码 这里主要记录如何封装element的el-input 并且封装后具有el-input原本的属性 事件 插槽 下面为测试页面即组件调用 <script> import CustomInput from /components/CustomInput.vue;export default {name: TestPage,components: { CustomInput },data() …

【洛谷 P4017】最大食物链计数 题解(深度优先搜索+动态规划+邻接表+记忆化搜索+剪枝)

最大食物链计数 题目背景 你知道食物链吗&#xff1f;Delia 生物考试的时候&#xff0c;数食物链条数的题目全都错了&#xff0c;因为她总是重复数了几条或漏掉了几条。于是她来就来求助你&#xff0c;然而你也不会啊&#xff01;写一个程序来帮帮她吧。 题目描述 给你一个…

【CSS面试题】Flex实现九宫格

考察知识&#xff1a; flex布局 水平垂直居中的实现 初始效果 代码关键&#xff1a;给父盒子添加以下属性 flex-wrap: wrap; /* 允许换行 */justify-content: space-around; /* 主轴对齐方式 */align-content: space-around; /* 多行在侧轴上的对齐方式 */<!DOCTYPE html&…

如何让Nrf connect、EFR connect直接显示特征值数据及其单位

效果如图&#xff1a;app直接显示了我的温度&#xff0c;并且有两位小数&#xff0c;还有温度单位。这是怎么做到的呢&#xff1f; 这次我们仍以TLS8258为例&#xff0c;当然如果是其他蓝牙芯片&#xff0c;配置方式也是大差不差&#xff0c;规则一样的。 #define GATT_CHARA…

租用马来西亚服务器:稳定高效的网络选择

马来西亚首都是吉隆坡。作为一个新兴的多元化经济国家&#xff0c;也属于亚洲四小龙之一。地理位置优越&#xff0c;中间隔着南中国海。一部分是北接泰国的位于马来半岛的西马来西亚&#xff0c;另一部分则是东马来西亚&#xff0c;在婆罗洲岛的北部。这种地理位置有利于促进该…

[Java EE] 计算机工作原理与操作系统简明概要

1. 计算机工作原理 1.1 生活中常见的计算机 计算机分为通用计算机和专用计算机,计算机并不单单指的是电脑,还有我们平时使用的手机,ipad,智能手表等终端设备都是计算机.还有我们用户不常见的计算机,比如服务器. 还有许多嵌入式设备(针对特定场景定制的"专用计算机"…

系统学c#:1、基础准备(软件下载与安装)

一、Vs软件下载与安装 访问Visual Studio官方网站&#xff1a; https://visualstudio.microsoft.com/zh-hans/downloads 下载Visual Studio 运行exe文件&#xff0c;点击“继续” 初始文件安装完成后选择我们需要安装的项&#xff0c;并勾选好必要的单个组件&#xff0c;设…