全部產品
Search
文件中心

Platform For AI:x13_auto_arima

更新時間:Apr 03, 2025

x13_auto_arima是一個用於時間序列分析的演算法,包含自動選擇ARIMA模型的功能。該演算法基於Gomez和Maravall(1998)在TRMO(1996)及其後續修訂中實施的程式,通過自動識別和選擇最佳的ARIMA參數,以適應資料的季節性和趨勢特徵。這種自動化過程簡化了模型構建,提升了預測精度和效率。

演算法說明

x13_auto_arima選擇過程如下:

  • default model estimation

    frequency = 1時,預設模型是(0,1,1)

    frequency > 1時,預設模型是(0,1,1)(0,1,1)

  • identification of differencing orders

    如果設定了diffseasonalDiff,則跳過此步驟。

    使用Unit root test (wiki )確定差分d,和季節性差分D。

  • identification of ARMA model orders

    根據 BIC(wiki) 準則選擇最合適的模型, 其參數maxOrdermaxSeasonalOrder在此步驟起作用。

  • comparison of identified model with default model

    使用Ljung-Box Q statistic(wiki) 比較模型,如果兩個模型均是不可接受的,則使用(3,d,1)(0,D,1)模型。

  • final model checks

Arima的詳細介紹請參見wiki。演算法規模如下:

  • 支援規模

    • 行:單Group資料最大1200條

    • 列:1數值列

  • 資源計算方式

    • 不設定groupColNames,預設計算方式

      coreNum=1
      memSizePerCore=4096
    • 設定groupColNames,預設計算方式

      coreNum=floor(總資料行數/12萬)
      memSizePerCore=4096

使用限制

支援的計算引擎為MaxCompute。

組件配置

方式一:可視化方式

在Designer工作流程頁面添加x13_auto_arima組件,並在介面右側配置相關參數:

參數類型

參數

描述

欄位設定

時序列

必選,僅用來對數值列排序,具體數值與計算無關。

數值列

必選。

分組列

可選,多列以逗號(,)分隔,例如col0,col1,每個分組會構建一個時間序列。

參數設定

開始日期

支援輸入的格式為year.seasonal。例如1986.1

series頻率

支援輸入正整數,取值範圍為(0,12]

p,q最大值

支援輸入正整數,取值範圍為(0,4]

季節性p,q最大值

支援輸入數字,取值範圍為(0,2]

差分d最大值

支援輸入數字,正整數,取值範圍為(0,2]

季節性差分d最大值

支援輸入數字,正整數。取值範圍為(0, 1]

差分d

支援輸入數字,正整數。取值範圍為(0, 2]

diffmaxDiff同時設定時,maxDiff被忽略。

diffseasonalDiff要同時設定。

季節性差分d

支援輸入數字,正整數。取值範圍為(0, 1]

seasonalDiffmaxSeasonalDiff同時設定時,maxSeasonalDiff被忽略。

預測條數

預測多少條。例如用上個月每天的銷量,預測新的一周的銷量,那預測條數就是7。如果選了分組列,那每一組都會預測這麼多條。

支援輸入數字,正整數。取值範圍為(0, 120]

預測信賴區間

預設值為0.95

容忍度

可選,預設值為1e-5

最大迭代次數

支援輸入數字,正整數。預設值為1500

執行調優

核心數目

節點個數,預設自動計算。

記憶體數

單個節點記憶體大小,單位為MB。

方式二:PAI命令方式

使用PAI命令配置x13_auto_arima組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見SQL指令碼

PAI -name x13_auto_arima
    -project algo_public
    -DinputTableName=pai_ft_x13_arima_input
    -DseqColName=id
    -DvalueColName=number
    -Dstart=1949.1
    -Dfrequency=12
    -DpredictStep=12
    -DoutputPredictTableName=pai_ft_x13_arima_out_predict2
    -DoutputDetailTableName=pai_ft_x13_arima_out_detail2

參數

是否必選

預設值

描述

inputTableName

輸入表的名稱

inputTablePartitions

預設選擇所有分區

輸入表中,用於訓練的特徵列名

seqColName

時序列。僅用來對valueColName排序。

valueColName

數值列

groupColNames

分組列,多列用逗號分隔,如“col0,col1”。每個分組會構建一個時間序列

start

1.1

時序開始日期,字串,格式為year.seasonal,例如1986.1。請參見時序格式介紹

frequency

12

說明

12表示12月/年。

時序頻率,正整數,範圍為(0, 12]。請參見時序格式介紹

maxOrder

2

p,q最大值,正整數,範圍為[0,4]

maxSeasonalOrder

1

季節性p,q最大值,正整數,範圍為[0,2]

maxDiff

2

差分d最大值。正整數,範圍為[0,2]

maxSeasonalDiff

1

季節性差分d最大值。正整數,範圍為[0,1]

diff

-1

說明

取值為-1表示不指定diff。

差分d,正整數,範圍為[0,2]

diffmaxDiff同時設定時,maxDiff被忽略。

diffseasonalDiff要同時設定。

seasonalDiff

-1

說明

取值為-1表示不指定seasonalDiff。

季節性差分d。正整數,範圍為[0,1]

seasonalDiffmaxSeasonalDiff同時設定時,maxSeasonalDiff被忽略。

maxiter

1500

最大迭代次數,正整數

tol

1e-5

容忍度,DOUBLE類型。

predictStep

12

預測條數,數字,範圍為(0, 365]

confidenceLevel

0.95

預測置信水平,數字,範圍為(0, 1)。

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

    Nov

    Dec

    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

    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 xxx/airpassengers.csv pai_ft_x13_arima_input -h true;

執行PAI命令

您可以使用SQL指令碼執行如下PAI命令,也可以使用ODPS SQL節點執行如下PAI命令。

PAI -name x13_auto_arima
    -project algo_public
    -DinputTableName=pai_ft_x13_arima_input
    -DseqColName=id
    -DvalueColName=number
    -Dstart=1949.1
    -Dfrequency=12
    -DmaxOrder=4
    -DmaxSeasonalOrder=2
    -DmaxDiff=2
    -DmaxSeasonalDiff=1
    -DpredictStep=12
    -DoutputPredictTableName=pai_ft_x13_arima_auto_out_predict
    -DoutputDetailTableName=pai_ft_x13_arima_auto_out_detail

輸出說明:

  • 輸出表outputPredictTableName

    • 欄位說明

      column name

      comment

      pdate

      預測日期。

      forecast

      預測結論。

      lower

      信賴度為confidenceLevel(預設0.95)時,預測結論下界。

      upper

      信賴度為confidenceLevel(預設0.95)時,預測結論上界。

    • 資料展示

      image

  • 輸出表outputDetailTableName

    • 欄位說明

      column name

      comment

      key

      • model:表示模型

      • evaluation:表示評估結果

      • parameters:表示訓練參數

      • log:表示訓練日誌

      summary

      儲存具體資訊。

    • 資料展示

      image

常見問題

  • 為什麼預測結果都一樣?

    在模型訓練異常時,會調用均值模型,則所有預測結果都是訓練資料的均值。常見的異常包括時序差分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是基於開源X-13ARIMA-SEATS封裝的針對季節性調整的Arima演算法。您可以使用x13_arima組件進行資料處理,詳情請參見x13_auto_arima