当前位置: 首页 > news >正文

Facebook 开源多季节性时间序列数据预测工具:Prophet 饱和预测 Saturating Forecasts

文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。

Facebook Prophet
Prophet 是一种基于加法模型的时间序列数据预测程序,在该模型中,非线性趋势与年、周、日季节性以及节假日效应相匹配。它最适用于具有强烈季节效应和多季历史数据的时间序列。先知对缺失数据和趋势变化具有很强的鲁棒性,通常能很好地处理异常值。

Prophet 是 Facebook 核心数据科学团队发布的开源软件。

饱和预测

预测增长

默认情况下,Prophet 使用线性模型进行预测。在预测增长时,通常会有一个最大可达到的点:总市场规模、总人口规模等。这称为承载能力,预测应在这个点达到饱和。

Prophet 允许你使用带有指定承载能力的逻辑增长趋势模型进行预测。我们以维基百科上 R(编程语言)页面的访问量的对数为例:

# R
df <- read.csv('https://raw.githubusercontent.com/facebook/prophet/main/examples/example_wp_log_peyton_manning.csv')
# Python
df = pd.read_csv('https://raw.githubusercontent.com/facebook/prophet/main/examples/example_wp_log_peyton_manning.csv')

我们必须在一列 cap 中指定承载能力。这里我们假设一个特定值,但通常会根据市场规模的数据或专业知识来设置。

# Python
df['cap'] = 8.5

需要重点注意的是,cap 必须为数据框中的每一行指定,并且它不必是常数。如果市场规模在增长,那么 cap 可以是一个递增序列。

然后,我们像以前一样拟合模型,只是传入一个额外的参数来指定逻辑增长:

# R
m <- prophet(df, growth = 'logistic')
# Python
m = Prophet(growth='logistic')
m.fit(df)

我们像以前一样为未来预测创建一个数据框,只是还必须在未来指定承载能力。这里我们将承载能力保持在与历史相同的值不变,并预测未来 5 年:

# R
future <- make_future_dataframe(m, periods = 1826)
future$cap <- 8.5
fcst <- predict(m, future)
plot(m, fcst)
# Python
future = m.make_future_dataframe(periods=1826)
future['cap'] = 8.5
fcst = m.predict(future)
fig = m.plot(fcst)

img

逻辑函数有一个隐式的最小值 0,并且会像在承载能力处饱和一样在 0 处饱和。也可以指定一个不同的饱和最小值。

饱和最小值

逻辑增长模型还可以处理饱和最小值,其通过一个与 cap 列指定最大值相同的方式指定的 floor 列来实现:

# R
df$y <- 10 - df$y
df$cap <- 6
df$floor <- 1.5
future$cap <- 6
future$floor <- 1.5
m <- prophet(df, growth = 'logistic')
fcst <- predict(m, future)
plot(m, fcst)
# Python
df['y'] = 10 - df['y']
df['cap'] = 6
df['floor'] = 1.5
future['cap'] = 6
future['floor'] = 1.5
m = Prophet(growth='logistic')
m.fit(df)
fcst = m.predict(future)
fig = m.plot(fcst)

img

要使用带有饱和最小值的逻辑增长趋势,也必须指定最大承载能力。

风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。

http://www.dtcms.com/a/288631.html

相关文章:

  • dynamic_cast的实现原理
  • Beamer-LaTeX学习(教程批注版)【6】
  • Elasticsearch 简化指南:GCP Google Compute Engine
  • GPT-4o mini TTS:领先的文本转语音技术
  • 随着GPT-5测试中泄露OpenAI 预计将很快发布 揭秘GPT-5冲击波:OpenAI如何颠覆AI战场,碾压谷歌和Claude?
  • prometheus 黑盒监控和docker检测
  • mysql第三次作业
  • 学习寄存器——GPIO(二)学习BSRR BRR ODR寄存器的原子性和在HAL库的应用
  • 【Go语言-Day 22】解耦与多态的基石:深入理解 Go 接口 (Interface) 的核心概念
  • 【详细笔记】两类曲线积分转换
  • 群组功能实现指南:从数据库设计到前后端交互,上班第二周
  • 【数据结构】揭秘二叉树与堆--用C语言实现堆
  • 人工智能之数学基础:随机实验、样本空间、随机事件
  • Docker Desktop 入门教程(Windows macOS)
  • 深度学习图像分类数据集—百种病虫害分类
  • Python绘图小工具开发:从零构建数据可视化利器
  • 股票及金融笔记
  • 如何升级Docker部署的Dify
  • Materials Studio学习笔记(二十九)——尿素的几何优化
  • 私有云新势力:Puter+CPolar如何低成本替代商业网盘?
  • 【Linux性能优化】常用工具和实战指令
  • 小架构step系列20:请求和响应的扩展点
  • 制作mac 系统U盘
  • macOs上交叉编译ffmpeg及安装ffmpeg工具
  • pages.json页面路由中,globalStyle的各个属性
  • RPG62.制作敌人攻击波数二:攻击ui
  • 分布式文件系统04-DataNode海量数据分布式高可靠存储
  • 【LeetCode数据结构】单链表的应用——环形链表问题详解
  • 【PTA数据结构 | C语言版】哈夫曼树的实现
  • UDP中的单播,多播,广播