共用方式為


Microsoft時間序列演算法

適用於: SQL Server 2019 和舊版 Analysis Services Azure Analysis Services Fabric/Power BI Premium

重要

SQL Server 2017 Analysis Services 中已淘汰數據採礦,現在已在 SQL Server 2022 Analysis Services 中停止。 檔不會更新為已淘汰和已停止的功能。 若要深入瞭解,請參閱 Analysis Services 回溯相容性

Microsoft時間序列演算法提供多個演算法,這些演算法會隨著時間優化,以預測連續值,例如產品銷售。 雖然其他Microsoft演算法,例如判定樹,需要額外的新資訊數據行做為輸入來預測趨勢,但時間序列模型則不會。 時間序列模型只能根據用來建立模型的原始數據集來預測趨勢。 當您進行預測並自動將新數據併入趨勢分析時,您也可以將新數據加入模型。

下圖顯示一般模型,用於預測一段時間內四個不同銷售區域中產品的銷售量。 圖表中顯示的模型會顯示繪製為紅色、黃色、紫色和藍色線條之每個區域的銷售額。 每個區域的行有兩個部分:

  • 歷程記錄資訊會出現在垂直線的左邊,並代表演算法用來建立模型的數據。

  • 預測的資訊會出現在垂直線右邊,並代表模型所做的預測。

源數據與預測數據的組合稱為 數列

時間序列範例

Microsoft時間序列演算法的一個重要功能是它可以執行交叉預測。 如果您使用兩個個別但相關的數列來定型演算法,您可以使用產生的模型,根據另一個數列的行為來預測一個數列的結果。 例如,觀察到某個產品的銷售額可能會影響另一個產品的預測銷售。 交叉預測也適用於建立可套用至多個數列的一般模型。 例如,特定區域的預測不穩定,因為數列缺少高質量的數據。 您可以針對所有四個區域的平均定型一般模型,然後將模型套用至個別數列,為每個區域建立更穩定的預測。

Adventure Works Cycles 的管理團隊想要預測未來一年的每月自行車銷售。 該公司特別感興趣的是,是否可以使用一個自行車型號的銷售來預測另一個模型的銷售。 透過針對過去三年的歷史數據使用Microsoft時間序列演算法,公司可以產生預測未來自行車銷售的數據採礦模型。 此外,公司可以執行交叉預測,以查看個別自行車型號的銷售趨勢是否相關。

每季,公司都計劃使用最近的銷售數據來更新模型,並將其預測更新為模型近期趨勢。 若要更正未正確或一致地更新銷售數據的商店,它們會建立一般預測模型,並使用該模型來建立所有區域的預測。

演算法的運作方式

在 SQL Server 2005 (9.x) 中,Microsoft時間序列演算法使用名為 ARTXP 的單一自動回歸時間序列方法。 ARTXP 演算法已針對短期預測進行優化,因此擅長預測數列中的下一個可能值。 從 SQL Server 2008 開始,Microsoft時間序列演算法新增了第二個演算法 ARIMA,該演算法已針對長期預測進行優化。 如需有關 ARTXP 和 ARIMA 演算法實作的詳細說明,請參閱 Microsoft 時間序列演算法技術參考

根據預設,Microsoft時間序列演算法會在分析模式和進行預測時,使用演算法的混合。 此演算法會在相同的數據上定型兩個不同的模型:一個模型使用 ARTXP 演算法,而一個模型使用 ARIMA 演算法。 然後,演算法會混合兩個模型的結果,以在可變的時間配量數目上產生最佳預測。 因為 ARTXP 最適合短期預測,所以在一系列預測開始時,其加權會更重。 不過,當您預測的時間配量進一步進入未來時,ARIMA 會更重加權。

您也可以控制演算法的混合,以偏向時間序列中的短期或長期預測。 從 SQL Server 2008 Standard 開始,您可以指定要使用的演算法:

  • 只使用 ARTXP 進行短期預測。

  • 只使用 ARIMA 進行長期預測。

  • 使用兩種演算法的預設混合。

從 SQL Server 2008 Enterprise 開始,您也可以自定義Microsoft時間序列演算法如何混合模型以進行預測。 當您使用混合模型時,Microsoft時間序列演算法會以下列方式混合這兩種演算法:

  • 只有 ARTXP 一律用於進行前幾個預測。

  • 在第一對預測之後,會使用 ARIMA 和 ARTXP 的組合。

  • 隨著預測步驟數目增加,預測會更依賴 ARIMA,直到不再使用 ARTXP 為止。

  • 您可以控制混合點、降低 ARTXP 權數的速率,以及藉由設定 PREDICTION_SMOOTHING 參數來增加 ARIMA 的權數。

這兩種演算法都可以在多個層級的數據中偵測季節性。 例如,您的數據可能包含巢狀在每年週期內的每月週期。 若要偵測這些季節性週期,您可以提供週期性提示,或指定演算法應該自動偵測週期性。

除了週期性之外,還有其他數個參數可在偵測週期性、進行預測或分析案例時控制Microsoft時間序列演算法的行為。 如需如何設定演算法參數的資訊,請參閱 Microsoft 時間序列演演算法技術參考

時間序列模型所需的數據

當您準備數據以用於定型任何數據採礦模型時,請確定您已瞭解特定模型的需求,以及數據的使用方式。

每個預測模型都必須包含案例數列,也就是指定時間配量或其他發生變更之數列的數據行。 例如,上圖中的數據會顯示數個月期間的歷史和預測自行車銷售數列。 針對此模型,每個區域都是一個數列,而日期數據行包含時間序列,這也是案例數列。 在其他模型中,案例系列可以是文字欄位或某些標識碼,例如客戶標識碼或交易標識碼。 不過,時間序列模型必須一律使用日期、時間或其他特定數值作為案例序列。

