次の方法で共有


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 Time Series アルゴリズムには、時系列を分析するための 2 つの個別のアルゴリズムが含まれています。

  • SQL Server 2005 (9.x) で導入された ARTXP アルゴリズムは、系列内の次の可能性の高い値を予測するために最適化されています。

  • ARIMA アルゴリズムは、長期予測の精度を向上させるために、2008 年SQL Serverに追加されました。

既定では、SQL Server Analysis Servicesは各アルゴリズムを個別に使用してモデルをトレーニングし、結果をブレンドして、可変数の予測に最適な予測を生成します。 使用するデータや予測の要件に基づいて、一方のアルゴリズムのみを使用するように選択することもできます。 SQL Server 2008 Enterprise では、予測中のアルゴリズムのブレンドを制御するカットオフ ポイントをカスタマイズすることもできます。

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

Microsoft Time Series アルゴリズムの実装

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

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

既定では、Microsoft Time Series アルゴリズムは、ARTXP と ARIMA の両方の方法を使用し、その結果を組み合わせて予測精度を向上させます。 特定の方法のみを使用する場合は、アルゴリズム パラメーターの設定によって、ARTXP のみまたは ARIMA のみを使用することも、アルゴリズムの結果を組み合わせる方法を制御することもできます。 ARTXP アルゴリズムではクロス予測がサポートされていますが、ARIMA アルゴリズムではサポートされていないことに注意してください。 したがって、クロス予測は、両方のアルゴリズムを組み合わせて使用する場合や、ARTXP のみを使用するようにモデルを構成する場合にのみ使用できます。

ARIMA の差分の次数について

このセクションでは、ARIMA モデルを理解するための用語を紹介し、Microsoft Time Series アルゴリズムの 差分 の具体的な実装について説明します。 これらの用語の詳しい説明については、Box と Jenkins による著書を読むことをお勧めします。

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

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

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

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

  • 差の順序は、時系列に対して値の差が取得される回数を表します。

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

たとえば、時系列 (z1、z2、...、zn) があり、1 つの差を使用して計算を実行する場合は、新しい系列 (y1、y2,...., yn-1) yi = zi+1-ziを取得します。 差の順序が 2 の場合、アルゴリズムは、最初の次数方程式から派生した y 系列に基づいて、別の系列 '(x1, x2, ..., xn-2)' を生成します。 正しい差分の量はデータによって異なります。 差分の次数 1 は、傾向が一定のモデルで非常によく使われます。差分の次数 2 は、時間と共に変化する傾向を示すことができます。

既定では、Microsoft Time Series アルゴリズムで使用される差分の次数は -1 です。つまり、最適な差分の次数がアルゴリズムによって自動的に検出されます。 通常、(差分が必要な場合の) 最適な値は 1 ですが、状況によってはアルゴリズムが最大 2 までこの値を増やします。

Microsoft Time Series アルゴリズムでは、自動回帰の値を使用して最適な 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 Time Series アルゴリズムのカスタマイズ

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

注意

Microsoft Time Series アルゴリズムは、SQL Serverのすべてのエディションで使用できますが、時系列分析をカスタマイズするためのパラメーターを含む一部の高度な機能は、SQL Serverの特定のエディションでのみサポートされています。 SQL Serverの各エディションでサポートされる機能の一覧については、「 SQL Server の各エディションがサポートする機能」を参照してください。

周期性の検出

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

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

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

注意

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

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

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

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

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

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

  • 長期予測の精度を高める場合は、 FORECAST_METHOD を ARIMA に設定します。

Enterprise Editionでは、ARIMA アルゴリズムと ARTXP アルゴリズムの組み合わせを組み合わせてSQL Server Analysis Services方法をカスタマイズすることもできます。 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 Time Series アルゴリズムで使用できるパラメーターについて説明します。

パラメーター 説明
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 (9.x) と同じ動作を提供します。 SQL Server Analysis Servicesは、各予測の正規化された標準偏差を監視します。 この値がいずれかの予測のしきい値を超えると、タイム シリーズ アルゴリズムが NULL を返して予測処理が中止されます。

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

注: このパラメーターは、SQL Server Enterpriseでのみ変更できます。 SQL Server Standardでは、SQL Server 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 履歴データのギャップを埋める方法を指定します。 既定では、データ内のギャップは許可されません。 このパラメーターに指定できる値の一覧を次の表に示します。

: 前のタイム スライスの値を繰り返します。

平均: トレーニングに使用されたタイム スライスの移動平均を使用します。

数値定数: 指定した数値を使用してすべての不足値を置き換えます。

なし: 既定値。 トレーニング済みモデルの曲線に沿ってプロットされた値で不足値を置き換えます。



データに複数のシリーズが含まれている場合は、シリーズの端を揃える必要があります。 つまり、すべてのシリーズの開始点と終了点が同じである必要があります。
SQL Server Analysis Servicesでは、時系列モデルで PREDICTION JOIN を実行するときに、このパラメーターの値を使用して新しいデータのギャップを埋めます。
PERIODICITY_HINT データの周期性に関して、アルゴリズムにヒントを提供します。 たとえば、売上が年ごとに異なり、シリーズの単位が月である場合、周期性は 12 です。 このパラメーターの形式は {n [, n]} です。ここで、n には正の値を指定します。

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

既定では、 {1}です。

値は中かっこで囲む必要があります。 また、このパラメーターは文字列データ型です。 したがって、このパラメーターをデータ マイニング拡張機能 (DMX) ステートメントの一部として入力する場合は、数字と中かっこを引用符で囲む必要があります。
PREDICTION_SMOOTHING 予測を最適化するためにモデルを組み合わせる方法を指定します。 0 ~ 1 の任意の値を入力するか、次のいずれかの値を使用できます。

0:
予測に ARTXP のみを使用するように指定します。 少数の予測に最適化されます。

1: 予測に ARIMA のみを使用するように指定します。 多数の予測に最適化されます。

0.5: 既定値。 予測に両方のアルゴリズムを使用して、結果を統合するように指定します。



予測のスムージングを実行する際には、 FORECAST_METHOD パラメーターを使用してトレーニングを制御します。 このパラメーターは、SQL Serverの一部のエディションでのみ使用できます。

ModelingFlags

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

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

マイニング構造列に適用されます。
MODEL_EXISTENCE_ONLY 列が、Missing および Existing の 2 つの可能な状態を持つ列として扱われることを示します。 NULL は Missing 値になります。

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

要件

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

入力列と予測可能列

Microsoft Time Series アルゴリズムでは、次の表に示す特定の入力列コンテンツ タイプ、予測可能な列コンテンツ タイプ、モデリング フラグがサポートされています。

コンテンツの種類
入力属性 Continuous、Key、Key Time、Table
予測可能な属性 Continuous、Table

注意

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

参照

Microsoft Time Series アルゴリズム
Time Series Model Query Examples
タイム シリーズ モデルのマイニング モデル コンテンツ (Analysis Services - データ マイニング)