新闻详情

新闻详情

首页 / 资讯中心 / 详情

【老计带你懂AI算法】10:经典时间序列预测,从移动平均到ARIMA和Prophet

发布时间:2026/9/28 4:37:23来源:尧图网络
【老计带你懂AI算法】10:经典时间序列预测,从移动平均到ARIMA和Prophet
【老计带你懂AI算法】10经典时间序列预测从移动平均到ARIMA和Prophet开头带时间顺序的数据是另一个物种前面讲的所有模型处理的数据有个共同特点样本之间是独立的、没有先后顺序。这套房和那套房、这封邮件和那封邮件谁先谁后无所谓打乱顺序不影响。可现实里有一大类数据顺序至关重要打乱了就全毁了这就是时间序列。每天的股价、每月的销量、每秒的服务器负载、每小时的网站流量它们都带着时间戳一个接一个昨天影响今天、今天影响明天。时序预测要干的就是根据过去的走势预测未来会怎样。这类任务太常见了电商要预测下个月销量好备货运维要预测未来流量好扩容金融要预测价格走势。因为时间这个维度的加入时序数据成了一个需要专门方法来对付的物种。这一篇讲经典的时序方法下一篇讲用机器学习和深度学习做时序。先看懂时序数据的三大成分对付时序数据之前得先学会看它。一条时序曲线通常可以拆成三个成分理解了这三样后面所有方法都好懂了趋势长期的大方向是一路往上、往下还是平着走。比如一家增长中的公司销量总体是上升趋势。季节性周期性的规律波动。比如冰淇淋销量夏天高冬天低一年一个周期网站流量白天高深夜低一天一个周期这种到点就重复的规律就是季节性。噪声残差去掉趋势和季节性后剩下的那些随机的、说不清道不明的波动。打个比方一条时序曲线就像一个人爬楼梯还带着呼吸起伏。楼梯的整体高度变化是趋势长期在往上走每一步的规律起伏是季节性周期性重复而他偶尔的踉跄晃动是噪声随机的。时序预测的核心就是把趋势和季节性这两个有规律的部分抓准、外推到未来噪声则是没法预测、只能承认的部分。移动平均与指数平滑最朴素的思路最简单的时序预测就是用过去的平均值来猜未来。移动平均拿最近N天的平均值作为对下一天的预测。比如用最近7天的平均销量预测明天。它的作用主要是抹平短期波动、看清趋势像给毛糙的曲线做了平滑。缺点也明显它对所有历史一视同仁地平均反应比较迟钝遇到转折跟不上。指数平滑对移动平均的一个聪明改进。它的想法是越近的数据越重要权重越高越老的数据越不重要权重指数级衰减。这更符合直觉毕竟预测明天昨天肯定比一个月前更有参考价值。指数平滑还有能同时处理趋势和季节性的高级版本叫Holt-Winters能应对更复杂的情况。这两种方法的共同气质是简单、快、好理解适合快速出一个基线预测或者做数据平滑。但它们对复杂规律的刻画能力有限于是有了更强的ARIMA。ARIMA经典时序的集大成者ARIMA是经典统计时序方法里最有名、最强的一个很多人一提时序预测就想到它。名字看着吓人拆开看其实是三个部件的组合我用大白话讲清每个部件在干嘛AR自回归假设今天的值和过去几天的值有关系用过去的值来预测今天。就像看前几天的走势外推。I差分这是ARIMA处理趋势的手段。很多时序带着明显的上升或下降趋势不平稳不好直接建模。差分就是用今天减去昨天把绝对值变成变化量一趟下来往往就把趋势去掉、让序列变平稳了方便建模。这里要补一个时序里绕不开的核心概念平稳性。啥叫平稳大白话就是这条序列的统计特性比如平均水平、波动幅度不随时间变化看上去从头到尾都差不多稳没有明显的一路上涨或波动越来越大。ARIMA这类经典方法有个前提它们要求序列是平稳的才好建模。为什么因为如果序列一直在涨、水平一直在变模型就抓不住一个稳定的规律来外推。而现实数据大多不平稳销量在涨、股价在飘所以才需要前面说的差分把不平稳的序列带趋势的转成平稳的变化量这就是ARIMA里那个字母I的使命。理解了平稳性你就明白为什么时序建模第一步常常是先检验和处理平稳性这是经典时序方法一个和别的模型很不一样的必修课。MA移动平均这里的MA和前面说的移动平均不完全是一回事它是用过去的预测误差来修正当前预测相当于从自己以前犯的错里学习。把这三样组合起来ARIMA就能同时刻画时序的自相关性和趋势是很强的经典方法。它还有个加强版叫SARIMASeasonal ARIMA专门多处理了季节性能应对冰淇淋销量那种带明显周期的数据。ARIMA的门槛在于它有三个参数对应AR、I、MA各用几阶需要你去定传统上要看一些统计图来判断有点专业。好在现在有自动定阶的工具如pmdarima的auto_arima能帮你自动搜出合适的参数降低了使用门槛。Prophet为工程而生的好用工具ARIMA强但用起来有门槛于是有了Prophet这是一个工程上特别好用的时序工具主打一个傻瓜好用、还能处理现实里的各种幺蛾子。Prophet的思路很直接它不搞ARIMA那套而是把时序显式地拆成趋势、季节性、节假日效应几个部分分别建模再加起来。这个思路和我们前面讲的三大成分完全对得上所以特别好理解。它的几个突出优点能自动处理季节性年、周、天的周期都能抓不用你操心。能吃进节假日信息这在现实中太重要了双十一、春节的销量暴增普通模型会当成异常Prophet可以让你告诉它这些特殊日子预测就准多了。对缺失数据和异常点比较鲁棒现实数据总是脏的它容忍度高。参数直观、几乎开箱即用业务人员也能上手。Prophet牺牲了一点理论上的精细换来了工程上的极大便利特别适合业务场景里那些带明显季节性和节假日效应的预测销量、流量是很多公司做时序预测的顺手工具。输入和输出长什么样输入一条按时间排好序的数值序列比如每天一个销量数字带着日期。注意时序数据绝对不能打乱顺序这是它和前面所有模型最大的不同。输出未来若干个时间点的预测值。好的时序工具如Prophet还会给出预测的置信区间未来值大概在哪个范围内这比一个孤零零的预测数字有用得多因为它告诉你预测有多大的不确定性。上代码用Prophet预测未来趋势Prophet接口友好适合演示。输入一段带日期的历史数据。输出未来的预测值和置信区间。# 依赖pip install prophet pandas numpyimportpandasaspdimportnumpyasnpfromprophetimportProphet# 造一份带趋势周季节性的数据:两年的每日数据datespd.date_range(2023-01-01,periods730,freqD)trendnp.linspace(10,30,730)# 缓慢上升的趋势weekly5*np.sin(np.arange(730)*2*np.pi/7)# 每周一个周期的季节性noisenp.random.randn(730)*2# 随机噪声ytrendweeklynoise# Prophet要求列名固定为 ds(日期) 和 y(数值)dfpd.DataFrame({ds:dates,y:y})modelProphet(weekly_seasonalityTrue,yearly_seasonalityFalse)model.fit(df)# 训练:自动拆解趋势和季节性# 预测未来30天futuremodel.make_future_dataframe(periods30)# 生成含未来30天的日期表forecastmodel.predict(future)# 看最后5天的预测:yhat是预测值,yhat_lower/upper是置信区间print(forecast[[ds,yhat,yhat_lower,yhat_upper]].tail())运行输出示例数值仅为示意因数据含随机噪声每次运行会有差异ds yhat yhat_lower yhat_upper 755 2025-01-25 32.451209 28.617334 36.104290 756 2025-01-26 31.087540 27.301923 34.976311 757 2025-01-27 30.213996 26.351467 34.028755 758 2025-01-28 33.760182 29.914521 37.585049 759 2025-01-29 34.128905 30.315874 38.010223运行你会得到未来30天的预测值yhat以及每个预测的上下界置信区间。Prophet自动从数据里学出了上升趋势和每周的周期波动把它们外推到未来这就是拆解三大成分再外推的思路在起作用。拿到的置信区间在实际决策里很有价值比如备货时可以按预测上界备避免缺货。关键参数与注意点季节性设置Prophet的weekly/yearly_seasonality告诉模型数据有哪些周期这是用好Prophet的关键。节假日可以传入节假日表让模型专门处理特殊日子。ARIMA的三个阶数如果用ARIMA这三个参数最关键建议用auto_arima自动搜。通用注意点时序预测越往远预测越不准误差会累积所以别指望它精确预测很久以后同时要警惕数据里的结构突变比如疫情让所有历史规律失效历史规律不成立时任何时序模型都会失灵。优缺点与适用场景经典时序方法ARIMA/Prophet等优点可解释性好能看清趋势、季节性各是什么、需要的数据量不算大、成熟稳定、Prophet还特别好上手。缺点主要擅长刻画趋势和季节性这类相对规整的规律对特别复杂的非线性模式、或者需要用很多外部特征不只是历史值来预测的场景就力不从心了那时要请出机器学习和深度学习方法。适合场景有明显趋势和季节性的业务预测销量、流量、负载、数据量中等、需要可解释、需要置信区间。不适合规律高度非线性、要融合大量外部特征、超大规模多序列联合预测这些是下一篇主角的舞台。小结与承上启下时序数据带时间顺序不能打乱核心是抓住趋势、季节性两个规律成分噪声无法预测。移动平均/指数平滑最朴素平滑和快速基线指数平滑让近处数据权重更高。ARIMA/SARIMA经典集大成者自回归差分去趋势误差修正SARIMA加季节性。Prophet工程好用显式拆解趋势季节性节假日傻瓜好上手、给置信区间是业务预测的顺手工具。经典方法擅长规整的趋势和季节性可如果时序里藏着复杂的非线性规律、或者你想用一堆额外特征天气、促销、节假日来帮助预测就得换思路了。下一篇我们讲怎么用机器学习的树模型和深度学习的LSTM来做时序预测看看它们各自的长处。我们下一篇见。延伸阅读statsmodels 官方文档时间序列分析含ARIMA、SARIMAhttps://www.statsmodels.org/stable/tsa.htmlProphet 官方文档https://facebook.github.io/prophet/说明以上为官方公开文档地址可能随版本调整如打不开可用标题搜索。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

