異常検知の技術は様々な分野で応用できます。例えば機械系では故障の検出。システム運用では障害の検出。セキュリティ分野では攻撃や侵入検知。マーケティング分野では流行のブレークの検出などです。ではどのようにすればそのような異常検知の技術を実現できるでしょうか?
そこで鍵となるのがデータです。データから異常を検知する方法はいくつかあります。例えば固定の閾値ベースや、移動平均をとって動的閾値ベースもあります。また一定の条件にマッチされるルールベースも有効です。
今回は機械学習を使った異常検知の方法をご紹介します。しかし、実はその方法も一つだけではありません。今回は4つのケースに従って適用する手法をご紹介したいと思います。
Splunkには、無償で追加できるアドオンとして MLTKというAppがあります。MLTKにはSmart Assistantという、機械学習を簡単に利用頂けるようにステップ(データセット定義・モデル作成・評価・実装)に従ってモデル作成や実装ができる機能があります。
Splunk Machine Learning Toolkitについて詳しくは、こちらをご覧ください。
異常検知の手法を説明する前にどんな異常を検知したいのかを整理しておく必要があります。今回は以下の4つのケースを取り上げます。
今回は以下のログイン数をカウントしたデータを使って異常を検知します。
今回のような時系列データに対しては、MLTKのSmart Outlier Detection機能を使うと、前処理として時間、曜日、日にち、月というフィールドをボタン一つで作成してくれます。なので、この時間にしてはおかしいとか、日曜日でこの数字はおかしいといった事を見つけることが出来ます。
今回は時間と曜日単位でデータをグルーピングして、時系列別にそれぞれの異常値を検出します。左の画面で条件を入力して実行すると、下記画面のようにグループ毎のデータ分布と異常と判断された箇所が表示されます。閾値は自由に変更可能です。
時系列グラフで表示したい場合は、グラフ種類で「時間」を選択すると、どの時間帯に異常が検知され発生したのかが視覚的にわかります。(画面だとわかりづらいですが、黄色の丸が異常の部分です)
条件と閾値が決定したら、最後に検出モデルを保存してスケジュール実行できます。また結果によってアラートを発報するところまで設定ができます。
Smart Outlier Detection機能が使っているアルゴリズムはDensity Functionという確率密度分布を使ったものになります。しかし、推奨のアルゴリズムが設定されているので、ユーザーが悩むこともありません。もっと詳しく知りたい方はこちらの記事もご覧ください。
Splunk MLTK Smart Outlier Detection Assistant について
実際に問題や故障が起きる前に異常を検知したい。という願望はお持ちではないでしょうか。機械学習を使えばこれが必ずしも叶うわけではありませんが、場合によってはその兆候を捉えることができます。
その一つに時系列予測があります。この時系列予測を使って実際に障害や故障が起こる前にその予兆を検知することが可能になるかもしれません。
異常の検出方法としては既存データから時系列予測モデルを作成し、その予測値が閾値を超えたかどうかで判断します。そうすることで現時点では異常でなくても、将来超える可能性があるということで、障害や故障の予防保守が可能になります。
MLTKのSmart Forecast の画面がこちらです。オプションとしてルックアップファイルから祝日などのspecial time を追記できます。これにより祝日やイベント日など不定期に訪れる日付も意識したモデルが作成できます。
実際の予測結果の図がこちらです。図だと分かりづらいですがグラフの右側の方の水色で囲われた箇所が今後の予測グラフになります。閾値をセットしてこの予測箇所が超えるかどうかを判断することができます。
こちらのモデルも同じように保存して、スケジュール実行とアラート発砲が可能です。例えば1日一回実行して、2週間先まで予測するモデルを作成すると、2週間以内に異常が発生する可能性を検知できます。
Smart Forecastにもっと知りたい方はこちらの記事も参考にしてください。
Splunk機械学習を使った予測分析 (StateSpaceForecastアルゴリズム)
続いて次の紹介もしたいところですが、長くなってしまいましたので、残りの2つのケースについては別のBlogで紹介させていただきます。
また、「機械学習を使って、「データのダウンタイム」を防ぐ」もあわせてご覧ください。
----------------------------------------------------
Thanks!
丸山 潤一
Splunkプラットフォームは、データを行動へとつなげる際に立ちはだかる障壁を取り除いて、オブザーバビリティチーム、IT運用チーム、セキュリティチームの能力を引き出し、組織のセキュリティ、レジリエンス(回復力)、イノベーションを強化します。
Splunkは、2003年に設立され、世界の21の地域で事業を展開し、7,500人以上の従業員が働くグローバル企業です。取得した特許数は1,020を超え、あらゆる環境間でデータを共有できるオープンで拡張性の高いプラットフォームを提供しています。Splunkプラットフォームを使用すれば、組織内のすべてのサービス間通信やビジネスプロセスをエンドツーエンドで可視化し、コンテキストに基づいて状況を把握できます。Splunkなら、強力なデータ基盤の構築が可能です。