13-arima是基于开源X-13ARIMA-SEATS封装的针对季节性调整的Arima算法。

背景信息

Arima全称为自回归积分滑动平均模型(Autoregressive Integrated Moving Average Model),是由博克思(Box)和詹金斯(Jenkins)于70年代初提出的著名时间序列预测方法,所以又称为box-jenkins模型、博克思-詹金斯法。

可视化

下面为您介绍可视化配置x13_arima时间序列组件的参数:
页签 参数 描述
字段设置 时序列 必选,仅用来对数值列排序,具体数值与计算无关。
数值列 必选
分组列 可选,多列以逗号(,)分隔,例如col0,col1,每个分组会构建一个时间序列。
参数设置 格式 支持输入的格式为p,d,q。 p、d和q均为非负整数,取值范围为[0, 36]
  • p:自回归系数
  • d:差分
  • q:滑动回归系数
开始日期 支持输入的格式为year.seasonal。例如1986.1
series频率 支持输入正整数,取值范围为12
格式 支持输入的格式为sp,sd,sq。sp、sd和sq均为非负整数,取值范围为[0, 36]
  • sp:季节性自回归系数
  • sd:季节性差分
  • sq:季节性滑动回归系数
seasonal周期 支持输入数字,取值范围为(0,12]。默认值为12
预测条数 支持输入数字,取值范围为(0,120]。默认值为12
预测置信水平 支持输入数字,取值范围为(0, 1)默认值为0.95
执行调优 核数目 节点个数,默认自动计算。
内存数 单个节点内存大小,单位为MB。

命令方式

PAI -name x13_arima
    -project algo_public
    -DinputTableName=pai_ft_x13_arima_input
    -DseqColName=id
    -DvalueColName=number
    -Dorder=3,1,1
    -Dstart=1949.1
    -Dfrequency=12
    -Dseasonal=0,1,1
    -Dperiod=12
    -DpredictStep=12
    -DoutputPredictTableName=pai_ft_x13_arima_out_predict
    -DoutputDetailTableName=pai_ft_x13_arima_out_detail
参数 是否必选 描述 默认值
inputTableName 输入表的名称。
inputTablePartitions 输入表中,用于训练的特征列名。 默认选择所有分区
seqColName 时序列。仅用来对valueColName排序。
valueColName 数值列。
groupColNames 分组列,多列用逗号分隔,例如col0,col1。每个分组会构建一个时间序列。
order p、d和q分别表示自回归系数、差分、滑动回归系数。取值均为非负整数,范围为[0, 36]
start 时序开始日期。字符串类型,格式为year.seasonal,例如1986.1。请参见时序格式介绍 1.1
frequency 时序频率。正整数类型,范围为(0, 12]。请参见时序格式介绍 12
说明 12表示12月/年。
seasonal sp、sd和sq分别表示季节性自回归系数、季节性差分、季节性滑动回归系数。取值均为非负整数,范围为[0, 36] 无seasonal
period seasonal周期。数字类型,取值范围为(0, 100] frequency
maxiter 最大迭代次数。正整数类型。 1500
tol 容忍度,DOUBLE类型。 1e-5
predictStep 预测条数。数字类型,取值范围为(0, 365] 12
confidenceLevel 预测置信水平。数字类型,取值范围为(0, 1) 0.95
outputPredictTableName 预测输出表。
outputDetailTableName 详细信息表。
outputTablePartition 输出分区,分区名。 默认不输出到分区
coreNum 节点个数,与参数memSizePerCore配对使用,正整数。 默认自动计算
memSizePerCore 单个节点内存大小,单位为MB。正整数,取值范围为[1024, 64 *1024] 默认自动计算
lifecycle 指定输出表的生命周期。 默认没有生命周期

时序格式介绍

参数startfrequency规定了数据(valueColName)的两个时间维度ts1、ts2:
  • frequency:表示单位周期内数据的频率,即单位ts1中ts2的频率。
  • start:格式为n1.n2,表示开始日期是第n1个ts1中的第n2个ts2。
单位时间 ts1 ts2 frequency start
12月/年 12 1949.2 表示第1949年中的第2个月
4季/年 4 1949.2 表示第1949年中的第2个季度
7天/周 7 1949.2 表示第1949周中的第2天
1 任何时间单位 1 1 1949.1 表示第1949(年、天、时等)
例如value=[1,2,3,5,6,7,8,9,10,11,12,13,14,15]
  • start=1949.3,frequency=12表示数据是12月/年,预测开始日期是1950.06。
    year Jan Feb Mar Apr May Jun Jul Aug Sep Oct
    1949 1 2 3 4 5 6 7 8 9 10
    1950 11 12 13 14 15
  • start=1949.3,frequency=4表示数据是4季/年,预测开始的日期是1953.02。
    year Qtr1 Qtr2 Qtr3 Qtr4
    1949 1 2
    1950 3 4 5 6
    1951 7 8 9 10
    1952 11 12 13 14
    1953 14 15
  • start=1949.3,frequency=7表示数据是7天/周,预测开始的日期是1951.04。
    week Sun Mon Tue Wed Thu Fri Sat
    1949 1 2 3 4 5
    1950 6 7 8 9 10 11 12
    1951 13 14 15
  • start=1949.1,frequency=1表示任何时间单位,预测开始日期是1963.00。
    cycle p1
    1949 1
    1950 2
    1951 3
    1952 4
    1953 5
    1954 6
    1955 7
    1956 8
    1957 9
    1958 10
    1959 11
    1960 12
    1961 13
    1962 14
    1963 15

具体示例

测试数据

使用的数据集为 AirPassengers
id number
1 112
2 118
3 132
4 129
5 121
... ...
使用tunnel命令行工具上传数据,命令如下。
create table pai_ft_x13_arima_input(id bigint,number bigint);
tunnel upload data/airpassengers.csv pai_ft_x13_arima_input -h true;
PAI 命令
PAI -name x13_arima
    -project algo_public
    -DinputTableName=pai_ft_x13_arima_input
    -DseqColName=id
    -DvalueColName=number
    -Dorder=3,1,1
    -Dseasonal=0,1,1
    -Dstart=1949.1
    -Dfrequency=12
    -Dperiod=12
    -DpredictStep=12
    -DoutputPredictTableName=pai_ft_x13_arima_out_predict
    -DoutputDetailTableName=pai_ft_x13_arima_out_detail
输出说明
  • 输出表outputPredictTableName
    column name comment
    pdate 预测日期。
    forecast 预测结论。
    lower 置信度为 confidenceLevel(默认0.95)时,预测结论下界。
    upper 置信度为 confidenceLevel(默认0.95)时,预测结论上界。
    数据展示如下。1
  • 输出表outputDetailTableName
    字段说明
    column name comment
    key
    • model:表示模型
    • evaluation:表示评估结果
    • parameters:表示训练参数
    • log:表示训练日志
    summary 存储具体信息
    数据展示3
    PaiWeb展示-模型系数(key=model)4
    PaiWeb展示-评估指标(key=evaluation)5

算法规模

  • 支持规模
    • 行:单group数据最大1200条
    • 列:1数值列
  • 资源计算方式
    • 不设置groupColNames,默认计算方式

      coreNum = 1

      memSizePerCore = 4096

    • 设置groupColNames,默认计算方式

      coreNum = floor(总数据行数 / 12万)

      memSizePerCore = 4096

常见问题

为什么预测结果都一样?

在模型训练异常时,会调用均值模型,则所有预测结果都是训练数据的均值。

常见的异常包括时序差分diff后不稳定训练没有收敛方差为0等,可以在logview中查看单独节点的stderr文件,获取具体的异常信息。