Share via


Microsoft タイム シリーズ アルゴリズム テクニカル リファレンス

Microsoft タイム シリーズ アルゴリズムには、次に示す 2 つの異なるアルゴリズムが含まれています。

  • ARTXP アルゴリズム。SQL Server 2005 で導入されたアルゴリズムで、シリーズ内で最も近い値の予測に適しています。

  • ARIMA アルゴリズム。長期的な予測の精度を向上させるために SQL Server 2008 で追加されたアルゴリズムです。

既定では、Analysis Services は各アルゴリズムを別々に使用してモデルのトレーニングを行い、その結果を統合して、さまざまな数の予測に対して最適な予測を出力します。使用するデータや予測の要件に基づいて、一方のアルゴリズムのみを使用するように選択することもできます。SQL Server 2008 Enterprise 以降では、予測時のアルゴリズムの組み合わせを制御するカットオフ ポイントをカスタマイズすることもできます。

このトピックでは、各アルゴリズムがどのように実装されているのかについての追加情報を紹介し、パラメーターを設定してアルゴリズムをカスタマイズすることによって分析や予測の結果を微調整する方法を説明します。

タイム シリーズ アルゴリズムの実装

Microsoft Research が開発し、SQL Server 2005 で使用された最初の ARTXP アルゴリズムは、Microsoft デシジョン ツリー アルゴリズムに基づいた実装でした。このため、ARTXP アルゴリズムは、周期的な時系列データを表すための自己回帰ツリー モデルであるということができます。このアルゴリズムでは、さまざまな数の過去の項目が、予測の対象である現在の各項目に関連付けられます。ARTXP という名前は、過去の不明な状態が複数ある場合に ART アルゴリズム (自己回帰ツリー法) が適用されることに由来しています。ARTXP アルゴリズムの詳細については、「時系列分析の自己回帰ツリー モデル」を参照してください。 

ARIMA アルゴリズムは、長期的な予測の精度を向上させるために SQL Server 2008 で Microsoft タイム シリーズ アルゴリズムに追加されたアルゴリズムです。このアルゴリズムには、Box と Jenkins によって説明された自己回帰和分移動平均を計算するためのプロセスが実装されています。ARIMA 法では、時間的に連続して行われる観測の依存関係を特定することが可能であり、モデルの一部としてランダム ショックを組み込むこともできます。ARIMA 法では、乗法的周期性もサポートされています。ARIMA アルゴリズムについて詳しく理解するには、Box と Jenkins による著書を読むことをお勧めします。このセクションは、Microsoft タイム シリーズ アルゴリズムに ARIMA 法がどのように実装されているかという点について、具体的に説明することを目的としています。

既定では、Microsoft タイム シリーズ アルゴリズムは、ARTXP 法と ARIMA 法の両方を使用し、その結果を組み合わせて予測精度を向上させます。いずれか一方のみを使用する場合は、アルゴリズム パラメーターを設定して、ARTXP または ARIMA のみが使用されるようにすることも、各アルゴリズムの結果がどのように組み合わされるかを制御することもできます。ARTXP アルゴリズムではクロス予測がサポートされていますが、ARIMA アルゴリズムではサポートされていないので、注意が必要です。このため、クロス予測を使用できるのは、両方のアルゴリズムを組み合わせて使用する場合か、ARTXP のみを使用するようにモデルを構成した場合に限られます。

ARIMA の差分の次数について

このセクションでは、ARIMA モデルを理解するために必要な用語をいくつか紹介し、Microsoft タイム シリーズ アルゴリズムにおける差分計算の実装について説明します。これらの用語および概念に関する詳細な説明については、Box と Jenkins による著書を読むことをお勧めします。

  • 項とは、数学的方程式の構成要素の 1 つです。たとえば、多項式内の項は、変数と定数の組み合わせを含むことができます。

  • Microsoft タイム シリーズ アルゴリズムに含まれる ARIMA 式には、自己回帰項と移動平均項が含まれます。

  • 時系列モデルには、定常モデルと非定常モデルがあります。定常モデルとは、周期性が存在する場合があっても平均レベルに復帰する可能性の高いモデルです。一方、非定常モデルの場合は、平衡のポイントがなく、ショック (外部変数) の影響による変動や変化が大きくなりやすいことが特徴です。

  • 差分計算の目的は、時系列を安定させ、定常化することにあります。

  • 差分の次数とは、時系列に対して値と値の差分をとる回数を表します。

Microsoft タイム シリーズ アルゴリズムでは、時系列内の値を取得し、そのデータを一定のパターンに近づけようとする処理が行われます。時系列が定常な状態になっていなければ、アルゴリズムは 1 回差分をとります。差分の次数が大きくなるごとに、時系列が定常化しやすくなります。

