Microsoft Time Series アルゴリズムには、時系列を分析するための 2 つの異なるアルゴリズムが含まれています。
SQL Server 2005 で導入された ARTXP アルゴリズムは、系列内の次の可能性の高い値を予測するために最適化されています。
ARIMA アルゴリズムは、長期的な予測の精度を向上させるために SQL Server 2008 で追加されました。
既定では、Analysis Services は各アルゴリズムを個別に使用してモデルをトレーニングし、結果をブレンドして、可変数の予測に最適な予測を生成します。 また、データと予測の要件に基づいて、いずれかのアルゴリズムのみを使用することもできます。 SQL Server 2008 Enterprise では、予測中にアルゴリズムのブレンドを制御するカットオフ ポイントをカスタマイズすることもできます。
このトピックでは、各アルゴリズムの実装方法と、パラメーターを設定して分析と予測の結果を微調整することでアルゴリズムをカスタマイズする方法に関する追加情報を提供します。
Microsoft タイム シリーズ アルゴリズムの実装
Microsoft Research は、MICROSOFT デシジョン ツリー アルゴリズムの実装に基づいて、SQL Server 2005 で使用されていた元の ARTXP アルゴリズムを開発しました。 したがって、ARTXP アルゴリズムは、定期的な時系列データを表す自動回帰ツリー モデルとして記述できます。 このアルゴリズムは、過去の項目の可変数を、予測される現在の各項目に関連付けます。 ARTXP という名前は、自動回帰ツリー メソッド (ART アルゴリズム) が複数の不明な以前の状態に適用されるという事実から派生しています。 ARTXP アルゴリズムの詳細については、 Time-Series 分析の自動回帰ツリー モデルを参照してください。
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 時系列アルゴリズムは、自動回帰値を使用して、最適な 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を使用することです。 この非表示パラメーターは、アルゴリズムが時系列の差分を実行する回数を制御し、カスタム アルゴリズム パラメーターを入力して設定できます。 ただし、実験する準備が整っており、関連する計算に慣れていない限り、この値を変更することはお勧めしません。 現在、非表示のパラメーターを含む、差分順序の増加をトリガーするしきい値を制御するメカニズムは存在しないことにご注意ください。
最後に、上記の式は、季節性のヒントを含まない簡略化されたケースであることに注意してください。 季節性ヒントが指定されている場合、各季節性ヒントの式の左側に個別の AR 多項式項が追加され、同じ戦略が適用され、違った系列が不安定になる可能性のある項を排除します。
Microsoft タイム シリーズ アルゴリズムのカスタマイズ
Microsoft Time Series アルゴリズムでは、結果として得られるマイニング モデルの動作、パフォーマンス、精度に影響を与える次のパラメーターがサポートされています。
注
Microsoft Time Series アルゴリズムは、SQL Server のすべてのエディションで使用できます。ただし、時系列分析をカスタマイズするためのパラメーターを含む一部の高度な機能は、SQL Server の特定のエディションでのみサポートされています。 SQL Server の各エディションでサポートされる機能の一覧については、「SQL Server 2012 の各エディションでサポートされる機能」を参照してください。
季節性の検出
ARIMA アルゴリズムと ARTXP アルゴリズムはどちらも、季節性または周期性の検出をサポートします。 Analysis Services では、トレーニング前に高速フーリエ変換を使用して季節性を検出します。 ただし、アルゴリズム パラメーターを設定することで、季節性の検出と時系列分析の結果に影響を与えることができます。
AUTODETECT_SEASONALITYの値を変更することで、生成される可能な時間セグメントの数に影響を与えることができます。
PERIODICITY_HINTの値または複数の値を設定することで、データ内の予想されるサイクルに関する情報をアルゴリズムに提供し、検出の精度を向上させることができます。
注
ARTXP アルゴリズムと ARIMA アルゴリズムはどちらも、季節性のヒントに非常に敏感です。 そのため、間違ったヒントを指定すると、結果に悪影響を及ぼす可能性があります。
アルゴリズムの選択とアルゴリズムのブレンドの指定
既定では、または MIXED オプションを選択すると、Analysis Services によってアルゴリズムが結合され、同じ重みが割り当てられます。 ただし、SQL Server 2008 Enterprise では、特定のアルゴリズムを指定することも、結果を短い予測または長期的な予測に重み付けするパラメーターを設定することで、結果内の各アルゴリズムの割合をカスタマイズすることもできます。 既定では、 FORECAST_METHOD パラメーターは MIXED に設定され、Analysis Services は両方のアルゴリズムを使用し、その値を重み付けして各アルゴリズムの強度を最大化します。
アルゴリズムの選択を制御するには、 FORECAST_METHOD パラメーターを設定します。
相互予測を使用する場合は、ARIMA ではクロス予測がサポートされていないため、ARTXP または MIXED オプションを使用する必要があります。
短期的な予測を優先する場合は、 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 に設定されている場合に、モデルがアルゴリズムをブレンドする方法を示しています。 ARIMA と ARTXP は最初は均等に重み付けされますが、予測ステップの数が増えると、ARIMA の重みが大きくなります。
これに対し、次の図は、 PREDICTION_SMOOTHING が 0.2 に設定されている場合のアルゴリズムのブレンドを示しています。 ステップ 0 の場合、モデルは ARIMA を 0.2、ARTXP を 0.8 として重み付けします。 その後、ARIMA の重みが指数関数的に増加し、ARTXP の重みが指数関数的に減少します。
アルゴリズム パラメーターの設定
次の表では、Microsoft Time Series アルゴリズムで使用できるパラメーターについて説明します。
| パラメーター | 説明 |
|---|---|
| 自動周期検出 | 周期性を検出する 0 ~ 1 の数値を指定します。 既定値は 0.6 です。 値が 0 に近い場合、周期性は、強い周期データに対してのみ検出されます。 この値を 1 に近い値に設定すると、ほぼ定期的な多くのパターンが検出され、周期性ヒントが自動生成されます。 注: 多くの周期性ヒントを処理すると、モデルのトレーニング時間が大幅に長くなる可能性がありますが、モデルの精度が高くなります。 |
| 複雑性ペナルティ | デシジョン ツリーの拡張を制御します。 既定値は 0.1 です。 この値を小さくすると、分割の可能性が高くなります。 この値を大きくすると、分割の可能性が低下します。 注: このパラメーターは、SQL Server の一部のエディションでのみ使用できます。 |
| 予測方法 | 分析と予測に使用するアルゴリズムを指定します。 指定できる値は、ARTXP、ARIMA、または MIXED です。 既定値は MIXED です。 |
| HISTORIC_MODEL_COUNT | 構築される履歴モデルの数を指定します。 既定値は 1 です。 注: このパラメーターは、SQL Server の一部のエディションでのみ使用できます。 |
| HISTORICAL_MODEL_GAP | 2 つの連続する履歴モデル間のタイム ラグを指定します。 既定値は 10 です。 値は、単位がモデルによって定義されている時間単位の数を表します。 たとえば、この値を g に設定すると、g、2*g、3*g などの間隔でタイム スライスによって切り捨てられたデータに対して履歴モデルが構築されます。 注: このパラメーターは、SQL Server の一部のエディションでのみ使用できます。 |
| 不安定性の感度 | 予測分散が特定のしきい値を超えるポイントを制御します。その後、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 | 履歴データのギャップを埋める方法を指定します。 既定では、データのギャップは許可されません。 データに複数の系列が含まれている場合、系列に不規則なエッジを持つことはできません。 つまり、すべての系列の始点と終点が同じである必要があります。 Analysis Services では、時系列モデルで PREDICTION JOIN を実行するときに、このパラメーターの値を使用して新しいデータのギャップを埋めます。 次の表に、このパラメーターに使用できる値を示します。なし: 既定値。 欠損値を、トレーニング済みモデルの曲線に沿ってプロットされた値に置き換えます。 前: 前のタイム スライスの値を繰り返します。 平均: トレーニングで使用されるタイム スライスの移動平均を使用します。 数値定数: 指定した数値を使用して、すべての欠損値を置き換えます。 |
| PERIODICITY_HINT | データの周期性に関するヒントをアルゴリズムに提供します。 たとえば、売上が年によって異なり、系列の測定単位が月である場合、周期性は 12 です。 このパラメーターは {n [, n]} の形式を受け取ります。n は任意の正の数です。 角かっこ [] の n は省略可能であり、必要に応じて繰り返すことができます。 たとえば、月単位で提供されるデータに対して複数の周期性ヒントを提供するには、{12、3、1} と入力して、年、四半期、月のパターンを検出します。 ただし、周期性はモデルの品質に大きな影響を与えます。 指定したヒントが実際の周期性と異なる場合、結果が悪影響を受ける可能性があります。 既定値は {1}です。 注: 中かっこは必須です。 また、このパラメーターには文字列データ型があります。 したがって、データ マイニング拡張機能 (DMX) ステートメントの一部としてこのパラメーターを入力する場合は、数値と中かっこを引用符で囲む必要があります。 |
| PREDICTION_SMOOTHING | 予測を最適化するためにモデルを混在させる方法を指定します。 このパラメーターは、SQL Server の一部のエディションでのみ使用できます。 0 ~ 1 の任意の値を入力することも、次のいずれかの値を使用することもできます。 0: 予測で ARTXP のみを使用することを指定します。 予測は、より少ない予測用に最適化されています。 0.5: (既定値) 予測では、両方のアルゴリズムを使用し、結果をブレンドすることを指定します。 1: 予測で ARIMA のみを使用することを指定します。 予測は、多くの予測に最適化されています。 注: トレーニングを制御するには 、FORECAST_METHOD パラメーターを使用します。 |
モデルフラグ
Microsoft Time Series アルゴリズムでは、次のモデリング フラグがサポートされています。 マイニング構造またはマイニング モデルを作成するときは、モデリング フラグを定義して、分析中に各列の値を処理する方法を指定します。 詳細については、「 モデリング フラグ (データ マイニング)」を参照してください。
| モデリング フラッグ | 説明 |
|---|---|
| NULLなし | 列に null を含めることができないことを示します。 モデルのトレーニング中に Analysis Services で null が検出された場合、エラーが発生します。 マイニング構造列に適用されます。 |
| モデル存在のみ | 列は、欠落している状態と存在している状態の2つの可能性があるものとして扱われることを意味します。 null は欠損値です。 マイニング モデル列に適用されます。 |
要求事項
時系列モデルには、一意の値、入力列、および少なくとも 1 つの予測可能な列を含むキー時刻列が含まれている必要があります。
入力列と予測可能列
Microsoft Time Series アルゴリズムでは、次の表に示す特定の入力列コンテンツ タイプ、予測可能な列コンテンツ タイプ、モデリング フラグがサポートされています。
| コラム | コンテンツの種類 |
|---|---|
| 入力属性 | 連続、キー、キー時間、およびテーブル |
| 予測可能な属性 | 連続、表 |
注
循環コンテンツ タイプと順序付けコンテンツ タイプはサポートされていますが、アルゴリズムでは個別の値として扱われ、特別な処理は実行されません。
こちらもご覧ください
Microsoft 時系列アルゴリズム時系列モデルクエリの例時系列モデルのマイニングモデルコンテンツ (分析サービス - データ マイニング)