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

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. 总结

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

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

相关推荐
YuanDaima2048几秒前
图论基础原理与题目说明
数据结构·人工智能·python·算法·图论·手撕代码
AI人工智能+电脑小能手几秒前
【大白话说Java面试题 第53题】【JVM篇】第13题:JVM采用什么算法判断一个对象是否需要被回收?
java·jvm·算法·面试
小赵不会秃头5 分钟前
数据结构Day 06:线性结构、库操作及 Makefile 完整学习笔记
java·linux·数据结构·算法·面试
Shan120515 分钟前
在C++中尝试封装为函数
开发语言·c++·算法
郝学胜-神的一滴27 分钟前
干货版《算法导论》04:渐近复杂度与序列接口实战
java·开发语言·数据结构·c++·python·算法
zzzsde27 分钟前
【Linux】信号处理(3)信号处理&&valatile关键字
linux·运维·服务器·开发语言·算法
洛水水40 分钟前
【力扣100题】47.最长递增子序列
算法·leetcode·职场和发展
环流_1 小时前
Redis zinterstore
算法
不知名的忻1 小时前
交换排序:冒泡排序 vs 快速排序(Java)
java·算法·排序算法
沃普天科技1 小时前
USB显示器多屏异显多屏拼接IF8032 IT690 VL171 8801 RTD2556
arm开发·驱动开发·算法·计算机外设·音视频·硬件工程·pcb工艺