机器学习基础-时间序列之模型策略

所谓时间序列模型就是利用过去一段时间的序列信息去预测未来一天或多天的信息。

通常对于时间序列的预测策略都是单步预测,时间序列预测描述了预测下一个时间步长的观测值。如下图所示,某航空公司的客运流量。

      time       passengers
0    1949-01         112
1    1949-02         118
2    1949-03         132
3    1949-04         129
4    1949-05         121
5    1949-06         135
6    1949-07         148
7    1949-08         148
8    1949-09         136
9    1949-10         119
...    ...          ....

从上图可以看出,我们所获取的过去时序信息仅限于单变量的时序信息,而面对这类问题,通常都是采用arima,fbprohet之类的模型。然而,在一般复杂业务场景上碰到的问题基本上是成百上千的序列。

当然我们可以对每个序列单独用arima之类的方法来建模,理论上可以,但是实际上基本不可能,一方面维护成千上万的模型的成本是不可估计的,另一方面不同商品的序列长度差异很大,有的序列长度可能非常完整有1500+个序列数据,有的冷门商品或者是新上的商品序列长度很短可能只有不到10个,这种情况下,后者基本没法单独建模。

因此实际上我们常见的业务问题的数据形式是这样的:

商品 日期  销量序列数据
nike的XXX款衣服 2020-01-01  100
nike的XXX款衣服 2020-01-02  200
nike的XXX款衣服 2020-01-03  150
nike的XXX款衣服 2020-01-04  250
...

对于这些数据进行建模的最大问题就是,使用多少步的历史数据预测多少步的未来数据。即所谓的时间窗问题。 比如下图显示的用前一天的数据预测后一天的。

商品 日期 过去一天销量 销量序列数据
nike的XXX款衣服 2020-01-01 nan 100
nike的XXX款衣服 2020-01-02 100 200
nike的XXX款衣服 2020-01-03 200 150
nike的XXX款衣服 2020-01-04 150 250
...

这就是我们的所谓的滞后特征,也是时间序列问题中最常见的也是最重要的特征衍生方法。一般来讲,滞后数据越接近预测时间点,那么其信息对于预测的准确率贡献越大。

为了便于描述,这里假设一个序列:[1,2,3,4,5,6,7,8,9,10,X,Y,Z]

我们要做的是预测未来的3个时间点,X,Y,Z的序列的值,并且为了方便描述,这里我们统一仅仅使用1阶滞后特征。


No1.直接多步预测

直接多步预测的本指还是单步预测,多步转单步,比如上面我们要预测3个时间点的序列的值,则我们就构建3个模型:

model1:[1,2,3,4,5,6,7,8,9]==>[X]

model2:[1,2,3,4,5,6,7,8,9]==>[Y]

model3:[1,2,3,4,5,6,7,8,9]==>[Z]

这种做法的问题是如果我们要预测N个时间步,则复杂度很高,比如预测未来100天,则意味着我们要构建100个模型。

另外需要注意的是,在使用这种方法的时候,我们在进行特征工程的时候要比较小心,因为我们在序列问题的特征工程过程中常常会涉及到一些lag方法,即滞后特征的引入,比如对于: m o d e l 1 : [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] = = > [ X ] model1:[1,2,3,4,5,6,7,8,9]==>[X] model1:[1,2,3,4,5,6,7,8,9]==>[X]

我们可以构建一阶滞后特征: [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] , [ n a n , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] [1,2,3,4,5,6,7,8,9],[nan,1,2,3,4,5,6,7,8] [1,2,3,4,5,6,7,8,9],[nan,1,2,3,4,5,6,7,8],而待预测的X的一阶滞后是9,是我们已经观测到的值,因此取1阶滞后没有问题。

但是对于 m o d e l 2 : [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] = = > [ Y ] model2:[1,2,3,4,5,6,7,8,9]==>[Y] model2:[1,2,3,4,5,6,7,8,9]==>[Y],我们无法使用1阶滞后,因为Y的一阶滞后是X,X并不是我们的观测值,这个时候我们的滞后特征只能从二阶滞后开始做起。所以对于后续的 m o d e l 3 , m o d e l 4 model3,model4 model3,model4都是同理。

