时间序列预测的不合理难度

Hacker News Top 新闻

摘要

本文探讨了时间序列预测相比其他机器学习任务为何更具挑战性,展示了基准测试结果,表明简单的统计模型和零样本基础模型在许多序列上往往优于复杂的深度学习模型。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/21 18:39

# 时间序列预测的异常难度 来源:https://suzyahyah.github.io/machine%20learning/2026/06/27/trouble-with-time-series.html ### 预览 我最近一直在思考,为什么时间序列预测问题相比于其他序列学习任务或独立同分布(IID)机器学习问题要困难得多。首先,让我们看一些体现预测问题难度的激励性基线结果。 我运行了一系列模型: - 统计模型(Naive, AutoARIMA, Theta, MSTL, Seasonal-Naive) - 线性/Transformer神经网络(DLinear, NLinear, PatchTST) - 梯度提升树(LightGBM) - 零样本基础模型(Chronos, TimesFM, TTM) - "AI"大语言模型被提示继续数值序列(Claude Opus, Haiku) 这些模型在基准数据集上进行了测试: - m4_hourly, m4_daily - etth - exchange - electricity - bitcoin *这些是交互式图表,点击图例可隐藏某条线,双击可隔离。请注意,为了更好地可视化,历史部分已被截断至预测窗口的3倍。* **结果** 需要观察的线条很多,但基准研究的主要结论是:对于具有强烈且稳定季节性的序列(如m4 hourly),简单的统计基线(Seasonal-Naive, MSTL)和零样本基础模型以较大优势获胜。然而,复杂的模型在许多时间序列任务上往往完全偏离,并不比朴素预测器好多少,因为它们的预测可能朝着完全错误的方向趋势化。 我们可能有一些直觉,比如预测没有考虑因果关系信息,而这对于预测是必要的,尤其是在像汇率这样的现实世界数据中。但即使拥有那些“特征”,人们也无法在市场中获得暴利。此外,对于许多机器学习问题,我们也没有关于因果因素的完整信息,但仍然能做出合理的预测,至少比随机游走要好。因此,本文探讨了预测问题的本质,以及是什么使其比经典机器学习困难得多。 *这到底是什么情况?* ### 为什么时间序列(预测)很困难 #### 问题定义 预测是根据历史观察序列 $y_{1:t}$ 来估计随机变量(或一组变量)未来值的行为。目标是学习一个预测函数 $f$,该函数预测变量在未来时间 $t + h$ 的值,其中 $h \ge 1$ 称为预测 horizon。 \[ \hat{y}_{t+h} = f(y_{1:t}) \] 这个问题定义有几种变体: - 如果使用外生变量预测,则有 $f(y_{1:t}, x_{1:t})$,预测还取决于与序列同时观测到的外部驱动因素 $x$(天气、促销、价格)。 - 如果是概率预测(而非点预测),则有 $p(y_{t+h} \mid y_{1:t})$。 - 如果是多序列预测,则有 $f(y_{1:t}, v_{1:t}, \cdots)$。这是基础模型的设置。 #### **时间序列数据来自数据生成过程,而非独立同分布** 以当今的机器学习状态,我们拥有非常强大且成熟的算法(深度学习企业),用于学习复杂的非线性预测器 $f_\theta: X \rightarrow Y$,其中 $(x, y) \sim p(x, y)$,用于分类和下一个令牌预测,通过最大似然估计训练,最小化训练数据集上的期望损失: \[ \begin{equation} \min_\theta \mathbb{E}_{(x, y)\sim p(x, y)} [\ell (f_\theta (x), y)] \approx \min_\theta \frac{1}{n}\sum_{i=1}^n [\ell (f_\theta (x_i), y_i)] \end{equation} \] 然而,时间序列与此设置有着根本的不同,因为数据中信号与预测之间的关系不同。在时间序列中,我们观察的是在 $t$ 个时间步上的单一实现/轨迹,而不是 $n$ 个样本。相比之下,独立同分布机器学习从数据生成分布 $p$ 中获得 $n$ 个独立样本。 **时间序列数据来自数据生成过程,而非数据生成分布**,其关键含义是数据序列是**整个路径上的联合概率分布**,而不是单个独立同分布数据点。 \[ \begin{equation} p(y_1, y_2, \cdots, y_t) = p(y_1) \prod_{i=2}^t p(y_i | y_{i-1}, y_{i-2}, \cdots, y_1) \end{equation} \] 这种分解适用于*任何*联合分布。但在经典机器学习的独立同分布假设下,对过去条件的依赖被省略,这大大简化了预测问题。我们在方程(1)中的许多学习假设不再成立,时间序列引入了独特的学习挑战。特别是: 1. 时间序列信噪比低(特征贫乏) 2. 时间序列存在“数据缺乏”问题 3. 时间序列受分布偏移的影响更严重 #### 1. 时间序列信噪比低(特征贫乏) 与机器学习问题的一个主要区别是,在时间序列中,信号是稀缺的:$f(y_t \mid y_{<t})$ 与预测目标 $y_t$ 具有相同的“类型”(一个标量或向量)。因此,预测变量 $y_t$ 本身与特征 $y_{<t}$ 共享相同的基础分布。这不同于典型的机器学习设置,在经典机器学习中,特征 $x$ 具有与标签 $y$ 完全不同的模态(例如,图像特征与类别标签)。 特征 $x$ 与标签 $y$ 的分布差异使得 $x$ 携带更多信息,有助于预测。例如,在图像中,像素值是连续的,但类别标签是离散的。而在时间序列中,预测变量和特征来自相同的“空间”,且此空间并不大。从历史上看,时间序列是“特征贫乏的”(少特征),这就是为什么像“特征工程”(傅里叶特征、滞后值)和基于残差的统计检验(Ljung-Box、Dickey-Fuller)如此普遍,因为需要努力发现信号。 一个简单的说明:假设我们有 $y = 0 + 1 \times x_{t-1}$(一个 AR(1) 过程)。那么特征和标签都在 $\mathbb{R}$ 中。相比之下,在图像分类中,标签是一种类型(“猫”或“狗”),而像素值是另一种类型(密度)。这里,$x$ 和 $y$ 的分布相似,所以从 $x$ 到 $y$ 的映射没有多少可学习的“捷径”。 #### 2. 时间序列存在“数据缺乏”问题:有效样本量较小,无效样本量较大 因为时间序列数据是相关的(相关性来自于同一过程的连续采样),这实际上*降低*了可用于学习独立样本数量的有效数量。时间序列中的有效样本量 $N_{\text{eff}}$ 由下式给出: \[ \begin{equation} N_{\text{eff}} = \frac{T}{\sum_{h=-T}^{T} \rho(h)} \approx \frac{T}{\text{sum of ACF}_h} \end{equation} \] - 如果序列是白噪声($\rho(h)=0$ 对于 $h \neq 0$),那么 $N_{\text{eff}}=T$,所有样本都是独立的。 - 如果序列高度持久(例如,单位根过程,$\rho(h) \approx 1$ 对于许多 $h$),那么 $N_{\text{eff}}$ 接近于零,因为每个新观察携带很少的新信息。 一个简单的例子:给定一个序列 $y$,其中有 $T=100$ 个观察值。如果它是白噪声,我们有 $N_{\text{eff}}=100$ 个独立样本,这几乎是足够的。如果它是一个高度持久的单位根过程($\rho(1)\approx 0.99$),那么 $N_{\text{eff}}$ 可能接近 $1$,这意味着我们只有一个有效样本点。时间序列基础模型(如 TimesFM、Chronos)通过池化数百万个序列来应对这个问题。 **单序列样本量小的一个实际后果**:如果序列以年为单位($T=30$),$N_{\text{eff}}$ 很小,可用的样本量也很小,你无法很好地学习。通常观测值是聚合的(每日、每月、每年)。在许多现实世界的应用中,$T=30-100$ 的数据并不少见。因此,经典机器学习经验法则(“数据越多越好,且通常多多益善”)根本不适用。较短的序列通常具有更强的趋势/持久性,使得 $N_{\text{eff}}$ 甚至更小。 #### 3. 时间序列中的分布偏移是确定性的,而非偶然的 时间序列还必须处理分布偏移。虽然这是机器学习中一个众所周知的问题,但在时间序列中,分布偏移的普遍性是系统性且不可避免的,而不是偶然发生的。这是因为时间序列外推本质上是将过去观察到的模式/关系推广到未来。然而,未来并不遵循过去相同的规则;它受到“完全法则”即与过去时间点无关的、无法预测的冲击的影响。 在经典机器学习中,训练集来自数据生成分布 $p(x, y)$,验证集和测试集也是如此——在这些集合之间没有*时间*维度,所以任何分布偏移都必须由*故意*的领域差异、选择偏差或其他非拓扑原因引起。训练集和测试集之间的分布差异不是由数据集本身的结构保证的。在 IID 建模中,数据采样是*同时的*,训练/测试分割*不代表*时间的连续体。因此,评估通常衡量的是对相似分布的泛化能力。 在时间序列中,评估衡量的是**外推**能力,这是更困难的。测试集总是 $T' > T$(在绝对时间上处于未来),因此 $p(y_t \mid \text{history})$ 在训练和测试之间永远无法保持静止。每个预测都是一个*外推*问题,受制于底层动力学中的漂移、冲击或机制转换。 在基准测试结果中,我们注意到 Sophisticated 模型在 exchange(外汇)和比特币上完全失败。这些是事件驱动的、不断漂移的序列。对于这些序列,每个预测都是一个外推,并且预测 horizon 越远,序列就越有可能遭遇“对预测者来说未知”的非平稳漂移,导致预测表现极差。 **分布偏移是时间序列中训练和测试之间*时间*分离的直接结果**:训练是在时间 $t=1,...,T$ 上进行的,而测试是在时间 $t=T+1,...,T+n$ 上进行的。数据生成过程 $p(y_t \mid y_{<t})$ 在测试时必然不同(因为 $p(y_{T+1} \mid y_{1:T}) \neq p(y_{T} \mid y_{1:T-1})$),并且容易受到底层动力学任何变化的影响。在经典机器学习设置中,测试点也可能分布外,但至少不是*必然*的。在像 exchange 和 bitcoin 这样的事件驱动、不断漂移的序列中,复杂模型的表现并不比 Naive 好,因为每个预测都是对外推到分布偏移序列的过程。 #### **我们实际上能学到什么?** 低信噪比、数据缺乏和分布偏移都是数据生成过程(一个独立的路径,而不是许多独立同分布抽取)的*后果*。由于时间序列存在如此多的挑战,我们究竟能期望学到什么?*什么使得单个过程可学习?* 随机数据生成过程必须具有三个关键属性(平稳性、遍历性、自相关),这使我们能够从实现的序列(从过程中采样的数据)中估计过程的属性。 **平稳性**:如果一个过程是平稳的,那么它的联合分布对时间平移是不变的。平稳性的严格定义指出,时间序列中部分序列的联合分布对于每个时间滞后/平移($h$)都是相同的。 \[ \begin{equation} p(y_1, \cdots, y_n) = p(y_{1+h}, \cdots, y_{n+h}), \quad \forall h \end{equation} \] 弱/协方差平稳性:均值恒定、方差恒定,且 $\mathrm{Cov}(y_t, y_{t+h})$ 仅取决于滞后 $h$,而不是绝对时间 $t$。在实践中,真实数据从来不是平稳的,因此许多建模方法也应用变换来尝试近似平稳性。 **遍历性**:我们只有一个数据生成过程的单一实现,但理论上可能有 $m$ 个从该过程中抽取的实现,而我们从未观察到。如果时间平均收敛到*总体平均*($m$ 个假设实现),则过程是遍历的(对于均值而言)。 \[ \lim_{T \rightarrow \infty} \frac{1}{T}\sum_{t=1}^{T} y_t = \mathbb{E}[y_t] = \mu. \] 没有这个性质,即使是平稳过程,单一实现中的任何数据量也无法告诉我们关于该过程的信息。遍历性的棘手之处在于它是一个不可检验的假设,因为我们从未实际观察到时间序列的 $m$ 个假设实现来计算总体平均。 #### **学习过程对于预测是不够的。** 具有平稳性和遍历性意味着可以从一个足够长的过程样本中推导出过程的统计属性。然而,拥有数据生成过程的统计属性并不意味着它是可预测的。 **白噪声的情况**:白噪声既是平稳的也是遍历的,但这是一个零自相关的序列。没有足够的信号来预测下一个值,即使我们知道白噪声的统计属性,我们能做的最好的就是预测下一个值为均值。 #### **从自相关中获得预测价值** 自相关是时间序列数据的一个属性,它衡量信号与其自身延迟副本之间的相关性。直观地说,我们希望利用**每个时间滞后和间隔上的所有自相关信号**。 在前神经网络、纯统计时代,自相关通过一系列需要计算的有意向的变换来捕获。从以下步骤开始: 1. 两个时间点之间的原始自相关 2. 中心化(归一化) 3. 推广到时间滞后 4. 扩展到多个时间点 **1. 原始自相关**:两个时间点 $t_1, t_2$ 之间的自相关是值之间的普通乘积矩。 \[ R_{yy}(t_1, t_2) = \mathbb{E}[y_{t_1} \times y_{t_2}] \] 这是信号处理的定义。它是*两个绝对时间*的函数,并且由于未中心化,它混入了水平 $\mu$——因此它随信号的幅度和均值缩放,而不是隔离共同运动。 **2. 中心化得到自协方差**:通过减去均值进行中心化(归一化),衡量的是*偏差*的共同运动,而非绝对大小: \[ \begin{align} K_{yy}(t_1, t_2) &= \mathbb{E}[(y_{t_1} - \mu_{t_1}) \times (y_{t_2} - \mu_{t_2})] \\ &= \mathbb{E}[y_{t_1} \times y_{t_2}] - \mu_{t_1}\mu_{t_2} \end{align} \] **3. 推广到时间滞后**:弱平稳性假设协方差仅取决于时间间隔 $h=t_2 - t_1$,而不取决于绝对时间位置,因此协方差成为滞后的一元函数: \[ \gamma(h) = K_{yy}(t_m, t_n) \] 适用于所有具有相同时间滞后 $h$ 的时间戳,其中 $h=0, 1, \cdots, T$。 **4. 标准化为自相关函数**:因为我们仍然使用原始数据的尺度,应将其归一化,以便更好地解释关系是强还是弱。除以序列的总方差 $\gamma(0) = \mathrm{Var}(y_t)$,使每个滞后处于 $[-1, 1]$ 尺度,跨滞后和跨序列可比。 \[ \rho(h) = \frac{\gamma(h)}{\gamma(0)} = \frac{\mathbb{E}[(y_t - \mu)(y_{t+h} - \mu)]}{\mathbb{E}[(y_t - \mu)^2]} \in [-1, 1] \] #### **不同模型如何使用滞后** 给定 ACF 是整个滞后上的函数,不同的模型族沿两个轴有所区别:它们读取哪些滞后,以及在这些滞后上利用什么样的依赖关系。 **一个经典的线性预测模型**:例如,考虑一个自回归 AR(p) 模型。它通过前一个时间戳的加权和来预测下一个时间步: \[ \hat{y}_{t+1} = \sum_{i=1}^p \phi_i \, y_{t-i+1} = \phi_1 y_t + \phi_2 y_{t-1} + \cdots + \phi_p y_{t-p+1} \] 并且要找到最优权重($\phi_1, \cdots, \phi_p$),我们需要求解一个依赖于自相关函数的方程组(**Yule-Walker 方程**)。 #### **从多个过程中学习结构** *但我们不能通过多个时间序列数据来学习吗?* 在现实世界的时间序列问题中,即使我们有 $m$ 个时间序列序列,它们也被认为是 $m$ 个相关但独立的过程,而不是从*一个*过程中抽取的 $m$ 个序列。例如,考虑金融市场,每个个股价格轨迹都是其自身的过程。我们可以尝试学习“全局”模式,这正是时间序列基础模型(TimesFM, Chronos, TTM)试图通过跨越数百万个序列的训练来实现的。基准测试表明,它们在经典季节性基线已经相当好的地方(m4 hourly)有所帮助,而在预测性本身很低的序列上与其余预测模型一起失败。 #### **一个“分类”** 不同的模型族在它们读取哪些滞后以及在这些滞后上利用什么样的依赖关系方面有所区别。注意,上述的“自相关”是均值的线性依赖关系;更复杂的预测方法试图利用依赖关系的整个形状和任何非线性关系。 - Naive:仅 $h=1$——将最后一个值向前传递。 - Seasonal naive:仅一个滞后,$h=m$(季节长度,例如小时数据为24)。 - AR($p$) / ARIMA:前 $p$ 个滞后,$h=1\dots p$,作为加权和。 - HAR(波动率):三个固定滞后——1、5、22天(日/周/月)。 - DLinear / NLinear:在回顾窗口 $h=1\dots L$ 中的*每个*滞后上的学习权重。 - PatchTST / attention, LightGBM:也是整个窗口,但它们可以非线性地挑选和组合特定滞后。例如,滞后1的效果取决于滞后2的值。 - 时间序列基础模型(TimesFM, Chronos, TTM):同样是整个窗口,但滞后到值的映射是*预训练*的,跨越数百万个序列,而不是拟合单个目标序列。 #### **衡量预测性** 预测性可以通过几种方式估计: - 与朴素基线直接比较:如果稍微复杂的模型表现不比朴素基线好,则可能没有足够的结构自相关可以利用。 - 频谱预测性:Nixtla 的 `tsfeatures` 中的 `entropy` 特征。底层的频谱密度来自 `scipy.signal.periodogram` / `welch`。这衡量其频率内容有多峰值。 - Ljung-Box 检验:在差分后与朴素基线相比,还有多少结构存在。`statsmodels.stats.diagnostic.acorr_ljungbox(np.diff(y), lags=[m])` #### **结论** 时间序列是从数据生成*过程*中得到的单一依赖路径,而不是从分布中独立同分布抽取的集合。这种结构差异使得信号稀少、有效样本量小,并且测试集必然位于训练支持范围之外(漂移下的外推)。主要结论是,有了这种理解,对于具有低预测性度量的现实世界时间序列问题,投入更复杂的非线性模型(神经网络)、对历史序列进行特征工程、使用基础模型合并数据或生成合成时间序列数据,并不会带来性能提升。 鉴于预测信号的缺乏,明显的下一步是寻求现实世界中的外部(外生)特征,以帮助预测模型。毕竟,许多现实世界的时间序列是事件驱动的(外汇、比特币),因此它们暴露于冲击和漂移,这些也可以被测量或在数据生成过程中加以考虑。

相似文章

线性模型在时间序列预测中能有多好?

Hugging Face Daily Papers

本文表明,精心的预处理——尤其是上下文长度选择、归一化和正则化——可以使简单的线性模型(如 Ridge 回归)在时间序列预测基准测试中与大型 Transformer、MLP 和 CNN 模型相竞争或更优。

统一零样本时间序列预测:Darts基础

arXiv cs.LG

Darts,一个广受欢迎的开源Python时间序列分析库,引入了一个统一的FoundationModel类集合,该集合整合了多种时间序列基础模型(Chronos-2、TimesFM 2.5、TiRex、PatchTST-FM),通过标准化接口和最小依赖实现零样本和微调预测。

重新思考多模态时间序列预测评估

arXiv cs.LG

介绍了TimesX,这是一个新的多模态时间序列预测基准,包含多样化的真实世界数据和文本上下文,解决了泛化、数据泄露和上下文多样性问题。

TS-Fault:针对结构性故障的时间序列预测器基准测试

arXiv cs.LG

本文介绍了TS-Fault,这是一个用于评估时间序列预测模型在结构化故障场景(如依赖关系断裂和机制变化)下的基准测试。研究发现,干净数据上的准确性通常与鲁棒性呈负相关,且基础模型特别脆弱。