次の方法で共有


レッスン 5: 時系列モデルの拡張

SQL Server 2014 Enterprise では、時系列モデルに新しいデータを追加し、新しいデータをモデルに自動的に組み込むことができます。 時系列マイニング モデルに新しいデータを追加するには、次の 2 つの方法のいずれかを使用します。

  • PREDICTION JOIN を使用して、外部ソースのデータをトレーニング データに結合します。

  • シングルトン予測クエリを使用して、一度に 1 つのスライスのデータを提供します。

たとえば、数か月前に既存の売上データに対してマイニング モデルをトレーニングしたとします。 新しい売上を取得したら、売上予測を更新して新しいデータを組み込むことができます。 これを行うには、新しい売上数値を入力データとして指定し、複合データ セットに基づいて新しい予測を生成します。

EXTEND_MODEL_CASESを使用した予測の作成

EXTEND_MODEL_CASESを使用した時系列予測の一般的な例を次に示します。 最初の例では、元のモデルの最後のタイム ステップから始まる予測の数を指定できます。

SELECT [<model columns>,] PredictTimeSeries(<table column reference>, n, EXTEND_MODEL_CASES)   
FROM <mining model>  
PREDICTION JOIN <source query>  
[WHERE <criteria>]  

2 番目の例では、予測の開始位置と終了位置を指定できます。 このオプションは、モデル ケースを拡張する場合に重要です。既定では、予測クエリに使用される時間ステップは常に元の系列の末尾から開始されるためです。

SELECT [<model columns>,] PredictTimeSeries(<table column reference>, n-start, n-end, EXTEND_MODEL_CASES)   
FROM <mining model>  
PREDICTION JOIN <source query>  
[WHERE <criteria>}  

このチュートリアルでは、両方の種類のクエリを作成します。

時系列モデルでシングルトン予測クエリを作成するには

  1. オブジェクト エクスプローラーで、Analysis Services のインスタンスを右クリックし、[新しいクエリ] をポイントして、[DMX] をクリックします。

    クエリ エディターが開き、新しい空のクエリが含まれています。

  2. シングルトン ステートメントの一般的な例を空白のクエリにコピーします。

  3. 次のコードを置き換えます。

    SELECT [<model columns>,] PredictTimeSeries(<table column reference>, n, EXTEND_MODEL_CASES)   
    

    次の内容に置き換えます。

    SELECT [Model Region],  
    PredictTimeSeries([Quantity],6, EXTEND_MODEL_CASES) AS PredictQty  
    

    最初の行は、系列を識別するモデルから値を取得します。

    2 行目には予測関数が含まれており、Quantity に対して 6 つの予測を取得します。 結果を理解しやすくするために、エイリアス ( PredictQty) が予測結果列に割り当てられます。

  4. 次のコードを置き換えます。

    FROM <mining model>  
    

    次の内容に置き換えます。

    FROM [Forecasting_MIXED]  
    
  5. 次のコードを置き換えます。

    PREDICTION JOIN <source query>  
    

    次の内容に置き換えます。

    NATURAL PREDICTION JOIN   
    (  
       SELECT 1 AS [Reporting Date],  
       '10' AS [Quantity],  
       'M200 Europe' AS [Model Region]  
       UNION SELECT  
       2 AS [Reporting Date],  
       15 AS [Quantity]),  
       'M200 Europe' AS [Model Region]  
    ) AS t  
    
  6. 次のコードを置き換えます。

    [WHERE <criteria>]  
    

    次の内容に置き換えます。

    WHERE [ModelRegion] = 'M200 Europe' OR  
    [ModelRegion] = 'M200 Pacific'  
    

    これで、完全なステートメントは次のようになります。

    SELECT [Model Region],  
    PredictTimeSeries([Quantity],6, EXTEND_MODEL_CASES) AS PredictQty  
    FROM  
       [Forecasting_MIXED]  
    NATURAL PREDICTION JOIN   
       SELECT 1 AS [ReportingDate],  
      '10' AS [Quantity],  
      'M200 Europe' AS [ModelRegion]  
    UNION SELECT  
      2 AS [ReportingDate],  
      15 AS [Quantity]),  
      'M200 Europe' AS [ModelRegion]  
    ) AS t  
    WHERE [ModelRegion] = 'M200 Europe' OR  
    [ModelRegion] = 'M200 Pacific'  
    
  7. [ ファイル ] メニューの [ DMXQuery1.dmx As の保存] をクリックします。

  8. [ 名前を付けて保存 ] ダイアログ ボックスで、適切なフォルダーを参照し、ファイルに Singleton_TimeSeries_Query.dmx名前を付けます。

  9. ツール バーの [ 実行 ] ボタンをクリックします。

    このクエリは、ヨーロッパおよび太平洋地域の M200 自転車の販売数量の予測を返します。

予測を理解するにはEXTEND_MODEL_CASESを開始します

元のモデルに基づいて予測を作成し、新しいデータを使用して、結果を比較して、売上データの更新が予測に与える影響を確認できます。 その前に、先ほど作成したコードを確認し、次の点に注意してください。

  • ヨーロッパ リージョンにのみ新しいデータを指定しました。

  • 2 か月分の新しいデータのみを提供しました。

次の表は、M200 ヨーロッパに指定された新しい値が予測にどのように影響するかを示しています。 太平洋地域の M200 製品の新しいデータを提供しませんでしたが、このシリーズは比較のために示されています。

