當您針對數據採礦模型建立查詢時,您可以建立內容查詢,以提供分析中探索到之模式的詳細數據,或者您可以建立預測查詢,該查詢會使用模型中的模式來為新數據進行預測。 例如,時間序列模型的內容查詢可能會提供有關偵測到之定期結構的其他詳細數據,而預測查詢可能會提供您未來 5-10 個時間配量的預測。 您也可以使用查詢來擷取模型的相關元數據。
本節說明如何針對以Microsoft時間序列演算法為基礎的模型建立這兩種查詢。
內容查詢
預測查詢
取得時間序列模型的相關信息
模型內容查詢可以提供模型的基本資訊,例如建立模型時所使用的參數、上次處理模型的時間。 下列範例說明使用數據採礦架構數據列集來查詢模型內容的基本語法。
範例查詢 1:擷取模型的週期性提示
您可以藉由查詢 ARIMA 樹狀結構或 ARTXP 樹狀結構,擷取時間序列中找到的週期性。 不過,完成模型中的週期性可能與建立模型時指定為提示的期間不同。 若要擷取建立模型時以參數的形式提供的提示,您可以使用下列 DMX 語句來查詢採礦模型內容架構數據列集:
SELECT MINING_PARAMETERS
FROM $system.DMSCHEMA_MINING_MODELS
WHERE MODEL_NAME = '<model name>'
部分結果:
| 挖礦參數 |
|---|
| COMPLEXITY_PENALTY=0.1,MINIMUM_SUPPORT=10,PERIODICITY_HINT={1,3},.... |
默認的週期性提示是 {1} 並出現在所有模型中;此範例模型是以其他提示建立,而該提示可能不存在於最終模型中。
備註
這裡已截斷結果以取得可讀性。
範例查詢 2:擷取 ARIMA 模型的方程式
您可以藉由查詢個別樹狀結構中的任何節點來擷取 ARIMA 模型的方程式。 請記住,ARIMA 模型中的每個樹狀結構都代表不同的週期性,如果有多個數據系列,則每個數據系列都會有自己的一組週期性樹狀結構。 因此,若要擷取特定數據系列的方程式,您必須先識別樹狀結構。
例如,TA 前置詞會告訴您節點是 ARIMA 樹狀結構的一部分,而 TS 前置詞則用於 ARTXP 樹狀結構。 您可以查詢具有 NODE_TYPE 值為 27 之節點的模型內容,以尋找所有 ARIMA 根樹。 您也可以使用 ATTRIBUTE_NAME 的值來尋找特定資料系列的 ARIMA 根節點。 此查詢範例會尋找代表歐洲區域中 R250 模型銷售數量的 ARIMA 節點。
SELECT NODE_UNIQUE_NAME
FROM Forecasting.CONTENT
WHERE ATTRIBUTE_NAME = 'R250 Europe: Quantity"
AND NODE_TYPE = 27
藉由使用此節點識別碼,您可以擷取此樹狀結構 ARIMA 方程式的詳細數據。 下列 DMX 語句會擷取數據系列之 ARIMA 方程式的簡短形式。 它也會從嵌套表格 NODE_DISTRIBUTION 擷取截距。 在此範例中,會參考節點唯一標識符TA00000007來取得方程式。 不過,您可能必須使用不同的節點標識碼,而且可能會從模型取得稍微不同的結果。
SELECT FLATTENED NODE_CAPTION as [Short equation],
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE
FROM NODE_DISTRIBUTION) as t
FROM Forecasting.CONTENT
WHERE NODE_NAME = 'TA00000007'
範例結果︰
| 簡短方程式 | t.屬性名稱 | t.屬性值 |
|---|---|---|
| ARIMA (2,0,7)x(1,0,2)(12) | R250 歐洲:數量(截距) | 15.24.... |
| ARIMA (2,0,7)x(1,0,2)(12) | R250 歐洲:數值(周期) | 1 |
| ARIMA (2,0,7)x(1,0,2)(12) | R250 歐洲:數量(週期性) | 12 |
如需如何解譯此資訊的詳細資訊,請參閱時間序列模型的採礦模型內容(Analysis Services - 數據採礦)。
範例查詢 3:擷取 ARTXP 模型的方程式
針對 ARTxp 模型,不同的資訊會儲存在樹狀結構的每個層級。 如需 ARTxp 模型結構的詳細資訊,以及如何解譯方程式中的資訊,請參閱時間序列模型的採礦模型內容(Analysis Services - 數據採礦)。
下列 DMX 語句會擷取 ARTxp 樹狀結構的一部分資訊,代表歐洲 R250 模型的銷售額。
備註
巢狀數據表的欄位名稱 VARIANCE 必須以方括號括住,以便與相同名稱的保留關鍵詞區分。 巢狀數據表數據行 PROBABILITY 和 SUPPORT 不會包含,因為它們在大部分情況下都是空白的。
SELECT NODE_CAPTION as [Split information],
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE,
[VARIANCE]
FROM NODE_DISTRIBUTION) AS t
FROM Forecasting.CONTENT
WHERE NODE_ATTRIBUTE_NAME = 'R250 Europe:Quantity'
AND NODE_TYPE = 15
如需如何解譯此資訊的詳細資訊,請參閱時間序列模型的採礦模型內容(Analysis Services - 數據採礦)。
在時間序列模型上建立預測
從 SQL Server 2008 Enterprise 開始,您可以將新數據新增至時間序列模型,並自動將新數據併入模型中。 您可以使用下列兩種方式之一,將新資料新增至時間序列採礦模型:
使用
PREDICTION JOIN將外部來源的數據合併至訓練數據。使用單例預測查詢一次提供一份數據。 如需如何建立單一預測查詢的詳細資訊,請參閱 數據採礦查詢介面。
瞭解取代和擴充操作的行為
當您將新資料加入時間序列模型時,可以指定是要擴充或取代定型資料:
擴展: 當您擴充數據系列時,Analysis Services 會在現有定型數據結尾新增新數據。 訓練案例的數目也會增加。
擴充模型案例對於使用新數據持續更新模型很有用。 例如,如果您想要讓定型集隨著時間成長,您只需擴充模型即可。
若要擴充數據,您可以在時間序列模型上建立
PREDICTION JOIN,並指定新數據的來源,並使用EXTEND_MODEL_CASES自變數。取代: 當您取代數據系列中的數據時,Analysis Services 會保留定型的模型,但會使用新的數據值來取代部分或所有現有的定型案例。 因此,訓練數據的大小永遠不變,但案例本身會不斷地以更新的數據替代。 如果您提供足夠的新數據,您可以將定型數據取代為全新的數列。
當您想要在一組案例上定型模型,然後將該模型套用至不同的數據系列時,取代模型案例很有用。
若要取代數據,您可以在時間序列模型上建立
PREDICTION JOIN,並指定新數據的來源,並使用REPLACE_MODEL_CASES自變數。
備註
當您新增資料時,您無法進行歷程記錄預測。
無論您是否擴充或取代定型數據,預測一律會從結束原始定型集的時間戳開始。 換句話說,如果您的新數據包含 n 個時間片段,並且您要求時間步驟 1 到 n 的預測,則這些預測將會與新數據的期間相一致,您不會得到任何新的預測。
若要取得與新數據不重疊之時間週期的新預測,您必須在時間配量 n+1 開始預測,或確定您要求額外的時間配量。
例如,假設現有的模型有六個月的數據。 您想要新增過去三個月的銷售數據來擴充此模型。 同時,您想要預測未來三個月。 若要在新增數據時只取得新的預測,請將起點指定為時間配量 4,並將結束點指定為時間配量 7。 您也可以要求總共六個預測,但前三個的時間配量會與剛新增的新數據重疊。
如需使用 REPLACE_MODEL_CASES 和 EXTEND_MODEL_CASES之語法的查詢範例和詳細資訊,請參閱 PredictTimeSeries (DMX) 。
使用 EXTEND_MODEL_CASES 進行預測
預測行為會根據您擴充或取代模型案例而有所不同。 當您擴充模型時,新數據會附加至數列結尾,而定型集的大小會增加。 不過,用於預測查詢的時間區段總是從原始序列的結尾開始。 因此,如果您新增三個新的數據點並要求六個預測,則前三個預測會與新數據重疊。 在此情況下,Analysis Services 會傳回實際的新數據點,而不是進行預測,直到所有新的數據點都用盡為止。 然後,Analysis Services 會根據複合數列進行預測。
此行為可讓您新增數據,然後在預測圖表中顯示實際的銷售數據,而不是查看預測。
例如,若要新增三個新的數據點並進行三個新的預測,您可以執行下列動作:
在時間序列模型上建立
PREDICTION JOIN,並指定三個月新數據的來源。要求六個時間切片的預測。 若要這樣做,請指定 6 個時間配量,其中起點為時間配量 1,而結束點為時間配量 7。 這僅適用於EXTEND_MODEL_CASES。
若要只取得新的預測,您可以將起點指定為 4,並將結束點指定為 7。
您必須使用 自變數
EXTEND_MODEL_CASES。前三個時間區段會傳回實際的銷售數據,而根據擴充模型預測,接下來三個時間區段則會傳回預測數據。
使用 REPLACE_MODEL_CASES 進行預測
當您取代模型中的案例時,模型的大小會維持不變,但 Analysis Services 會取代模型中的個別案例。 這對於跨領域預測以及需要維持訓練資料集一致規模的情境非常有用。
例如,其中一家商店的銷售數據不足。 您可以先針對特定區域中的所有商店平均計算銷售數據,然後訓練模型來建立一個一般模型。 然後,若要針對沒有足夠銷售數據的商店進行預測,您可以在該商店的新銷售數據之上,建立PREDICTION JOIN來進行預測。 當您這樣做時,Analysis Services 會保留從區域模型衍生的模式,但會用個別商店的數據替換掉現有的訓練案例。 因此,您的預測值會更接近個別商店的趨勢線。
當您使用 REPLACE_MODEL_CASES 自變數時,Analysis Services 會持續將新的案例新增至案例集結尾,並從案例集開頭刪除對應的數位。 如果您新增的數據量超過原始訓練集中的數據量,Analysis Services 會捨棄先前的數據。 如果您提供充分的新資料,預測可以基於全新的數據。
例如,您已在包含 1000 個數據列的案例數據集上定型模型。 然後,您會新增100個資料列。 Analysis Services 會從定型集卸載前 100 個數據列,並將 100 個新數據列新增至集合結尾,總共 1000 個數據列。 如果您新增 1100 個數據列,則只會使用最新的 1000 個數據列。
以下是另一個範例。 若要新增三個新的月份數據,並進行三個新的預測,您可以執行下列動作:
在時間序列模型上建立
PREDICTION JOIN並使用REPLACE_MODEL_CASE參數。指定三個月新數據的來源。 此數據可能來自與原始定型數據完全不同的來源。
要求六個時間段的預測。 若要這樣做,請指定 6 個時間配量,或將起點指定為時間配量 1,並將結束點指定為時間配量 7。
備註
不同於
EXTEND_MODEL_CASES,您無法傳回您新增為輸入資料相同的值。 傳回的六個值都是以更新的模型為基礎的預測,其中包括舊數據和新數據。備註
使用 REPLACE_MODEL_CASES,從時間戳 1 開始,您將根據新的數據生成新的預測,從而取代舊的訓練數據。
如需使用 REPLACE_MODEL_CASES 和 EXTEND_MODEL_CASES之語法的查詢範例和詳細資訊,請參閱 PredictTimeSeries (DMX) 。
時間序列模型中遺漏值替代
當您使用 PREDICTION JOIN 語句將新數據加入時間序列模型時,新數據集不能有任何遺漏的值。 如果有任何數列不完整,模型必須使用 Null、數值平均值、特定數值平均值或預測值來提供遺漏值。 如果您指定 EXTEND_MODEL_CASES,Analysis Services 會以以原始模型為基礎的預測取代遺漏值。 如果您使用 REPLACE_MODEL_CASES,Analysis Services 會將遺漏的值取代為您在 MISSING_VALUE_SUBSTITUTION 參數中指定的值。
預測函式清單
所有Microsoft演算法都支援一組常見的函式。 不過,Microsoft時間序列演算法支援下表所列的其他函式。
| 預測函數 | 用法 |
| 延遲 (DMX) | 傳回目前案例的日期與訓練集最後一個日期之間的時間片段數。 此功能的一個典型用法是識別最近的訓練案例,以便取得案例的詳細數據。 |
| PredictNodeId (DMX) | 傳回指定之可預測數據行的節點標識碼。 此函式的一般用法是識別產生特定預測值的節點,以便您可以檢閱與節點相關聯的案例,或擷取方程式和其他詳細數據。 |
| PredictStdev (DMX) | 傳回指定之可預測數據行中的預測標準偏差。 此函式會取代時間序列模型不支援的 INCLUDE_STATISTICS 自變數。 |
| PredictVariance (DMX) | 傳回指定可預測欄位之預測變異數。 此函式會取代時間序列模型不支援的 INCLUDE_STATISTICS 自變數。 |
| PredictTimeSeries (DMX) | 傳回時間序列的預測歷史值或未來的預測值。 您也可以使用一般預測函數 Predict (DMX) 來查詢時間序列模型。 |
如需所有Microsoft演算法通用的函式清單,請參閱一般預測函數(DMX)。 如需特定函式的語法,請參閱 數據採礦延伸模組 (DMX) 函式參考。
另請參閱
數據採礦查詢
Microsoft時間序列演算法
Microsoft 時間序列演算法技術參考
時間序列模型的採礦模型內容 (Analysis Services - 數據採礦)