たとえば、(z1, z2, ..., zn) という時系列に対し、1 回の差分をとる計算を実行すると、新しい時系列 (y1, y2, ..., yn-1) が得られます。このとき、yi = zi+1-zi です。差分の次数が 2 のとき、アルゴリズムはこの 1 次方程式から導いた y 系列に基づいて、別の時系列 (x1, x2, ..., xn-2) を生成します。差分計算の適切な回数は、データによって異なります。一定の傾向を示しているモデルでは、1 回の差分計算が最も一般的です。2 回目の差分計算が行われる場合は、時間経過に伴って傾向が変動する可能性があることを示しています。

既定では、Microsoft タイム シリーズ アルゴリズムで使用される差分次数は -1 であり、差分次数として最適な値がアルゴリズムによって自動的に検出されます。一般的に、差分計算が必要である場合の最適な値は 1 ですが、特定の状況下では、この値が最大 2 に増やされます。

Microsoft タイム シリーズ アルゴリズムは、自己回帰 (AR) 値を使用して、最適な ARIMA 差分次数を決定します。アルゴリズムは AR 値を調べ、AR 項の次数を表す非表示パラメーターである ARIMA_AR_ORDER を設定します。非表示パラメーター ARIMA_AR_ORDER の有効値は -1 ~ 8 です。既定値の -1 では、適切な差分次数がアルゴリズムによって自動的に選択されます。

ARIMA_AR_ORDER の値が 2 以上である場合、時系列の項数が増加します。多項式の 1 つの項で根が 1 または 1 の近似値になる場合、アルゴリズムは、その項を削除し差分次数を 1 増加させることで、モデルの安定性を維持しようとします。差分次数が既に最大値になっている場合は、項が削除され差分次数は変わりません。

たとえば、AR = 2 の場合、結果では AR 多項式が 1 – 1.4B + 0.45B^2 = (1 - 0.9B) (1 - 0.5B) のようになります。(1 - 0.9B) という項では根が約 0.9 になります。アルゴリズムはこの項を多項式から削除しますが、差分次数は既に最大値の 2 であるため、1 増加させることができません。

重要な注意点として、差分次数を強制的に変更する方法は、ARIMA_DIFFERENCE_ORDER というサポートされていないパラメーターを使用する方法しかありません。この非表示パラメーターは、カスタムのアルゴリズム パラメーターを入力することによって設定でき、アルゴリズムが時系列に対して差分計算を実行する回数を制御します。ただし、関係する計算について理解しており、試行錯誤をいとわない場合を除いて、この値を変更することはお勧めしません。また、差分次数が増加するしきい値を制御できるようなメカニズムは、非表示パラメーターも含めて、現時点では存在しません。

最後に、ここで紹介した公式は、周期性のヒントを加味しない、単純なケースを表したものです。周期性のヒントが与えられた場合は、方程式の左辺に、ヒントごとに新たな AR 項が追加され、差分系列を不安定にする可能性がある項が、同じ方法によって除去されます。

Microsoft タイム シリーズ アルゴリズムのカスタマイズ

Microsoft タイム シリーズ アルゴリズムでは、結果として得られるマイニング モデルの動作、パフォーマンス、および精度に影響を与えるいくつかのパラメーターがサポートされています。

周期性の検出

周期性の検出は、両方のアルゴリズムでサポートされています。Analysis Services は、高速フーリエ変換を使用してトレーニングの前に周期性を検出します。

最高の結果が得られるように、アルゴリズム パラメーターを設定して周期性の検出を制御することができます。AUTODETECT_SEASONALITY の値を変更すると、生成される可能な時間単位の数に影響を与えることができます。PERIODICITY_HINT に 1 つまたは複数の値を設定して、既知の繰り返し周期に関する情報をアルゴリズムに提供すると、検出の精度を高めることができます。

注意

周期性のヒントは、ARTXP アルゴリズムと ARIMA アルゴリズムの両方に影響します。したがって、不適切なヒントを指定すると、結果に悪影響を与える可能性があります。

アルゴリズムの組み合わせ

既定では、Analysis Services は両方のアルゴリズムを均等に組み合わせて使用します。SQL Server 2008 Enterprise 以降では、結果の統合方法をカスタマイズすることもできます。そのためには、MIXED オプションを選択して、短期または長期のいずれかの予測が結果で重視されるようにパラメーターを設定します。

クロス予測を使用する場合は、ARTXP または MIXED オプションのいずれかを使用する必要があります。ARIMA はクロス予測をサポートしていません。