製品と地域: M200 ヨーロッパ

既存のモデル (PredictTimeSeries) モデル (PredictTimeSeriesEXTEND_MODEL_CASESの) 更新された売上データ付き
M200 ヨーロッパ 2008 年 7 月 25 日午前 12:00:00 77 10
M200 ヨーロッパ 2008 年 8 月 25 日午前 12:00:00 64 15
M200 ヨーロッパ 2008 年 9 月 25 日午前 12:00:00 59 72
M200 ヨーロッパ 2008 年 10 月 25 日午前 12:00:00 56 69
M200 ヨーロッパ 2008 年 11 月 25 日午前 12:00:00 56 68
M200 ヨーロッパ 2008 年 12 月 25 日午前 12:00:00 74 89

製品と地域: M200 Pacific

既存のモデル (PredictTimeSeries) 更新された売上データPredictTimeSeriesを使用したモデルEXTEND_MODEL_CASES
M200 Pacific 2008 年 7 月 25 日午前 12:00:00 41 41
M200 Pacific 2008 年 8 月 25 日午前 12:00:00 44 44
M200 Pacific 2008 年 9 月 25 日午前 12:00:00 三十八 三十八
M200 Pacific 2008 年 10 月 25 日午前 12:00:00 41 41
M200 Pacific 2008 年 11 月 25 日午前 12:00:00 36 36
M200 Pacific 2008 年 12 月 25 日午前 12:00:00 39 39

これらの結果から、次の 2 つを確認できます。

  • M200 ヨーロッパ シリーズの最初の 2 つの予測は、指定した新しいデータとまったく同じです。 設計上、Analysis Services は予測を行う代わりに、実際の新しいデータ ポイントを返します。 これは、モデル ケースを拡張すると、予測クエリに使用される時間ステップは、常に元の系列の末尾から開始されるためです。 したがって、2 つの新しいデータ ポイントを追加すると、返された最初の 2 つの予測が新しいデータと重複します。

  • 新しいデータ ポイントがすべて使用されると、Analysis Services は更新されたモデルに基づいて予測を行います。 そのため、2005年9月から、M200 Europe の予測において、左側の列の元のモデルと右側の列のEXTEND_MODEL_CASESを使用するモデルとの違いを確認できます。 モデルが新しいデータで更新されたため、予測は異なります。

開始時刻と終了時刻のステップを使用して予測を制御する

モデルを拡張すると、新しいデータは常に系列の末尾にアタッチされます。 ただし、予測の目的で、予測クエリに使用されるタイム スライスは、元の系列の末尾から開始されます。 新しいデータを追加するときに新しい予測のみを取得する場合は、開始点をいくつかのタイム スライスとして指定する必要があります。 たとえば、2 つの新しいデータ ポイントを追加し、4 つの新しい予測を行う場合は、次の操作を行います。

  • 時系列モデルに PREDICTION JOIN を作成し、2 か月間の新しいデータを指定します。

  • 4 つのタイム スライスの予測を要求します。開始点は 3 で、終了ポイントはタイム スライス 6 です。

つまり、新しいデータに n 個のタイム スライスが含まれており、時間ステップ 1 から n の予測を要求した場合、予測は新しいデータと同じ期間と一致します。 データでカバーされていない期間の新しい予測を取得するには、新しいデータ系列の後のタイム スライス n + 1 で予測を開始するか、追加のタイム スライスを要求する必要があります。

新しいデータを追加するときに履歴予測を行うことはできません。

次の例は、前の例の 2 つの系列の新しい予測のみを取得できる DMX ステートメントを示しています。

SELECT [Model Region],  
PredictTimeSeries([Quantity],3,6, EXTEND_MODEL_CASES) AS PredictQty  
FROM  
   [Forecasting_MIXED]  
NATURAL PREDICTION JOIN   
   SELECT 1 AS [ReportingDate],  
  '10' AS [Quantity],  
  'M200 Europe' AS [ModelRegion]  
UNION SELECT  
  2 AS [ReportingDate],  
  15 AS [Quantity]),  
  'M200 Europe' AS [ModelRegion]  
) AS t  
WHERE [ModelRegion] = 'M200 Europe'  

予測結果は、指定した新しいデータの 2 か月後のタイム スライス 3 から始まります。

製品と地域: M200 ヨーロッパ

PredictTimeSeriesをEXTEND_MODEL_CASESで拡張したモデル(更新されたデータを使用)

M200 ヨーロッパ 2008 年 9 月 25 日午前 12:00:00 72
M200 ヨーロッパ 2008 年 10 月 25 日午前 12:00:00 69
M200 ヨーロッパ 2008 年 11 月 25 日午前 12:00:00 68
M200 ヨーロッパ 2008 年 12 月 25 日午前 12:00:00 89

REPLACE_MODEL_CASESを使用した予測の作成

モデル ケースを置き換えることは、1 セットのケースでモデルをトレーニングし、そのモデルを別のデータ系列に適用する場合に便利です。 このシナリオの詳細なチュートリアルについては、「 レッスン 2: 予測シナリオの構築 (中間データ マイニング チュートリアル)」を参照してください。

こちらもご覧ください

タイム シリーズ モデル クエリの例
PredictTimeSeries (DMX)