2020.02.21

用了facebook的prophet的包,记录下prophet的一些调参情况。

--安装

环境python3.6。春节回家只带了windows本。Windows 10花了足足一天时间也没装上,试了windows+R和windows+anaconda+python都不行,期间还装了好多依赖包,比如R下的Rtools、tidyr,python下的stringi什么的。网上查了好多用户反馈,确有一些成功案例。尝试了网上多种可能解决error的方法,如windows默认没有管理员权限、lib路径问题等,最后压死我这个骆驼的是发现可能是C++编译器出了问题,因我一直就搞不懂windows下的C++编译器到底装在哪里,是否默认已安装。决定弃疗。总结:windows装包全靠运气。以及中间多次用到的tuna镜像真是业界良心。

队友的mac安装顺利。想到我为windows10花费的一整天,吐血。

--输入

prophet对输入的要求:The input to Prophet is always a dataframe with two columns: ds and y. The ds (datestamp) column should be of a format expected by Pandas, ideally YYYY-MM-DD for a date or YYYY-MM-DD HH:MM:SS for a timestamp. The y column must be numeric, and represents the measurement we wish to forecast.

--模型和调参

prophet主要是把数据分解了下,分为趋势+季节+节假日,其主要好处是可处理规模稍大的数据(我理解主要是原理简单),然后使用简易(就是参数少,需要研究的内容少)。预测模型只有两种linear、logistic。

重要参数changepoint_prior_scale。doc里的解释为'Adjusting trend flexibility'。If the trend changes are being overfit (too much flexibility) or underfit (not enough flexibility), you can adjust the strength of the sparse prior using the input argument changepoint_prior_scale. By default, this parameter is set to 0.05. Increasing it will make the trend more flexible. 这个参数调了很久。

做了两个不同样本的case。

case1。已有data大概30个点,第25个点左右有个转折,前半段单升后半段单降。forecast要么直接按后半段直降,要么忽略后期下降,跟着前半段升。其实forecast单升或者单降是无可厚非的,但问题存在于,单升或单降的斜率比较大。对这种前半段单升后半段单降的历史值,根据我们愚蠢人类的感性理解,forecast段可能要斜率小一些,才比较稳妥。因此开始调参。本来希望通过调整changepoint_prior_scale使得forecast能够按照上述理解降低幅度,但现实情况是有突变。一直用二分法往下找changepoint_prior_scale,无果。最后找到>0.115,单降;<0.115单升。放弃治疗。

调参结果:n_changepoints=8,changepoint_prior_scale=0.12,changepoint_range=0.9

case2。已有样本数据基本单调,相对简单。没怎么调参,这个case只是试一下(所以图看上去有点过拟合)。这种简易情况换ARIMA或者直接线性回归估计也能行。

两个case仅按照doc的功能使用,只有一个功能出了问题,画changepoints的时候,a = add_changepoints_to_plot(fig.gca(), m, forecast)报错,也是一个和pandas相关的依赖包装不上,stackoverflow上有人同样问题且目前解决不了,版本bug。手动画,无伤大雅。

--输出

可以给出向前若干forecasts的上下限值,出图样子还可以。

--总结

针对我的两个case,prophet的主要好处还是简易。

--ref

官方doc fbprophet doc 

作者关于这个包的论文,发在了PeerJ Preprints上(这个好像和PeerJ没啥关系?)fbprophet论文

btw,查了下prophet的意思,先知。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容

  • Print Newspapers 来源: 2016年考研英语(二)Text 4 官方翻译 There will e...
    大Pei阅读 933评论 0 1
  • 讲真,年纪大了,对过生日越来越无感。 前几天我家直男说:“今年你生日,我正好放假了。”这是暗示我有重大惊喜么? 于...
    走路带风的老妖精阅读 2,368评论 2 16
  • 临江仙 日暮村边散步,林间归鸟喧哗。薇花鲜艳沐余霞。柳荫垂钓客,溪绕泽农家。 假日余期企至,重回官府...
    书中樵夫阅读 1,249评论 23 66
  • 英昰国 摄政王府。 “府里新来的幕僚你可曾见过?神秘的紧。” “那人轻易不走动,很少露面,那日我去送茶水,只见一张...
    Grumpy_6e0a阅读 282评论 0 0
  • 我演过一个剧本 那是悲伤的剧本 编剧是我 人生是我的舞台 然而 它只是一个剧本 表演者是我 但又不是我 若知前因后...
    醉金甲阅读 235评论 3 0