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

Microsoft タイム シリーズ アルゴリズムには、時系列を分析するための 2 つの異なるアルゴリズムが含まれています。

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

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

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

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

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

Microsoft Research は、Microsoft デシジョン ツリー アルゴリズムに基づいた実装で、SQL Server 2005 で使用されていた最初の ARTXP アルゴリズムを開発しました。 そのため、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 による著書を読むことをお勧めします。

  • term は数式の要素です。 たとえば、多項式の項では、変数と定数を組み合わせることができます。

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

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

  • 差分の目的は、時系列を安定化させ、定常化させることです。

  • 差分の次数は、時系列用に値の差分が計算される回数を表します。

Microsoft タイム シリーズ アルゴリズムでは、時系列内の値を取得し、そのデータを一定のパターンに近づけようとする処理が行われます。 データ系列がまだ定常化されていない場合、アルゴリズムは差分の次数を使用します。 差分の次数が増加するたびに、タイム シリーズがより定常化します。

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

ARIMA_AR_ORDER の値が 1 を超える場合、アルゴリズムは時系列に多項式の項を乗算します。 多項式の 1 つの項が 1 または 1 に近い値のルートに解決された場合、アルゴリズムはこの項を削除し、差分の次数を 1 増やして、モデルの安定性を維持しようとします。 差分の次数が既に最大の場合、項が削除され、差分の次数は変化しません。

たとえば、AR = 2 の場合、AR 多項式の項は 1 – 1.4B + .45B^2 = (1- .9B) (1- 0.5B) のようになります。 ここで、累乗根が約 0. 9 の (1- .9B) に注目してください。 アルゴリズムはこの項を多項式から除外しますが、差分の次数が既に 2 であるため、差分の次数を 1 つ上げることができません。

ここで、差分の次数を強制的に変更するための唯一の方法が、サポートされていないパラメーターである ARIMA_DIFFERENCE_ORDER の使用であることは重要です。 この非表示のパラメーターは、時系列上でアルゴリズムが差分を実行する回数を制御し、カスタムのアルゴリズム パラメーターを入力して設定できます。 ただし、適切な値が見つかるまで何度か値を調整する準備があり、必要な計算を熟知している場合を除いて、この値を変更することはお勧めできません。 また、差分次数が増加するしきい値を制御できるようなメカニズムは、非表示パラメーターも含めて、現時点では存在しない点に注意してください。

最後に、上で説明した式は、周期性のヒントが提供されていない簡易なケースであることに注意してください。 周期性のヒントが提供されている場合は、1 つの周期性のヒントごとに個別の AR 多項式の項が方程式の左側に追加されたうえで、同じ方法を使用して、差分計算済みの系列を不安定にする可能性がある項が除外されます。

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

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

注意

Microsoft タイム シリーズ アルゴリズムは、SQL Server のすべてのエディションで利用できます。ただし、いくつかの高度な機能 (時系列分析をカスタマイズするためのパラメーターなど) は、特定のエディションの SQL Server だけでサポートされています。 SQL Server の各エディションでサポートされる機能の一覧については、「SQL Server 2012 の各エディションがサポートする機能」(https://go.microsoft.com/fwlink/?linkid=232473) を参照してください。

周期性の検出

周期性の検出は、ARIMA と ARTXP の両方のアルゴリズムでサポートされています。 Analysis Services は、高速フーリエ変換を使用してトレーニングの前に周期性を検出します。 ただし、アルゴリズム パラメーターを設定することで、周期性の検出や時系列分析の結果に影響を与えることができます。

  • AUTODETECT_SEASONALITY の値を変更すると、生成される可能な時間単位の数に影響を与えることができます。

  • PERIODICITY_HINT に 1 つまたは複数の値を設定して、データの予測されるサイクルに関する情報をアルゴリズムに提供すると、検出の精度を高めることができる場合があります。

注意

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

アルゴリズムの選択と、アルゴリズムの組み合わせの指定

既定では (または MIXED オプションをオンにした場合は)、Analysis Services によって両方のアルゴリズムが同じ重み付けで組み合わされます。 しかし、SQL Server 2008 Enterprise では、特定のアルゴリズムを指定したり、各アルゴリズムの結果における割合をカスタマイズすることもできます。そのためには、結果に短期と長期の予測に対する重み付けを行うパラメーターを設定します。 FORECAST_METHOD パラメーターは、既定では MIXED に設定されています。この場合、Analysis Services は両方のアルゴリズムを使用して、各アルゴリズムの強みを最大限に活かすようにそれぞれの値に重みを付けます。

  • アルゴリズムの選択を制御するには、FORECAST_METHOD パラメーターを設定します。

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

  • 短期予測を重視する場合は、FORECAST_METHOD を ARTXP に設定します。

  • 長期予測の精度を高める場合は、FORECAST_METHOD を 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 だけで使用できます。

FORECAST_METHOD

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

HISTORIC_MODEL_COUNT

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

注意

このパラメーターは、一部のエディションの SQL Server だけで使用できます。

HISTORICAL_MODEL_GAP

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

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

注意

このパラメーターは、一部のエディションの SQL Server だけで使用できます。

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 と共に、予測を一定の範囲内に制限するために使用されます。 たとえば、日次の予測販売数量が製品の在庫数を超えないように指定することができます。

注意

このパラメーターは、一部のエディションの SQL Server だけで使用できます。

MINIMUM_SERIES_VALUE

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

注意

このパラメーターは、一部のエディションの SQL Server だけで使用できます。

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 だけで使用できます。

モデリング フラグ

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 はサポートされますが、アルゴリズムはこれらを不連続の値として扱い、特別な処理は行いません。

関連項目

参照

タイム シリーズ モデルのマイニング モデル コンテンツ (Analysis Services - データ マイニング)

概念

Microsoft タイム シリーズ アルゴリズム

タイム シリーズ モデルのクエリ例