前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中的时序分析工具包推荐(2)

Python中的时序分析工具包推荐(2)

作者头像
luanhz
发布2022-01-05 08:43:03
1.2K0
发布2022-01-05 08:43:03
举报
文章被收录于专栏:小数志小数志

导读

在前期推文Python中的时序分析工具包推荐(1)中介绍了时序分析的三个工具包,分别侧重于时序特征工程、基于sklearn的时序建模和更为高级的时序建模工具。今天,本篇再来介绍4个时序分析好用的工具包:Prophet、Merlion、Darts和GluonTS。

延续前篇推文的风格,本文主要对四个时序工具包进行简要介绍,包括工具包的功能定位、主要特色及优劣势等,并列出了相关的论文、文档和github地址可供详细查阅。

01 Prophet

Prophet,英文原义有“预言家”或者“先知者”的含义,放在时间序列里,那么自然就是用于时序预测。这是一个由Facebook在2017年研究设计的时序分析工具,主要定位就是用于时序预测,如果按照时序预测的几种主流建模方式来加以区分的话,那么Prophet应当属于统计学模型流派。Prophet目前最新版本是1.0版本,其上一个版本是0.7,同时也刚好从1.0开始,该工具包更名为prophet,而之前的工具包则叫作为fbprophet,但主用的时序预测模型则都叫做Prophet。prophet工具包性能还是很强大的,最主要的是其自动化程度相当高,即使是全默认参数也能取得不错的效果,所以很多其他时序工具包都将其集成在内。

不过,prophet工具包的安装有些麻烦,主要是pystan依赖安装的问题。经过实践,利用conda源直接conda install prophet,可以顺利完成安装,体验较好。

Prophet实现时序预测的基本思想是将时间序列按成分分解为趋势性(Trend)、季节性(Seasonality,这里的季节性既包括年、月、周等日期属性上的季节性,也包括更为一般的周期性)、误差项(Error),以及考虑节假日等特殊日期的影响(Holiday)。相较于其他经典的统计学时序预测模型,Prophet除了成分分解更为细化之外,还考虑趋势性的拐点因素(Trend Changepoints),同时对节假日的处理也支持双重假日的影响(例如中国的节日中,国庆和中秋重叠的情况),以期来进一步考虑节假日对时序带来的冲击。

Prophet进行时序预测时,以dataframe作为输入数据类型,且该dataframe中要求含有ds和y两个字段,其中ds表示时间列,y表示时序变量,而后直接调用fit和predict接口就可以愉快的玩耍了。同时,Prophet还可以对预测结果进行快速可视化对比,下图中黑色散点为真实值,而蓝色区域则为预测的置信度范围。

关于Prophet的相关参考信息如下:

代码语言:javascript
复制
论文:https://peerj.com/preprints/3190.pdf
文档:https://facebook.github.io/prophet/docs
GitHub:https://github.com/facebook/prophet (13.9K star)

02 Merlion

Merlion是由美国salesforce公司新推出的一个时序分析工具,主要定位是时序预测(Forecasting)和异常检测(Anomaly Detection)。

于我个人而言,对salesforce的了解源于在使用AutoML工具transmogify,这也是由salesforce推出的一款基于Spark.ml的自动化机器学习框架。

Merlion因为在本次对比的几个时序分析工具中推出时间相对较晚,所以一定程度上占有后发优势。就时序预测和异常检测两类时序分析任务而言,Merlion既支持单变量也支持多变量的时序分析,而且还支持了模型融合(Ensemble)以及AutoML能力(可以理解为带有模型选择和自动调参功能的时序建模)。下图是Merlion的github中给出的和其他几个时序分析工具的功能覆盖对比图:

具体到时序预测任务,Merlion大体上支持统计学模型和机器学习模型,其中统计学模型包括ARIMA、ETS等常用模型外,也将Prophet集成进来;而机器学习模型则主要是基于决策树的集成模型,例如RF和GB等。同时,如前文所述,Merlion内置了AutoML能力,可以实现模型的选择和调参,同时也可方便的对多个模型的预测结果进行融合,毕竟在时序预测中不存在单一模型通吃所有数据集的情况。与Prophet类似,Merlion也支持自动绘制真实值和预测结果及置信区间的对比曲线,某种程度上比Prophet更加直观,如下图所示。