WaterCloud开发实战:动态数据转静态表格与返回后处理全指南 2026/9/28 5:48:20

WaterCloud开发实战:动态数据转静态表格与返回后处理全指南

1. WaterCloud 里动态数据和静态表格为什么会同时存在做 .NET Core 开发的朋友对 WaterCloud 这种快速开发框架应该不陌生,代码生成器一跑,单表增删改查、前端表格、表单就全出来了。这种框架爽是真爽,但凡是正经项目,早晚会遇到一…

阅读更多 →
驾驶员分心检测图像分类数据集实战:PyTorch训练与避坑指南 2026/9/28 5:48:20

驾驶员分心检测图像分类数据集实战:PyTorch训练与避坑指南

简介:面向驾驶员状态监测、辅助驾驶与图像分类任务的研究者及开发者,该数据集提供约2.2万张已标注图片,覆盖安全驾驶、打电话、喝水、与乘客交谈等10类常见分心行为,标签细节可在配套json文件中查看。数据已按训练集、测试集划分&…

阅读更多 →
YOLOv8+DeepSORT施工安全监控:跨帧跟踪与落地避坑指南 2026/9/28 5:48:20

YOLOv8+DeepSORT施工安全监控:跨帧跟踪与落地避坑指南

简介:面向智能建造与施工现场安全监控场景的 YOLOv8DeepSORT 综合资源包,用于检测施工现场的安全隐患并追踪工人,重点识别安全帽、反光背心佩戴情况,适合从事目标检测与多目标跟踪的开发者、安全管理人员借鉴。压缩包共两千个文件…