Tips:时间窗的长度和我们处理无序的结构化问题有一些区别。直观来说,一般长度的概念对应的是样本的数量,但是实际上在结构化数据中,对应的是特征的维度,比如:

lag_3lag_2lag_1label
1234
2345
3456

对于直接多步预测的方法,误差会随着预测时间步长的增加而增加,这样就到导致出现较高的方差。


No2.递归多步预测

递归多步预测本质上还是简单的多步预测,但是和第一种情况不同,递归多步预测不需要预测 时间步个模型,仅仅一个模型就够了。

同样是上面的一个例子:

[1,2,3,4,5,6,7,8,9,10,X,Y,Z]

model:[1,2,3...,9,10]==>[X]
model:[2,3,4...,10,pred(X)]==>[Y]
以此类推...

可以看出,由于使用了预测值代替了观测值,因此该递归策略产生累计误差。随着预测时间范围的增加,模型的性能可能会迅速下降。


No3.直接+递归混合策略

所谓混合策略的做法是,我们用model1预测X得到pred(X),然后将这个pred(X)作为model2的”观测“数据,纳入模型训练,即

model1:[1,2...9,10]==>[X]
model2:[2,3...9,10,pred(X)]==>[Y]
model3:[3,4...10,pred(X),pred(Y)]==>[Z]
...

No4.多输出策略

在传统的机器学习模型中,无法正常处理回归多输出问题,在多步预测中,是基于多个模型的输出。比如预测未来的3步是一个3输出模型,这个概念就类似于我们的多标签分类、多标签回归的概念。实际上针对于直接预测法,就是一种常见的使用传统的机器学习算法解决多标签问题的转化方法,而递归预测法本质上还是普通的简单的单标签问题。

但是深度学习可以很容易的打破这样的限制,这里介绍第四种策略:多输出策略。如下图

model:[8,9,10][X,Y,Z]

如上图所示,我们只需要把这里的Dense层的神经元个数设置为 j o u t p u t j_{output} joutput就可以( j j j是要预测的未来的时间的步数)。这是常见的使用nn进行多步预测的网络设计,特点就只是输出层的nn根据预测的时间步数进行设置而已。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
最新的机器学习回归模型通常指的是在深度学习和统计方法上不断进化的算法。其中,一些前沿的模型包括: 1. **Transformer-based Regressors**: 自Transformer(如Transformer-based的AutoML模型)在自然语言处理中的成功之后,它们也被应用到回归任务中,如DeepAR预测时间序列数据。 2. **Neural Networks with Attention Mechanisms**: 注意力机制被集成到神经网络中,如LSTM、GRU或自注意力层(如Self-Attention),提高了模型对输入数据重要部分的关注。 3. **Ensemble Methods**: 集成多个模型(如随机森林、梯度提升回归器GBRT)仍然是回归中的常用策略,尤其是XGBoost和LightGBM等高效的库。 4. **Graph Neural Networks (GNN)**: 对于具有复杂结构数据(如社交网络或分子结构),GNNs能够捕捉节点间的依赖,如Graph Convolutional Networks (GCNs)用于回归预测。 5. **Probabilistic Regression**: 模型不确定性估计是现代回归的重要方向,例如贝叶斯神经网络(Bayesian Neural Networks)和深度卡尔曼滤波(DKF)。 6. **Meta-Learning**: 这种方法通过学习如何快速适应新任务来改善回归性能,特别适用于领域适应和迁移学习。 7. **Data Augmentation**: 利用生成对抗网络(GANs)或基于模型的方法,增强训练数据以提高模型泛化能力。 每种模型都有其适用场景和优缺点,选择哪种取决于具体的数据类型、问题规模以及对模型解释性的要求。如果你想深入了解某个特定模型,我可以为你提供更详细的介绍或示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Wiggles

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值