予測
predict
operator は、タイムスタンプの付いた一連の数値を使用して、将来の値を予測します。predict
operator は次のようなケースで役に立ちます。
- 早期警告システムとして、しきい値に達しそうになった時点でアラートを生成します。
- リソースとキャパシティの計画で、季節的な影響 (E コマース サイトでのサイバーマンデー ラッシュなど) を特定します。
- リスク計算を改善します。
たとえば、predict
operator を使用して現在のディスクの空き容量を取得し、システムのディスクが一杯になるタイミングを予測することもできます。これらのケースでは、主要なしきい値に近づいたという事実が運営マネージャに早く通知されるほど、より効果的な計画を立ててサービスの低下を防ぐことができます。
predict
operator は、2 つの予測モデルをサポートします。
- 自己回帰。高度な自己回帰 (AR) アルゴリズムを使用してデータのパターンを学習します。データに含まれるサイクリックなパターンを自動的に検出して、そのサイクルを予測に使用します。
- 線形回帰。クエリの時間範囲における既存データをトレーニング セットとして使用して線型モデルを生成し、このモデルを使用して今からの値を外挿します。
構文
predict
の構文は、線形回帰モデルと自己回帰モデルのどちらを使用するかで異なります。どちらの場合も、以下の要件が適用されます。
- クエリには aggregation operator (
count, min, max, sum
など) が含まれている必要があります。集計はタイムスライスごとでなければなりません (例:count by _timeslice.
)。 - クエリには、
timeslice
operator が含まれている必要があります。 - aggregation operator と
timeslice
operator は、predict
operator の前に指定しなければなりません。
線形回帰モデルの構文
線形回帰モデルの場合:
... | timeslice 1m | count by _timeslice | predict _count by 1m
線形回帰アルゴリズムは、出力に以下のフィールドを作成します。
_count
現在選択されている時間範囲における毎分の一致数。_count_predicted
単純線形モデルで予測された値。(absolute value)_count_error
単純線形モデルで予測された値と実際の値の差。
自己回帰モデルの構文
… | timeslice 1m | count by _timeslice | predict _count by 1m model=ar, ar.window=n, forecast=n
AR モデルを使用して predict
を実行する場合のパラメータを下表に示します。
model=ar |
必須。このパラメータは、単純線形回帰モデルではなく AR モデルを使用することを指定します。 |
ar.window |
省略可能。このパラメータは、予測のベースとなる連続データ ポイント数を指定します。 このウィンドウ サイズは、自己回帰モデルのパフォーマンスに大きく影響します。そのため、Sumo Logic はクエリに最適なデフォルト値を自動的に選択します。 自己回帰モデルでは、モデルを適切にトレーニングするために、線形回帰モデルよりも多くのデータ ポイントを必要とします。AR モデルでは、100 以上のデータ ポイントを生成することをお勧めします。データ ポイント数が 100 未満である場合、Sumo Logic は学習済みのモデルが最適ではない可能性があるという警告が表示されます。 ウィンドウ サイズをカスタマイズする場合には、時系列に含まれるデータ ポイント数の 40% 超に設定することをお勧めします。ただし、ウィンドウ サイズをあまり大きくしないでください。最大でも 60% にしてください。そうしないと、モデルが適切にトレーニングされません。 |
forecast |
省略可能。このオプションは、予測の期間をデータ ポイント数または分数で指定します。forecast パラメータは、timeslice operator と同じ構文を使用し、次のどちらかを受け入れます。- 単純な数値。たとえば、 forecast=5 と指定すると、今から 5 つのデータ ポイントを予測します。- 時間。たとえば、 forecast=5m と指定すると、今から 5 分間を予測します。forecast パラメータの値を指定しないと、デフォルトとして今から 3 つのデータ ポイント (forecast=3 ) が予測されます。timeslice |
次のクエリでは、最初の 3 行で「error」という単語を含むメッセージ数を 30 秒ごとにカウントします。最後の行では、自己回帰モデルを使用して、50 のデータ ポイントに基づいて今から 100 のデータ ポイントを予測します。
_sourceCategory=taskmanager jobState=InQueue error | timeslice 30s | count by _timeslice | predict _count by 30s model=ar,ar.window=50,forecast=100
自己回帰アルゴリズムは、出力に以下のフィールドを作成します。
_count
30 秒のタイムスライスごとのエラー数。_count_predicted
自己回帰アルゴリズムで予測された値。_count_linear
単純線形回帰で予測された値。(absolute value)_count_error
単純線形回帰で予測された値と実際の値の差。
制限事項
これらの内部の制限は、最高のパフォーマンスを保証するための「スピード制限」として設けられています。
predict
は、モデルの予測に 10,000 を超える入力ポイントは使用しません。predict
は、100 を超えるポイントは予測しません。predict
は、20,000 を超える入力ポイントは補完しません。(predict は、タイムスライスが存在していてもデータ ポイントが存在しない場合には「ファントム」入力ポイントを追加します。)
サイクリック パターンと自己回帰モデル
ar.window
内でサイクリックなパターンが存在する場合、自己回帰アルゴリズムはそのサイクリック パターンを学習して予測に利用します。
たとえば、1 時間ごとに循環するサイクリック パターンがあれば、次のクエリでそのサイクルを学習できます。
… | timeslice 5m
| <aggregate function> by _timeslice as _val
| predict _val by 5m model=ar, ar.window=15
このクエリでは、ウィンドウ サイズ (15 の連続したデータ ポイント) で 1 時間以上をカバーしています (15 データ ポイント * 5 分間隔 = 75 分)。したがって、周期が 75 分未満のサイクリック パターンがあれば、自己回帰モデルはそのパターンを検出します。
例
predict での線形回帰の使用
このクエリは、線形回帰を使用して毎分の 404 エラー カウントを予測します。
_sourceCategory=Labs/Apache/Access status_code=404 | timeslice 1m | count(status_code) as error_count by _timeslice | predict error_count by 1m
このクエリは、error_count
、error_count_predicted
、および error_count_error
という列を持つ集計テーブルを返します。
[Line Chart (折れ線グラフ)] アイコンをクリックすると、コンボ グラフが作成され、error_count_error
が縦棒グラフで表示され、error_count
と error_count_predicted
が別々の折れ線グラフとしてその上に表示されます。(absolute value)_count_error
系列はデフォルトでオフになっています。凡例でクリックすると、縦棒グラフに表示されます。
predict での自己回帰モデルの使用
このクエリは、自己回帰モデルを使用して毎分の 404 エラー カウントを予測します。
_sourceCategory=Labs/Apache/Access status_code=404 | timeslice 1m | count(status_code) as error_count by _timeslice | predict error_count by 1m model=ar
このクエリは、error_count
、error_count_predicted
、error_count_linear
、および _error_count_error
という列を持つ集計テーブルを返します。
[Line Chart (折れ線グラフ)] アイコンをクリックすると、コンボ グラフが作成され、error_count_error
が縦棒グラフで表示され、error_count
と error_count_predicted
が別々の折れ線グラフとしてその上に表示されます。(absolute value)_count_error
系列はデフォルトでオフになっています。凡例でクリックすると、縦棒グラフに表示されます。
凡例でクリックすることにより、_count_linear
系列を表示して、単純線形回帰モデルで予測された値を表示することもできます。