時間序列模型的需求如下:

  • 單一索引鍵時間數據行 每個模型都必須包含一個數值或日期數據行,做為案例數列,這會定義模型將使用的時間配量。 索引鍵時間數據行的數據類型可以是 datetime 數據類型或數值數據類型。 不過,數據行必須包含連續值,而且每個數列的值都必須是唯一的。 時間序列模型的案例序列無法儲存在兩個數據行中,例如 Year 資料行和月份數據行。

  • 預測數據行 每個模型至少必須包含一個可預測數據行,演算法將建置時間序列模型。 可預測數據行的數據類型必須具有連續值。 例如,您可以預測數值屬性如何隨著時間變化,例如收入、銷售或溫度。 不過,您無法使用包含離散值的數據行,例如購買狀態或教育層級,做為可預測的數據行。

  • 選擇性數列索引鍵數據行 每個模型都可以有一個額外的索引鍵數據行,其中包含識別數列的唯一值。 選擇性數列索引鍵數據行必須包含唯一值。 例如,單一模型可以包含許多產品型號的銷售,只要每次配量的每個產品名稱只有一筆記錄。

您可以透過數種不同的方式定義Microsoft時間序列模型的輸入數據。 不過,由於輸入案例的格式會影響採礦模型的定義,因此您必須考慮業務需求並據以準備數據。 下列兩個範例說明輸入數據如何影響模型。 在這兩個範例中,已完成的採礦模型包含四個不同的數列模式:

  • 產品 A 的銷售

  • 產品 B 的銷售

  • 產品 A 的磁碟區

  • 產品 B 的磁碟區

在這兩個範例中,您可以預測每個產品的新未來銷售額和數量。 您無法預測產品或時間的新值。

範例 1:以資料行值表示序列的時間序列數據集

這個範例使用下列輸入案例資料表:

TimeID 產品 銷售
1/2001 一個 1000 600
2/2001 一個 1100 500
1/2001 B 500 900
2/2001 B 300 890

數據表中的 TimeID 資料行包含時間識別碼,而且每天有兩個專案。 TimeID 數據行會變成案例數列。 因此,您會將此資料行指定為時間序列模型的關鍵時間數據行。

Product 資料行會定義資料庫中的產品。 此數據行包含產品系列。 因此,您會將此資料行指定為時間序列模型的第二個索引鍵。

[銷售] 數據行描述指定產品的毛利潤一天,而 [磁碟區] 數據行會描述保留於倉儲中的指定產品數量。 這兩個數據行包含用來定型模型的數據。 Sales 和 Volume 都可以是 Product 資料行中每個數位的可預測屬性。

範例 2:具有個別數據行中每個數列的時間序列數據集

雖然此範例基本上使用與第一個範例相同的輸入數據,但輸入數據的結構不同,如下表所示:

TimeID A_Sales A_Volume B_Sales B_Volume
1/2001 1000 600 500 900
2/2001 1100 500 300 890

在此數據表中,TimeID 資料行仍然包含您指定為索引鍵時間數據行的時間序列時間序列的時間序列。 不過,先前的 Sales 和 Volume 數據行現在會分割成兩個數據行,而且每個數據行前面都會加上產品名稱。 因此,TimeID 數據行中每天只有一個專案存在。 這會建立時間序列模型,其中包含四個可預測的數據行:A_Sales、A_Volume、B_Sales和B_Volume。

此外,由於您已將產品分成不同的數據行,因此不需要指定其他數列索引鍵數據行。 模型中的所有數據行都是案例數列數據行或可預測的數據行。

檢視時間序列模型

定型模型之後,結果會儲存為一組模式,您可以探索或使用來進行預測。

若要探索模型,您可以使用 時間序列檢視器。 查看器包含顯示未來預測的圖表,以及數據中定期結構的樹視圖。

如果您要深入瞭解如何計算預測,您可以在 Microsoft 一般內容樹檢視器中流覽模型,。 為模型儲存的內容包含詳細數據,例如 ARIMA 和 ARTXP 演算法偵測到的定期結構、用來混合演算法的方程式和其他統計數據。

建立時間序列預測

根據預設,當您檢視時間序列模型時,SQL Server Analysis Services 會顯示數列的五個預測。 不過,您可以建立查詢來傳回可變數目的預測,而且您可以將額外的數據行傳回預測,以傳回描述性統計數據。 如需如何針對時間序列模型建立查詢的詳細資訊,請參閱 時間序列模型查詢範例。 如需如何使用資料採礦延伸模組 (DMX) 進行時間序列預測的範例,請參閱 PredictTimeSeries (DMX)

使用Microsoft時間序列演算法進行預測時,您應該考慮下列額外的限制和需求:

  • 只有當您使用混合模型,或只根據 ARTXP 演算法使用模型時,才能使用交叉預測。 如果您只根據 ARIMA 演算法使用模型,則無法進行交叉預測。

  • 時間序列模型可能會根據伺服器所使用的64位操作系統,做出不同有時顯著差異的預測。 這些差異是因為以Itanium 為基礎的系統代表和處理浮點算術的數位的方式而發生,這與 x64 型系統執行這些計算的方式不同。 由於預測結果可能專屬於操作系統,因此建議您在生產環境中所使用的相同操作系統上評估模型。

言論

  • 不支援使用預測模型標記語言 (PMML) 來建立採礦模型。

  • 支援使用 OLAP 採礦模型。

  • 不支援建立數據採礦維度。

  • 支援鑽研。

另請參閱

數據採礦演算法 (Analysis Services - 數據採礦)
使用Microsoft時間序列查看器流覽模型
Microsoft 時間序列演算法技術參考
時間序列模型查詢範例
時間序列模型的採礦模型內容 (Analysis Services - 數據採礦)