[算法]时间序列(介绍)

1/什么是时间序列数据?

时间序列数据 是按照固定时间间隔或连续时间点 ,按时间顺序排列的一系列观测值数据点。其核心特征是 "时间顺序" 本身就携带了至关重要的信息,数据点之间不是独立同分布的,而是存在相关性、趋势性或周期性

简单来说,如果你打乱数据点的顺序,那么, 其意义就会完全丧失或严重受损,那么这很可能就是时间序列数据。

核心特征:

  1. 时间依赖性(自相关性)当前的数据点与过去的数据点相关(例如,今天的温度与昨天、前天的温度有关)。
  2. 趋势:数据在长时间内呈现的上升或下降的方向(例如,公司销售额的长期增长)。
  3. 季节性:数据在固定周期内重复出现的规律模式(例如,每日的交通高峰、每年的冰淇淋销量高峰)。
  4. (可能的)周期性:非固定频率的波动模式(例如,由经济周期引起的波动)。

2/时间序列数据长什么样?

在数据结构上,它通常表现为一个带有时间戳的二维表格或一个有序的列表/数组。

典型结构:

时间戳 观测值 1 观测值 2 ...
t₁ x₁ y₁ ...
t₂ x₂ y₂ ...
t₃ x₃ y₃ ...
... ... ... ...
  • 最左边一列(或索引)时间索引 ,这是时间序列数据的"灵魂"。它可以是:
    • 等间隔的:2024-01-01 00:00, 2024-01-01 01:00, 2024-01-01 02:00...
    • 不等间隔的:事件发生的时间戳,如用户点击记录。
  • 每一行代表在某个特定时间点的"快照"。
  • 每一列 代表一个随时间变化的特征变量。可以是单变量(只有一列观测值),也可以是多变量(有多列观测值)。

3/几个具体的例子

1. 经典单变量时间序列:某城市每日气温

  • 目标:预测未来气温。

  • 数据示例

    日期 平均温度(°C)
    2024-01-01 5.2
    2024-01-02 4.8
    2024-01-03 6.1
    2024-01-04 7.3
    ... ...
    2024-12-31 3.5
  • 特点:只有一个数字序列随时间变化,有明显的季节性和趋势。

2. 金融多变量时间序列:股票分钟级数据

  • 目标:预测股价走势或进行交易策略分析。

  • 数据示例

    时间戳 开盘价 最高价 最低价 收盘价 成交量
    2024-05-10 09:30 150.00 150.50 149.80 150.20 100000
    2024-05-10 09:31 150.22 150.40 150.05 150.35 45000
    2024-05-10 09:32 150.36 150.60 150.30 150.50 52000
    ... ... ... ... ... ...
  • 特点:多个相关联的特征(价格、成交量)同时随时间变化,高频且波动剧烈。

3. 物联网传感器数据:智能工厂设备监控

  • 目标:设备故障预警或预测性维护。

  • 数据示例

    时间戳 设备ID 振动幅度 温度(°C) 电流(A) 压力(MPa)
    2024-05-10 10:00:00 Motor_A 2.1 65 10.5 0.85
    2024-05-10 10:00:01 Motor_A 2.2 65.1 10.6 0.86
    2024-05-10 10:00:02 Motor_A 5.8 70.3 15.2 0.92
    ... ... ... ... ... ...
  • 特点:通常由多个传感器产生,频率高,是异常检测和模式识别的重要数据源。

4. 业务与网络数据:网站每小时访问量

  • 目标:资源规划、广告投放。

  • 数据示例

    日期-小时 独立访客数 页面浏览量 服务器负载
    2024-05-09 20:00 10432 89210 0.65
    2024-05-09 21:00 12054 100345 0.72
    2024-05-09 22:00 15321 134567 0.85
    2024-05-10 09:00 8567 65432 0.45
    ... ... ... ...
  • 特点:具有强烈的周期性(日周期:白天高夜间低;周周期:工作日高周末低)。

5. 其他领域的例子:

  • 音频信号:振幅随时间变化的序列(时间间隔非常短且固定)。
  • 心电图(ECG):心脏电活动随时间变化的记录,用于检测异常心跳。
  • 语言文本:可以将一个句子看作单词在"时间步"上的序列(这里的"时间"是顺序位置)。

5. 在机器学习/深度学习中的应用

处理时间序列数据的模型需要能够捕捉其时间依赖性

  • 传统机器学习方法:需要手动构造特征,如滞后特征(前1小时的值、前1天的值)、滑动窗口统计量(过去7天的均值、方差)、季节指标等,然后使用回归、随机森林等模型。
  • 深度学习方法 :能自动学习时间模式,是当前的主流:
    • 循环神经网络(RNN)及其变体(LSTM, GRU):专为序列数据设计,具有"记忆"功能。
    • 时间卷积网络(TCN):使用因果卷积来捕获长期依赖。
    • Transformer模型:通过自注意力机制,能并行处理并捕获长距离依赖,现在也被广泛应用于时间序列预测(如Informer、Autoformer等模型)。

6. 总结

时间序列数据 就是带有时间戳、且顺序至关重要的数据。它广泛存在于我们生活的方方面面,从经济金融到工业制造,从日常天气到人体健康。

识别和理解你的数据是否具有时间序列特性,是选择正确分析方法和机器学习模型的第一步。

相关推荐
CoderCodingNo1 小时前
【GESP】C++五级练习题 luogu-P1865 A % B Problem
开发语言·c++·算法
大闲在人1 小时前
7. 供应链与制造过程术语:“周期时间”
算法·供应链管理·智能制造·工业工程
小熳芋1 小时前
443. 压缩字符串-python-双指针
算法
Charlie_lll1 小时前
力扣解题-移动零
后端·算法·leetcode
chaser&upper1 小时前
矩阵革命:在 AtomGit 解码 CANN ops-nn 如何构建 AIGC 的“线性基石”
程序人生·算法
weixin_499771552 小时前
C++中的组合模式
开发语言·c++·算法
iAkuya2 小时前
(leetcode)力扣100 62N皇后问题 (普通回溯(使用set存储),位运算回溯)
算法·leetcode·职场和发展
近津薪荼2 小时前
dfs专题5——(二叉搜索树中第 K 小的元素)
c++·学习·算法·深度优先
xiaoye-duck2 小时前
吃透 C++ STL list:从基础使用到特性对比,解锁链表容器高效用法
c++·算法·stl
松☆2 小时前
CANN与大模型推理:在边缘端高效运行7B参数语言模型的实践指南
人工智能·算法·语言模型