Mozilla simpleprophet预测框架。

simpleprophet的Python项目详细描述


simpleprophet KPI预测模型和工具

这个目录包含simpleprophet预测模型和附带的工具。simpleprophet模型优先考虑简单性和稳定性,只有在延迟期显著提高模型性能时才会增加复杂性和“弯曲性”。在

设置

您将需要一个带有fbprophet和一些其他的python环境 已安装依赖项。我们提供了一个可以从GCR中提取的Docker图像 以交互方式运行,如:

GOOGLE_APPLICATION_CREDENTIALS=/path/to/creds.json
docker run -it \
  -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/key.json \
  -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/key.json:ro \
  --entrypoint python \
  gcr.io/moz-fx-data-forecasting/simpleprophet

也可以进行代码更新并在本地生成映像:

^{pr2}$

如果要在docker之外生成本地环境,可以创建 通过conda env create -f environment.yml适当的Conda环境。 要在Conda外部创建环境,请参见 ^{} installation instructions 然后使用pip install -r requirements.txt安装其余的依赖项。在

使用

运行预测管道的函数在pipeline.py中。可以每天运行update_table函数,根据需要向输出表添加行,以合并新可用的度量数据。replace_table函数将清除输出表并从头开始重新生成它。在

对于模型构建,modeling.py中的代码可能很有用。它包含了一个函数,用于在保持集上评估模型并提供一些有用的可视化效果。在

validations.py文件包含生成绘图的代码,这些绘图用于评估模型性能并验证模型行为随时间的推移是否合理。它也可以用来比较多个模型。在

建模策略

models.py文件包含生产模型规范。这些模型是Jesse McCrosky使用fbprophet框架开发的。指导建模的理念是以简单和直观的拟合为指导,同时使用传统类型的定量证据告知建模过程。在

预测的评估基本上是多维的。除了稳定性、准确性和无偏差等竞争性目标外,每个目标都可以在多个时间范围内进行评估。这种复杂性使得纯机器学习优化方法极其复杂。在

作为一种选择,我选择在某种程度上符合模型。对参数集进行迭代研究,并对每次迭代进行可视化评估,以查看模型组件(季节性和趋势)是否与观察到的实际情况相符。一旦确定了一个合理的参数空间,建模过程就开始对一组模型进行保留集度量和其他定量评估。更简单的模型是首选的,只有在有定量证据明确证明的情况下才增加复杂性。在

一些相关的车型特征:

  • 由于MAU作为一个度量标准的“平滑”性质,每年的季节性足以捕捉除复活节以外的所有假日影响,复活节作为模型组成部分包含在内。在
  • 通常情况下,在训练开始时,我们选择的是一个非常有帮助的指标,这对于训练的第一个阶段来说并不是很有帮助的。在
  • 类似地,一些产品指标也有“异常”现象,即度量值非常不典型的时期,通常是由于数据问题。这些时期不包括在培训数据中。在
  • 通过对公制图的手工检查,确定了合适的开始日期和异常周期。在

部署

为了部署到PyPI,repo上的管理员可以在semver之后发布一个新版本 (例如0.1.0),它将触发一个CircleCI构建来发布 以该标记名作为版本的PyPI的新包。在


有关详细信息,请联系jmccrosky@mozilla.com

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java是用来加速集合中对象查找的哈希代码吗?   java在Servlet中执行后将JSP请求重定向到自身   JavaHTTPStatus415使用Ajax将Json数据发布到SpringMVC4也使用了SpringSecurity   java为什么谷歌应用引擎MySQL JDBC URL不与数据库连接?   多线程Java:强制停止ExecutorService线程   java使用For循环向组合框添加值   java子Git“内存不足”和“超出GC开销限制”   使用正则表达式运行计算器程序时出现java NumberFormatException   java MockMvc测试POST请求返回错误:实际调用有不同的参数:   java自动在虚拟机内移动鼠标,与真实的鼠标无关   当类位于类路径上时,java Surefire抛出SurefireReflectionException   java GroupLayout错误:找不到错误的行   SpringHibernateJava。lang.NoSuchFieldError:实例   从一个java密钥库生成多个个人证书的身份验证   java 1.6.013中的eclipse@WebServlet注释支持   java Spring Webservicetemplate连接重置错误   spring如何修复SqlRowSet上的“无效游标SQL异常”。Java中的Next()   java Websphere版本迁移