阅读更多 →
WPF DataGrid仿Excel筛选:列头按钮、弹出层与MVVM筛选引擎 2026/9/28 5:48:20

WPF DataGrid仿Excel筛选:列头按钮、弹出层与MVVM筛选引擎

简介:面向需要开发WPF桌面应用的中高级.NET开发者,提供一套在DataGrid控件上实现类似Excel交互式筛选的完整参考实例,可用于数据密集型管理工具的功能升级。资源包采用RAR压缩格式,整体仅349KB,共76个文件,…

阅读更多 →
正余弦编码器信号链设计与归一化调试避坑指南 2026/9/28 5:48:20

正余弦编码器信号链设计与归一化调试避坑指南

几年前调试一台低速高精度转台,换上正余弦编码器后,我以为最难的硬件部分已经结束了——示波器上利萨如圆很漂亮,结果伺服系统一闭环,速度环低频振荡,位置环过零时跳数。排查下来,问题分布在三个地方&#…

阅读更多 →
基于Python的深度学习时间序列预测实战:LSTM/ARIMA/SVM对比与避坑指南 2026/9/28 5:48:14

基于Python的深度学习时间序列预测实战:LSTM/ARIMA/SVM对比与避坑指南

简介:一套基于Python的深度学习时间序列预测研究与实现代码包,面向希望入门或进阶时间序列分析的学习者,也适合用于毕设、课程设计、大作业、工程实训或初期项目立项。压缩包共19个文件,包含12个Python脚本、4个CSV数据集、2个Mar…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