x13_arima是基于開源X-13ARIMA-SEATS封裝的針對季節性調整的Arima算法。 本文為您介紹x13_arima組件的配置方法。
背景信息
Arima全稱為自回歸積分滑動平均模型(Autoregressive Integrated Moving Average Model),是由博克思(Box)和詹金斯(Jenkins)于70年代初提出的著名時間序列預測方法,所以又稱為box-jenkins模型、博克思-詹金斯法。
算法規模如下:
支持規模
行:單Group數據最大1200條
列:1數值列
資源計算方式
不設置groupColNames,默認計算方式
coreNum=1 memSizePerCore=4096
設置groupColNames,默認計算方式
coreNum=floor(總數據行數/12萬) memSizePerCore=4096
組件配置
您可以使用以下任意一種方式,配置字x13_arima組件參數。
方式一:可視化方式
在Designer工作流頁面配置組件參數。
頁簽 | 參數 | 描述 |
字段設置 | 時序列 | 必選,僅用來對數值列排序,具體數值與計算無關。 |
數值列 | 必選。 | |
分組列 | 可選,多列以半角逗號(,)分隔,例如col0,col1,每個分組會構建一個時間序列。 | |
參數設置 | 格式 | 支持輸入的格式為p,d,q。 p、d和q均為非負整數,取值范圍為[0, 36]。
|
開始日期 | 支持輸入的格式為year.seasonal。例如1986.1。 | |
series頻率 | 支持輸入正整數,取值范圍為12。 | |
格式 | 支持輸入的格式為sp,sd,sq。sp、sd和sq均為非負整數,取值范圍為[0, 36]。
| |
seasonal周期 | 支持輸入數字,取值范圍為(0,12]。默認值為12。 | |
預測條數 | 支持輸入數字,取值范圍為(0,120]。默認值為12。 | |
預測置信水平 | 支持輸入數字,取值范圍為(0, 1)默認值為0.95。 | |
執行調優 | 核數目 | 節點個數,默認自動計算。 |
內存數 | 單個節點內存大小,單位為MB。 |
方式二:PAI命令方式
使用PAI命令方式,配置該組件參數。您可以使用SQL腳本組件進行PAI命令調用,詳情請參見SQL腳本。
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 | 否 | 指定輸出表的生命周期。 | 默認沒有生命周期 |
時序格式介紹
參數start和frequency規定了數據(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.csv,是1949~1960年每個月國際航空的乘客數量,如下表所示。關于該數據集更詳細的內容介紹,請參見AirPassengers。
id | number |
1 | 112 |
2 | 118 |
3 | 132 |
4 | 129 |
5 | 121 |
... | ... |
使用MaxCompute客戶端的Tunnel命令上傳數據,命令如下。關于MaxCompute客戶端的安裝及配置請參見使用本地客戶端(odpscmd)連接,關于Tunnel命令使用詳情請參見Tunnel命令。
create table pai_ft_x13_arima_input(id bigint,number bigint);
tunnel upload xxxx/airpassengers.csv pai_ft_x13_arima_input -h true;
執行PAI 命令
您可以使用SQL腳本執行如下PAI命令,也可以使用ODPS SQL節點執行如下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)時,預測結論上界。
數據展示
輸出表outputDetailTableName
字段說明
column name
comment
key
model:表示模型
evaluation:表示評估結果
parameters:表示訓練參數
log:表示訓練日志
summary
存儲具體信息。
數據展示
常見問題
為什么預測結果都一樣?
在模型訓練異常時,會調用均值模型,則所有預測結果都是訓練數據的均值。常見的異常包括時序差分diff后不穩定、訓練沒有收斂、方差為0等,您可以在logview中查看單獨節點的stderr文件,獲取具體的異常信息。
參數非常多,如何設置?
x13_arima組件需要設置p、d、q、sp、sd和sq等參數,如果不確定如何配置,建議使用
x13_auto_arima組件。該組件只需設置上界,系統會自動搜索最優參數。
異常信息:
ERROR: Number of observations after differencing and/or conditional AR estimation is 9, which is less than the minimum series length required for the model estimated, 24
異常原因為數據較少,請調整頻率,或增加數據。
異常信息:
ERROR: Order of the MA operator is too large
異常原因為數據較少。
異常信息:
ERROR: Series to be modelled and/or seasonally adjusted must have at least 3 complete years of data
如果填寫了季節性參數,則需要3年的數據。
相關文檔
x13_arima組件需要設置p、d、q、sp、sd和sq等參數,如果不確定如何配置,建議使用x13_auto_arima組件。該組件只需設置上界,系統會自動搜索最優參數。詳情請參見x13_auto_arima。