アルゴリズムの選択を制御するには、FORECAST_METHOD パラメーターを設定します。FORECAST_METHOD パラメーターは、既定では MIXED に設定されています。この場合、Analysis Services は両方のアルゴリズムを使用して、各アルゴリズムの強みを最大限に活かすようにそれぞれの値に重みを付けます。ただし、ARTxp アルゴリズムのみを使用する場合は FORECAST_METHOD を ARTXP に、ARIMA アルゴリズムのみを使用する場合は ARIMA に設定することもできます。

SQL Server 2008 Enterprise 以降では、Analysis Services で ARIMA アルゴリズムと ARTXP アルゴリズムをどのように組み合わせるかをカスタマイズすることもできます。PREDICTION_SMOOTHING パラメーターを設定することにより、組み合わせの開始点と変化率の両方を制御できます。

  • PREDICTION_SMOOTHING を 0 に設定すると、純粋な ARTxp モデルになります。

  • PREDICTION_SMOOTHING を 1 に設定すると、純粋な ARIMA モデルになります。

  • PREDICTION_SMOOTHING を 0 と 1 の間の値に設定すると、ARTxp アルゴリズムが予測期間の "指数的に減少する関数" として重み付けされ、ARIMA アルゴリズムが ARTxp の重みの 1 の補数として重み付けされます。モデルでは、曲線を滑らかにするために正規化および安定化定数が使用されます。

一般に、予測するタイム スライスが 5 以下であれば、ほとんどの場合、ARTxp の方が適しています。予測するタイム スライスが増えるにつれて、ARIMA を使用した方がより良い結果が得られるようになります。

次の図は、PREDICTION_SMOOTHING を既定値の 0.5 に設定した場合にモデルで 2 つのアルゴリズムがどのように組み合わされるのかを示しています。最初は ARIMA と ARTxp の重みが均等ですが、予測期間の値が増えるにつれて ARIMA の重みが増加しています。

タイム シリーズ アルゴリズムの組み合わせのための既定曲線

一方、次の図は、PREDICTION_SMOOTHING を 0.2 に設定した場合のアルゴリズムの組み合わせを示しています。期間 0 では、ARIMA の重みが 0.2、ARTXP の重みが 0.8 です。その後、ARIMA の重みが指数関数的に増加し、ARTxp の重みも同じように減少します。

タイム シリーズ モデルの組み合わせのための減衰曲線

アルゴリズム パラメーターの設定

次の表は、Microsoft タイム シリーズ アルゴリズムで使用できるパラメーターを示しています。

パラメーター

説明

AUTO_DETECT_PERIODICITY

周期性を検出する 0 から 1 までの数値を指定します。既定値は 0.6 です。

より 0 に近い値を設定すると、非常に周期的なデータのみを対象にして周期性が検出されます。

1 に近い値を設定すると、多くのほぼ周期的なパターンの検出と、周期性のヒントの自動生成が行われます。

注意
周期性のヒントを多数処理すると、モデルのトレーニングに非常に長い時間がかかりますが、精度の高いモデルになる可能性があります。

COMPLEXITY_PENALTY

デシジョン ツリーの拡大を制御します。既定値は 0.1 です。

値を小さくすると、分割の可能性が増加します。値を大きくすると、分割の可能性が減少します。

注意
このパラメーターは SQL Server Enterprise でのみ使用できます。

FORECAST_METHOD

分析および予測に使用するアルゴリズムを指定します。指定できる値は、ARTXP、ARIMA、および MIXED です。既定値は MIXED です。

HISTORIC_MODEL_COUNT

作成する履歴モデルの数を指定します。既定値は 1 です。

注意
このパラメーターは SQL Server Enterprise でのみ使用できます。

HISTORICAL_MODEL_GAP

2 つの連続した履歴モデル間のタイム ラグを指定します。既定値は 10 です。この値は、モデルによって定義される時間単位の数を表します。

たとえば、この値を g に設定すると、g、2*g、3*g などの間隔でタイム スライスによって切り捨てられるデータに対して履歴モデルが作成されます。

注意
このパラメーターは SQL Server Enterprise でのみ使用できます。

INSTABILITY_SENSITIVITY

予測の分散が特定のしきい値を超えて ARTXP アルゴリズムの予測が中止されるポイントを制御します。既定値は 1 です。

注意
このパラメーターは、ARIMA のみを使用するモデルには適用されません。

既定値の 1 では、SQL Server 2005 と同じ動作になります。Analysis Services は、各予測の正規化された標準偏差を監視します。いずれかの予測の標準偏差がしきい値を超えると、タイム シリーズ アルゴリズムが NULL を返して予測処理が中止されます。

値を 0 にすると、不安定性の検出が中止されます。この場合は、偏差に関係なく予測を無制限に作成できます。

注意
このパラメーターは SQL Server Enterprise でのみ変更できます。SQL Server Standard では、Analysis Services には既定値の 1 のみが使用されます。

MAXIMUM_SERIES_VALUE

