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

原来时间序列挖掘这么简单

先搞懂:啥是时间序列?

简单说,时间序列就是按时间顺序记下来的数据。比如:

  1. 你每天早上 8 点测的体重,连起来就是 “体重时间序列”;
  2. 超市每天的销售额,连起来就是 “销售时间序列”;
  3. 城市每小时的车流量、股票每分钟的价格、国家每个季度的 GDP…… 只要是按时间排的数,都算。

我们挖这些数据干啥?就一个目的:从过去的规律里,猜未来会咋样。比如根据过去 3 个月的销量,算下个月要进多少货;根据历史交通流量,提前规划明天的限行措施。

时间序列有啥 “小脾气”?

就像每个人有不同性格,时间序列也有自己的 “特点”,主要分三种:

  1. 趋势性:一条道走到黑

就是长期看一直涨或一直跌。比如近 20 年智能手机销量,整体一直往上走;再比如老式胶片相机的销量,一路往下掉。

  1. 季节性:到点就 “发疯”

每隔一段时间就重复的波动。比如每年夏天冰淇淋销量暴涨(旺季),冬天暴跌(淡季);再比如春节前快递单量激增,节后又回落,这都是季节性。

  1. 随机性:突然 “抽风”

没规律的突发波动。比如某天突然下暴雨,外卖订单比平时多了一倍;或者某明星突然推荐一款产品,让销量莫名暴涨,这些都是随机的。

时间序列分哪几类?

根据 “脾气” 不同,时间序列能分成三大类,就像不同性格的人:

  1. 纯随机序列:完全 “没脑子”

数据之间没任何关系,纯属瞎晃悠。比如你每天掷骰子的结果,今天是 3,明天是 5,后天是 2,毫无规律。这种序列没啥用,挖不出东西。

  1. 平稳非白噪声序列:“情绪稳定” 但有规律

虽然有波动,但整体均值(平均水平)和方差(波动大小)基本不变,也没啥大趋势。比如一个成熟小区的每日用电量,可能某天多 10 度,某天少 5 度,但长期看平均每天就用 200 度,波动不大。这种序列能挖出规律,适合建模预测。

  1. 非平稳序列:“喜怒无常”

均值或方差会变,还有明显的趋势或季节性。比如房价(长期上涨,趋势性)、羽绒服销量(冬天涨夏天跌,季节性)。这种序列最常见,但建模前得先 “调教” 一下。

建模前要做啥?先 “体检”!

拿到数据不能直接建模,得先做 “体检”—— 看看它稳不稳定(平稳性检验),因为很多模型只认 “平稳” 的序列。

怎么 “体检”?两种简单方法:

  1. 画张图看看(时序图检验)

平稳序列的图应该是围绕一条水平线晃悠,不会一直往上或往下,波动也差不多大。如果图里明显有上坡(涨)或下坡(跌),或者波动越来越大(比如从每天差 10 块到每天差 100 块),那就是非平稳的。

  1. 算个 “自相关” 看看(自相关图检验)

简单说,就是看今天的数据和昨天、前天的有没有关系。平稳序列的相关性会快速 “消失”(比如今天和昨天有点关系,和前天关系就很小了);而非平稳序列的相关性会拖很久(今天和上个月的数据可能还有关系)。

不同序列咋建模?

1. 平稳非白噪声序列:用 ARMA 模型

这种 “情绪稳定” 的序列,适合用 ARMA 模型。它就像个 “预测小能手”,能根据历史数据猜未来。

ARMA 其实是两个模型的组合:

  1. AR 模型:用过去的 “自己” 预测现在。比如根据前 3 天的销量,预测今天的销量。
  2. MA 模型:用过去的 “误差” 预测现在。比如之前预测总差 10 块,这次就根据这个误差调整。

建模步骤很简单:

  1. 先分析数据的相关性,确定 AR 和 MA 的参数(就像调收音机找频道);
  2. 算出模型里的具体数值(比如用前 3 天的数据,权重各是多少);
  3. 检查模型好不好:看预测完剩下的 “误差” 是不是纯随机的(如果还有规律,说明模型没调好);
  4. 没问题就可以预测未来了。

2. 非平稳序列:用 ARIMA 模型

这种 “喜怒无常” 的序列,得先 “修理” 一下 —— 用 “差分” 把它变成平稳的。比如数据一直在涨,就用今天的数减昨天的数(1 阶差分),抵消掉上涨趋势,变成平稳序列后,再用 ARMA 模型。

ARIMA 里的 “I” 就是 “差分” 的意思。比如 ARIMA (2,1,1),就是先做 1 次差分,再用 AR 参数为 2、MA 参数为 1 的模型。

用 Python 能实现吗?

当然能!Python 里有个叫statsmodels的库,直接提供了 ARIMA 模型的工具,用法很简单:

只要输入数据,再设定好参数(p, d, q),比如ARIMA(数据, order=(2,1,1)),电脑就会自动帮你建模、算结果,最后还能输出预测值。

总结:

时间序列挖掘就是从按时间排的数据里找规律、猜未来,核心步骤是:

  1. 看数据的 “脾气”(趋势、季节、随机);
  2. 分清楚是哪类序列(平稳 / 非平稳);
  3. 平稳的用 ARMA,非平稳的先差分再用 ARIMA;
  4. 用 Python 工具快速实现,搞定预测!

http://www.lryc.cn/news/589538.html

相关文章:

  • 力扣73:矩阵置零
  • NW917NW921美光固态闪存NW946NW952
  • 游戏行业中的恶梦:不断升级的DDoS攻击
  • 【HarmonyOS】ArkUI-X 跨平台框架入门详解(一)
  • 3.正则化——新闻分类
  • 【stm32】新建工程
  • STM32裸机开发(中断,轮询,状态机)与freeRTOS
  • MyBatis与Spring整合优化实战指南:从配置到性能调优
  • Conda 核心命令快速查阅表
  • 系统编程是什么
  • 22-C#的委托简单使用-2
  • ai问答推荐企业排名优化?:五大企业核心竞争力全景对比
  • 从0开始学习R语言--Day47--Nomogram
  • 【51单片机先流水2秒后数码显示2秒后显示END】2022-9-5
  • 判断QMetaObject::invokeMethod()里的函数是否调用成功
  • 密码协议的基本概念
  • 【Linux手册】重定向是如何实现的?Linux下为什么一切皆文件?
  • 【env环境】rtthread5.1.0使用fal组件
  • npm install failed如何办?
  • 差分信号接口选型指南:深入解析LVDS、SubLVDS、SLVDS与SLVDS-EC**
  • 回顾一下Docker的基本操作
  • 项目:从零开始制作一个微信小程序(第六天)
  • 专业文档搜索工具,快速定位文本内容
  • Spring AI Alibaba 1.0 vs Spring AI 深度对比
  • EPLAN 电气制图(九):直流电源绘制+端子排绘制
  • 3.创建表-demo
  • 深入解析环境变量:从基础概念到系统级应用
  • 墨刀原型图的原理、与UI设计图的区别及转换方法详解-卓伊凡|贝贝
  • TypeScript之旅
  • 基于STM32与中航ZH-E3L字符卡通信在LED屏显示数据