Prophet

ProphetFacebook开源的时间序列预测算法,适用于具有一定规律的数据。Prophet组件通过对每一行的MTable数据,进行Prophet时间序列预测,给出下一时间段的预测结果。本文为您介绍Prophet组件的配置方法。

使用限制

支持的计算引擎为MaxCompute。

可视化配置组件参数

  • 输入桩

    输入桩(从左到右)

    数据类型

    建议上游组件

    是否必选

    数据

  • 组件参数

    页签

    参数

    描述

    字段设置

    Value

    类型是STRING,并且格式是MTable。可以通过MATBEL聚合组件构造,其中聚合的数据有一列是Datetime类型,作为时序列。MTable示例:{"data":{"ds":["2019-05-07 00:00:00.0","2019-05-08 00:00:00.0"],"val":[8588.0,8521.0]},"schema":"ds TIMESTAMP,val DOUBLE"}

    算法保留列

    选择算法保留列的名称。

    参数设置

    预测结果列名

    预测结果列的列名称。

    cap

    预测值上界。

    changepoint_prior_scale

    默认值0.05。

    change_point_range

    趋势变化点的比例,默认值0.8。

    changepoints

    突变点列表。格式以半角逗号(,)分隔。示例:2021-05-02,2021-05-07

    daily_seasonality

    是否按天拟合季节性,默认值auto。

    floor

    预测值下界。

    growth

    趋势类型,取值如下:

    • Linear(默认值)

    • Logistic

    • Flat

    节假日

    不同节假日用空格分隔,格式示例:playoff:2021-05-03,2021-01-03 superbowl:2021-02-07,2021-11-02

    holidays_prior_scale

    节假日模型参数,默认值10.0。

    include_history

    是否预测原数据中的日期对应的值。

    interval_width

    不确定区间,默认值0.8。

    mcmc_samples

    整数,进行贝叶斯推断使用的样本个数。如果是0,进行MAP估计。估计默认值100。

    n_change_point

    突变点的数目,默认值25。

    预测条数

    取值范围(0, inf),默认值12。

    预测详细信息列名

    预测详细列的列名称。

    seasonality_mode

    季节性类型,取值如下:

    • ADDITIVE(默认值)

    • MULTIPLICATIVE

    seasonality_prior_scale

    季节性模型的参数,默认值10.0。

    初始值

    初始模型,默认无初始值。

    用来计算指标的采样数目

    默认值1000。采样用于计算统计指标,如果不需要统计指标,并且需要提速,设置成0。

    weekly_seasonality

    是否按周拟合季节性,默认值auto。

    yearly_seasonality

    是否按年拟合季节性,默认值auto。

    组件多线程线程个数

    组件多线程线程个数。

    执行调优

    节点个数

    单个节点内存大小参数配对使用。取值为[1, 9999]的正整数。

    单个节点内存大小,单位M

    取值范围为1024 MB~64*1024 MB。

通过代码方式配置组件

您可以将以下代码复制到PyAlink脚本组件中,使PyAlink脚本组件实现与该组件相同的功能。

import time, datetime
import numpy as np
import pandas as pd

downloader = AlinkGlobalConfiguration.getPluginDownloader()
downloader.downloadPlugin('tf115_python_env_linux')

data = pd.DataFrame([
			[1,  datetime.datetime.fromtimestamp(1), 10.0],
			[1,  datetime.datetime.fromtimestamp(2), 11.0],
			[1,  datetime.datetime.fromtimestamp(3), 12.0],
			[1,  datetime.datetime.fromtimestamp(4), 13.0],
			[1,  datetime.datetime.fromtimestamp(5), 14.0],
			[1,  datetime.datetime.fromtimestamp(6), 15.0],
			[1,  datetime.datetime.fromtimestamp(7), 16.0],
			[1,  datetime.datetime.fromtimestamp(8), 17.0],
			[1,  datetime.datetime.fromtimestamp(9), 18.0],
			[1,  datetime.datetime.fromtimestamp(10), 19.0]
])

source = dataframeToOperator(data, schemaStr='id int, ts timestamp, val double', op_type='batch')

source.link(GroupByBatchOp()
			.setGroupByPredicate("id")
			.setSelectClause("id, mtable_agg(ts, val) as data")
		).link(ProphetBatchOp()
			.setValueCol("data")
			.setPredictNum(4)
			.setPredictionCol("pred")
		).link(FlattenMTableBatchOp()
					.setSelectedCol("pred_detail")
          .setSchemaStr("ds timestamp, yhat double")
    ).print()

相关文档

  • 您可以使用MTable展开组件,将MTable展开成Table。详情请参见MTable展开

  • 关于Designer组件更详细的内容介绍,请参见Designer概述

  • Designer预置了多种算法组件,你可以根据不同的使用场景选择合适的组件进行数据处理,详情请参见组件参考:所有组件汇总