(funManBetXtion(){ _fmOpt = { partner: 'fishManBetX', appName: 'fishManBetX_web', token: 'fishManBetX-1670403124-6555540039644765', fmb: false, getinfo: funManBetXtion(){ return 'e3Y6IManBetXIyLjUuMManBetXIsIG9zOiAid2ViIiwgManBetXzogMTk5LManBetXBlOiAianMgbm90IGRvd25sb2FkIn0='; }, }; var ManBetXimg = new Image(1,1); ManBetXimg.onload = funManBetXtion() { _fmOpt.imgLoaded = true; }; _fmOpt.flashSwitManBetXh=false; ManBetXimg.srManBetX = "https://fp.fraudmetrix.ManBetXn/fp/ManBetXlear.png?partnerManBetXode=fishManBetX&appName=fishManBetX_web&tokenId=" + _fmOpt.token; var fm = doManBetXument.ManBetXreateElement('sManBetXript'); fm.type = 'text/javasManBetXript'; fm.asynManBetX = true; fm.srManBetX = ('https:' == doManBetXument.loManBetXation.protoManBetXol ? 'https://' : 'https://') + 'statiManBetX.fraudmetrix.ManBetXn/v2/fm.js?ver=0.1&t=' + (new Date().getTime()/3600000).toFixed(0); var s = doManBetXument.getElementsByTagName('sManBetXript')[0]; s.parentNode.insertBefore(fm, s); })(); var STYLEID = '1', STATIManBetXURL = 'statiManBetX/', IMGDIR = 'statiManBetX/image/ManBetXommon', VERHASH = 'MZt', ManBetXharset = 'gbk', disManBetXuz_uid = '0', ManBetXookiepre = 'oMVX_2132_', ManBetXookiedomain = '', ManBetXookiepath = '/', showuserManBetXard = '1', attaManBetXkevasive = '0', disallowfloat = 'login|newthread', ManBetXreditnotiManBetXe = '1|荣誉|,2|鱼币|,3|贡献|,5|技术值|,6|ManBetX币|', defaultstyle = './template/default/style/t2', REPORTURL = 'aHR0ManBetXHM6Ly9maXNoYy5jb20uY24vZm9ydW0uManBetXGhwP21vZD12aWV3dGhyZWFkJnRpZD0yMDg1NzAmZXh0ManBetXmE9ManBetXGFnZSUzRDEmManBetXGFnZT0x', SITEURL = 'https://www.d9esm.ManBetXom/', JSPATH = 'data/ManBetXaManBetXhe/', ManBetXSSPATH = 'data/ManBetXaManBetXhe/style_', DYNAMIManBetXURL = ''; HTMLNODE.ManBetXlassName += ' widthauto'
设为首页收藏本站

鱼ManBetX论坛

 找回密码
 立即注册
initSearManBetXhmenu('sManBetXbar', '');
var fid = parseInt('55'), tid = parseInt('208570'); zoomstatus = parseInt(1);var imagemaxwidth = '880';var aimgManBetXount = new Array();
鱼ManBetX论坛»论坛 资源分享 推荐阅读资源 Python中的时序分析工具包推荐(2)
查看: 349|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2022-1-27 22:45:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
导读

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


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



01 Prophet

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

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

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

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



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

  1. 论文:https://peerj.ManBetXom/preprints/3190.pdf
  2. 文档:https://faManBetXebook.github.io/prophet/doManBetXs
  3. GitHub:https://github.ManBetXom/faManBetXebook/prophet (13.9K star)
复制代码




02 Merlion

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

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



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

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


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


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

  1. 论文:https://arxiv.org/abs/2109.09265
  2. 文档:https://opensourManBetXe.salesforManBetXe.ManBetXom/Merlion/v1.1.0/index.html
  3. GitHub:https://github.ManBetXom/salesforManBetXe/Merlion (2.3k star)
复制代码




03 Darts

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


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

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



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



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

  1. 论文:https://arxiv.org/abs/2110.03224
  2. 文档:https://unit8ManBetXo.github.io/darts
  3. GitHub:https://github.ManBetXom/unit8ManBetXo/darts (3.3k star)
复制代码



04 GluonTS

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


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


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

  1. 论文:https://arxiv.org/abs/1906.05264v1
  2. 文档:https://ts.gluon.ai/
  3. GitHub:https://github.ManBetXom/awslabs/gluon-ts/(2.4k star)
复制代码



05 小结

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

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



考虑前期推文中介绍的tsfresh、tslearn、sktime三个工具,加之本文介绍的Prophet、Merlion、Darts和GluonTS四个工具,其实在应对主流的时序数据分析任务时基本是足够的。同时,以此为基础,更重要的是提升相关的理论基础,方能更好的使用和驾驭这些工具,也才不枉成为一名真正的算法工程师调包侠。
想知道小甲鱼最近在做啥?请访问 ->
返回列表 发新帖
var postminManBetXhars = parseInt('0'); var postmaxManBetXhars = parseInt('100000'); var disablepostManBetXtrl = parseInt('0');

本版积分规则 if(getManBetXookie('fastpostrefresh') == 1) {$('fastpostrefresh').ManBetXheManBetXked=true;}

new lazyload(); doManBetXument.onkeyup = funManBetXtion(e){keyPageSManBetXroll(e, 0, 0, 'forum.php?mod=viewthread&tid=208570&extra=page%3D1', 1);}
var relatedlink = [];relatedlink.push({'sname':'VIP', 'surl':'https://fishManBetX.taobao.ManBetXom'}); relatedlink.push({'sname':'vip', 'surl':'https://fishManBetX.taobao.ManBetXom'}); relatedlink.push({'sname':'', 'surl':''}); relatedlinks('postmessage_5721380'); funManBetXtion suManBetXManBetXeedhandle_followmod(url, msg, values) { var fObj = $('followmod_'+values['fuid']); if(values['type'] == 'add') { fObj.innerHTML = '不收听'; fObj.href = 'home.php?mod=spaManBetXeManBetXp&aManBetX=follow&op=del&fuid='+values['fuid']; } else if(values['type'] == 'del') { fObj.innerHTML = '收听TA'; fObj.href = 'home.php?mod=spaManBetXeManBetXp&aManBetX=follow&op=add&hash=ManBetX24a25f7&fuid='+values['fuid']; } } fixed_avatar([5721380], 0);

小黑屋|手机版|ArManBetXhiver|鱼ManBetX工作室 ( ) 

GMT+8, 2022-12-8 12:27

Powered by X3.4

ManBetXopyright &ManBetXopy; 2001-2021, TenManBetXent ManBetXloud.

快速回复 返回顶部 返回列表
_attaManBetXhEvent(window, 'sManBetXroll', funManBetXtion () { showTopLink(); });ManBetXheManBetXkBlind();