作者:CSDN @ _乐多_
时间序列预测涉及基于历史时间戳数据值和外部因素构建模型,以做出推动未来战略决策的科学预测。鉴于其对相关决策的直接影响,训练强大的时间序列预测模型以进行准确可靠的预测是最具挑战性的任务之一。时间序列预测模型的稳健性仅取决于建模之前执行的特征工程和数据分析。
即使在加入tsfresh和外部特征后,有时候时间序列模型仍然无法达到业务预期的预测结果。在本文中,我们将讨论并实施如何使用Facebook Prophet模型的特征来提高监督式时间序列模型的性能。
开始
我们将使用一个包含8个独立特征和一个连续依赖特征“target”的自定义生成的样本时间数据集。我们将使用Light-GBM模型进行不同的特征工程策略训练:
- Light-GBM与外部特征
- Light-GBM与外部特征+滞后特征(lags)
- Light-GBM与外部特征+滞后特征+Facebook Prophet特征
我们将实施并比较上述每种特征工程策略的性能,并得出结论,看看Facebook Prophet特征是否有效地训练出一个稳健的模型。
数据
原始的基于时间的数据是时间序列的,包含8个独立特征和一个作为依赖特征的“target”。我已经创建了小时、天和月份特征来捕捉数据中的时间因素。以下是数据的样本:
|
训练Light-GBM模型
我们将在上述提到的原始样本数据上训练一个Light-GBM模型,并计算其性能最佳的特征以及用于基准测试的MAE(平均绝对误差)。
|
我们在推理数据上得到的MAE为53.79,而性能最佳的特征包括小时、日期、湿度等。
带有滞后特征的Light GBM
前面的模型只是在外部因素/数据上进行训练,并没有涉及依赖特征“target”的滞后特征。为了计算要包含的滞后数量,我们可以观察自相关性。
|
从上面的相关性图中,我们可以观察到“target”特征与1小时、24小时、48小时等有着高度的相关性。因此,我们可以创建以下滞后特征:
- 1小时滞后变量,通过将目标值向后移动1小时
- 1天滞后变量,通过将目标值向后移动1天
- 2天滞后变量,通过将目标值向后移动2天
- 1周滞后变量,通过将目标值向后移动1周
我们将包括之前的静态特征以及这些滞后特征。
|
我们在推理数据上得到的MAE为21.37,性能最佳的特征包括小时、前一小时滞后、前一天滞后等。
带有滞后特征和Facebook Prophet特征的Light GBM:
现在我们将包括来自Facebook Prophet包的特征。思路是在训练数据上训练FB Prophet模型,并利用prophet.predict() API生成的训练和推理特征,来生成具有22个维度的统计特征。
|
结论
在本文中,我们讨论了一些时间序列用例的特征工程策略。根据我们对一部分数据进行的实验,原始数据集的MAE为53.78,在加入滞后特征后,MAE改善为21.37。在引入来自Facebook Prophet API的统计特征后,MAE进一步改善为20.81。
虽然加入FB Prophet特征后的MAE改进还不够显著,但在其他用例或更大规模的真实数据集中可能表现良好。
参考文献
[1] Facebook Prophet文档:https://facebook.github.io/prophet/
声明:
本人作为一名作者,非常重视自己的作品和知识产权。在此声明,本人的所有原创文章均受版权法保护,未经本人授权,任何人不得擅自公开发布。
本人的文章已经在一些知名平台进行了付费发布,希望各位读者能够尊重知识产权,不要进行侵权行为。任何未经本人授权而将付费文章免费或者付费(包含商用)发布在互联网上的行为,都将视为侵犯本人的版权,本人保留追究法律责任的权利。
谢谢各位读者对本人文章的关注和支持!