予測で使用する最大値を指定します。このパラメーターは、MINIMUM_SERIES_VALUE と共に、予測を一定の範囲内に制限するために使用されます。たとえば、1 日の販売数量の予測が製品の在庫数を超えないように指定することができます。

注意
このパラメーターは SQL Server Enterprise でのみ使用できます。

MINIMUM_SERIES_VALUE

予測できる最小値を指定します。このパラメーターは、MAXIMUM_SERIES_VALUE と共に、予測を一定の範囲内に制限するために使用されます。たとえば、販売数量の予測が負の値にならないように指定できます。

注意
このパラメーターは SQL Server Enterprise でのみ使用できます。

MINIMUM_SUPPORT

各タイム シリーズ ツリーで分割を生成するために必要なタイム スライスの最小数を指定します。既定値は 10 です。

MISSING_VALUE_SUBSTITUTION

履歴データのギャップを埋める方法を指定します。既定では、データ内のギャップは許可されません。

このパラメーターに指定できる値の一覧を次の表に示します。

値説明
Previous前のタイム スライスの値を繰り返します。
Meanトレーニングに使用されたタイム スライスの移動平均を使用します。
数値定数指定した数値を使用してすべての不足値を置き換えます。
Noneトレーニング済みモデルの曲線に沿ってプロットされた値で不足値を置き換えます。 これは既定値です。

データに複数のシリーズが含まれている場合は、シリーズの端を揃える必要もあります。つまり、すべてのシリーズの開始点と終了点が同じである必要があります。

このパラメーターの値は、タイム シリーズ モデルで PREDICTION JOIN を実行する際に新しいデータのギャップを埋めるためにも使用されます。

PERIODICITY_HINT

データの周期性に関して、アルゴリズムにヒントを提供します。たとえば、売上が年ごとに異なり、シリーズの単位が月である場合、周期性は 12 です。このパラメーターの形式は {n [, n]} です。ここで、n には正の数値を指定します。

角かっこ ([]) 内の n は省略可能で、必要なだけ繰り返すことができます。たとえば、毎月提供されるデータに対して複数の周期性のヒントを指定して、年、四半期、および月のパターンを検出するには、「{12, 3, 1}」と入力します。ただし、周期性はモデルの品質に大きな影響を与えるので注意してください。指定したヒントが実際の周期性と異なると、結果が悪影響を受けることがあります。

既定値は {1} です。

注意
値は中かっこで囲む必要があります。また、このパラメーターは文字列データ型です。したがって、このパラメーターをデータ マイニング拡張機能 (DMX) ステートメントの一部として入力する場合は、数字と中かっこを引用符で囲む必要があります。

PREDICTION_SMOOTHING

予測を最適化するためにモデルを組み合わせる方法を指定します。0 ~ 1 の任意の値を入力するか、次のいずれかの値を使用します。

注意
トレーニングは、FORECAST_METHOD パラメーターを使用して制御します。
値説明
0 予測に ARTXP のみを使用するように指定します。少数の予測に最適化されます。
1予測に ARIMA のみを使用するように指定します。多数の予測に最適化されます。
0.5(既定値) 予測に両方のアルゴリズムを使用して、結果を統合するように指定します。
注意
このパラメーターは SQL Server Enterprise でのみ使用できます。

モデリング フラグ

Microsoft タイム シリーズ アルゴリズムでは、次のモデリング フラグがサポートされています。モデリング フラグは、マイニング構造やマイニング モデルを作成するときに定義し、分析時に各列の値をどのように処理するかを指定します。詳細については、「モデリング フラグ (データ マイニング)」を参照してください。

モデリング フラグ

説明

NOT NULL

列に NULL を含めることはできないことを示します。モデルのトレーニング中に NULL が検出された場合はエラーが発生します。

マイニング構造列に適用されます。

MODEL_EXISTENCE_ONLY

列が、Missing および Existing の 2 つの可能な状態を持つ列として扱われることを示します。NULL は Missing 値になります。

マイニング モデル列に適用されます。

必要条件

タイム シリーズ モデルには、一意の値を含む Key Time 列、入力列、および少なくとも 1 つの予測可能列が必要です。

入力列と予測可能列

次の表のように、Microsoft タイム シリーズ アルゴリズムでは、特定の入力列のコンテンツの種類、予測可能列のコンテンツの種類、およびモデリング フラグがサポートされています。

コンテンツの種類

入力属性

Continuous、Key、Key Time、Table

予測可能な属性

Continuous、Table

注意

コンテンツの種類として Cyclical および Ordered はサポートされますが、アルゴリズムはこれらを不連続の値として扱い、特別な処理は行いません。

変更履歴

変更内容

  • ARIMA アルゴリズムにおける差分計算の実装に関して説明する新しいセクションを追加しました。