Merlion是我个人前期使用较多的一个工具,安装的话推荐使用离线安装(首先从github下载源码,然后pip install 文件夹)。与Prophet不同,由于Merlion既支持单变量也支持多变量,所以其内置了定制的输入数据格式TimeSeries类型,但也可以非常方便的从dataframe加载转换。

关于Merlion的相关参考信息如下:

代码语言:javascript
复制
论文:https://arxiv.org/abs/2109.09265
文档:https://opensource.salesforce.com/Merlion/v1.1.0/index.html
GitHub:https://github.com/salesforce/Merlion (2.3k star)

03 Darts

Darts工具包也是一个强大的时序分析工具,也支持了众多模型和任务场景,并提供了高度集成化的调用方式,包括Prophet也是其内置集成的模型之一。下图是Darts的Github中给出的模块功能阵列,从中可以看出支持的模型及所使用时序预测场景:

Darts给我的第一印象是其与Merlion十分接近,包括二者都是定制了一个TimeSeries数据类型作为模型的标准输入。但二者的主要区别也很明显,主要可概括如下:

  • Merlion支持的时序分析任务包括时序预测和异常检测;而Darts仅聚焦于时序预测问题;
  • Merlion支持的模型主要是统计学模型和传统机器学习模型,而Darts支持的模型更为丰富,最大的特色是深度学习模型,其中不乏Transformer、TCN等这些新的时序建模方法。

此外,Darts工具包也支持了包括Pipeline、自动调参等特性,也算是工程化支持较为完备的工具包。不过,个人在尝试使用时体验并不是很优秀

关于Darts的相关参考信息如下:

代码语言:javascript
复制
论文:https://arxiv.org/abs/2110.03224
文档:https://unit8co.github.io/darts
GitHub:https://github.com/unit8co/darts (3.3k star)

04 GluonTS

如果了解AutoML技术的读者肯定知道亚马逊出过一个AutoML框架,叫做AutoGluon,也正是从那时起我对gluon才有所了解,知晓这是亚马逊推出的一个深度学习框架(不过,至今也未曾深入调研和探索使用过。。),而GluonTS则是Gluon生态中用于实现时序建模的一个工具包,更确切的说是一个基于深度学习的概率时序模型工具,至于时序分析任务也是都支持时序预测和异常检测任务。

坦白地讲,GluonTS于我个人而言仅停留于阅读其官方Paper的层面,实际的工具尚未探索使用,所以对于其性能的描述也仅停留于眼见耳听,而缺乏动手实践,所以这里不做更多介绍。

关于GluonTS的相关参考信息如下:

代码语言:javascript
复制
论文:https://arxiv.org/abs/1906.05264v1
文档:https://ts.gluon.ai/
GitHub:https://github.com/awslabs/gluon-ts/(2.4k star)

05 小结

总体而言,四个时序工具包各有特色,功能覆盖各有千秋:

  • Prophet功能相对单一,仅适用于单变量的时序预测模型,而且也仅支持这一个模型。但与此同时,该模型也做到了高度专业和成熟,GitHub上的star数量高达13k之多,更是成了很多其他时序分析工具包的必备集成模型之一
  • Merlion定位于时序预测和异常检测场景,既支持单变量也支持多变量时序,模型以统计学模型和机器学习模型为主,一大亮点是支持时序建模的Auto能力和多模型的Ensemble能力
  • Darts也是时序分析工具的一个集大成者,主要面向的场景是时序预测任务,但在模型的丰富程度上更为出色,亮点是支持很多深度学习模型,包括Transformer、TCN等序列模型新星
  • GluonTS作为亚马逊Gluon生态中的时序建模工具,是一款主打深度学习模型的时序分析工具,适用任务包括时序预测和异常检测,但在模型使用灵活度方面个人感觉则要略逊于Merlion和Darts

考虑前期推文中介绍的tsfresh、tslearn、sktime三个工具,加之本文介绍的Prophet、Merlion、Darts和GluonTS四个工具,其实在应对主流的时序数据分析任务时基本是足够的。同时,以此为基础,更重要的是提升相关的理论基础,方能更好的使用和驾驭这些工具,也才不枉成为一名真正的算法工程师调包侠

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小数志 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档