如何建模时间序列的不确定性?

Posted fareise

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何建模时间序列的不确定性?相关的知识,希望对你有一定的参考价值。

微信公众号“圆圆的算法笔记”,持续更新NLP、CV、搜推广干货笔记和业内前沿工作解读~

后台回复“交流”加入“圆圆的算法笔记”交流群;回复“时间序列“、”多模态“、”迁移学习“、”NLP“、”图学习“等获取各个领域干货算法笔记~

基础的时间序列预测任务的目标是给定历史序列,预测未来每个时间点的具体值。这种问题定义虽然简单直接,但是也面临着一些问题。在很多应用场景中,我们不仅希望能预测出未来的具体值,更希望能预测出未来取值的不确定性,例如一个概率分布或者取值范围。在很多应用场景中,未来的时间序列本身就具有很强的不确定性,如果能预测出一个取值区间,会对业务决策带来更大的帮助,让我们对未来的最好情况和最差情况心里有个数。

 

对时间序列进行概率分布或区间估计的方法主要有两种,这篇文章给大家详细介绍一下这两种方法,以及采用这两种方法的经典时间序列预测论文。

时间序列历史干货笔记推荐

如何搭建适合时间序列预测的Transformer模型?

层次时间序列预测指南

Spatial-Temporal时间序列预测建模方法汇总

12篇顶会论文,深度学习时间序列预测经典方案汇总

1. 方法1:建模概率分布

第一种方法是直接对未来时间序列的概率分布进行建模,其中DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks(2017)是这种建模方法的典型工作,采用RNN对时间序列进行概率分布建模。首先假设,待预测的时间序列在每个时间步的取值都服从某种分布,DeepAR对于实值时间序列采用高斯分布的假设。因此,问题转换为,预测每个时间步高斯分布的均值和方差。在模型实现上,RNN在每个时刻输出的隐状态接两个全连接层,第一个全连接用来拟合当前时刻的均值,第二个全连接层拟合的是当前时刻的方差。

在获取到模型预测的均值和方差后,我们可以利用极大似然估计作为损失函数优化模型,这其实就是一个根据观测值利用极大似然方法进行参数估计的过程。这个过程可以用下面的公式表示,其中h代表RNN在每个时刻输出的隐状态向量,w和b对应全连接参数。

后来的一些方法,例如Deep State Space Models for Time Series Forecasting(2018)等,也是基于这种概率估计的思路,模型拟合均值和方差,进而得到时间序列的概率分布。在预测结果的时候,模型同样预测的是高斯分布的均值和方差,利用每个时间步的高斯分布预测结果,我们就可以得到时间序列的一个预测区间范围,例如取某个分位数,像下面这张图那样。

下面结合DeepAR的具体代码来看一下具体实现方法。注意红框部分,在得到隐状态(hidden_permute)后,会经过两个独立的全连接层,将隐状态分别映射成两个标量mu和sigma,mu对应均值,sigma对应方差。其中softplus激活函数将预测结果映射成>0的数,以满足高斯分布方差的特性。

2. 方法2:分位数回归

第二种方法基于分位数回归(quantile regression)的思路,在A Multi-Horizon Quantile Recurrent Forecaster(2018)中开始被结合深度学习被应用到时间序列预测任务中。分位数回归相比一般的均值回归,拟合的是观测值分位数和变量之间的关系。在RNN等深度学习模型里,可以通过引入quantile loss,让模型拟合分位数。Quantile loss的公式如下:

其中q是一个参数,控制着模型拟合多少分位数。当q=0.5时,quantile loss就变成了MAE损失,直接拟合均值。在实际应用中,可以取多组q,分别拟合不同的分位数,每一组q对应一个预测结果,就可以得到多组不同分位数的预测结果。例如我们关心0.5、0.7、0.9三种分位数,并且模型的结构是RNN。那么只需要在每个隐状态后接一个output layer映射到一个3维向量,向量中每个元素对应一个分位数预测结果,代入上面loss函数即可。

Quantile loss这种方法相比对概率分布建模,优点在于简单易用,相当于让模型直接输出预估区间,因此后续很多论文都采用了该方法来预测时间序列区间,例如Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting(TFT,2019)这篇谷歌发布的时序Transformer模型,就将quantile regression作为多步预测的建模方法。下图是TFT的网络结构,可以看到在红框部分dense输出层针对每组q生成一个对应分位数的预测结果。

3. 总结

预测时间序列的概率分布、区间是在实际应用中比较常用的技术,对概率分布和区间的预估能让模型输出更多信息,辅助我们进行决策和风险控制。相比只预测一个值,概率分布和区间的预估既能给出时间序列未来走向,也能让描绘出未来的不确定性,值得在实际工作中试一试这种预估方法。

微信公众号“圆圆的算法笔记”,持续更新NLP、CV、搜推广干货笔记和业内前沿工作解读~ 后台回复“交流”加入“圆圆的算法笔记”交流群;回复“时间序列“、”多模态“、”迁移学习“、”NLP“、”图学习“等获取各个领域干货算法笔记~

【历史干货算法笔记】

12篇顶会论文,深度学习时间序列预测经典方案汇总

Spatial-Temporal时间序列预测建模方法汇总

最新NLP Prompt代表工作梳理!ACL 2022 Prompt方向论文解析

图表示学习经典工作梳理——基础篇

一网打尽:14种预训练语言模型大汇总

Vision-Language多模态建模方法脉络梳理

花式Finetune方法大汇总

以上是关于如何建模时间序列的不确定性?的主要内容,如果未能解决你的问题,请参考以下文章

如何落地业务建模 将模型实现为RESTful API

如何落地业务建模 将模型实现为RESTful API

对具有变化属性的对象进行建模

建模:确定服务的边界——《微服务设计》读书笔记

高斯分布(Guassian Distribution)建模不确定度(Uncertainty)问题

高斯分布(Guassian Distribution)建模不确定度(Uncertainty)问题