前回の記事で Splunk MLTKを使った異常検知手法の2つをご紹介しました。今回は残りの2つの手法についてご紹介します。
類似の多量のデータから異なる動きをしている物を見つけたい。そんな時はこれからご紹介するクラスタリングが有効です。クラスタリングはデータの特性から特定のグループに分類してくれます。分類されたグループがマイノリティーであれば、異常である可能性があります。また同じグループでも中心から外れているものを異常と判断することも可能です。今回はクラスタリングを使った2つのアプローチをみてみましょう。
今回使うデータは Disk が出力するSMARTという健康状態をチェックするためのデータを使います。 DISKモデル毎に3種類の SMARTデータの平均値を計算し、この情報を元にクラスタリングしたいと思います。
3種類のデータを元に3D Scatter plot で可視化すると以下の図のように表示できます。これを Smart Clustering機能で2つのグループにクラスタリングしてみます。
次の確認ページにいくと各Diskモデルがどのクラスターに属しているか確認できます。今回はCluster1が一つだけでしたので、このDisk Model(ST33000651AS)が異常と判断できます。
また、クラスターの中心部からの距離も確認できます。この中心からの距離が遠いということは、すなわち同じクラスターでも少し異なる動きをしているということです。この距離を使って異常データを検出することも可能です。
最後の実装ページではアラート設定ができますが、ここではこのクラスターの中心からの距離を閾値にして超えたものがアラートとして発報できます。
もし、特定のグループが検出された場合にアラートをあげたければ、個別でアラート設定が必要ですが、実装は可能です。
Smart Clusteringでは K-meansが利用されておりますが、MLTKには他にも BirchやDBSCAN, X-meansなどのアルゴリズムが利用できます。
最後に相関性があるデータに対する異常検知です。例えば水量と温度と電圧に関するデータがリンクして動いているようなケースです。この場合温度が上がっているのに水量が変化しないと異常もしくはその予兆かもしれません。
このような場合は機械学習の予測モデルが利用できます。この予測値と実際の値のズレの大きさで異常と判断するのです。
注意しないといけないのは、それぞれのフィールド間に相関性があるかどうかです。相関性のないデータに対してはこの手法は利用できません。
相関性のチェックには CorrelationMatrix というアルゴリズムが利用できます。以下のアプリ(https://splunkbase.splunk.com/app/4403/) をインストールしておいてください。
今回使うサンプルデータに対して相関性をチェックすると、非常に高い相関性が確認できました。
次にデータの正規化をしておきます。データの数値の大きさに違いがでると、予測の重要度に影響が出てしまうためです。正規化にはStandardScalerというアルゴリズムがMLTKに用意されております。正規化されたフィールドには、SS_という頭文字がついて新規に作成されます。
次にMLTKのSmart Prediction機能を使ってモデルを作成していきます。モデルの結果も以下の図のように確認することができます。
次のページに進むと、予測に対するフィールドの寄与率が確認できます。
ここでフィールド間に大きな差が出てしまうと、寄与率の低いフィールドに変化があっても気づけないのでなるべく同じくらいになるようにする必要があります。
実際に異常が見つかったサンプルデータに対して、先ほどのモデルを適用してみます。以下のように、予測値と実測値の差分を可視化してみると後半に差が大きい箇所が見つかりました。この結果は実際に異常が発生したタイミングと合致しておりました。
前回と2回に渡ってSplunkを使って異常検知を行う4つの手法をご紹介しました。ご紹介した手法以外にも多くの検知方法があります。また評価結果によっては、もっと前処理をしたり、アルゴリズムを変えたり、チューニングをしないといけないかもしれませんが、まずは試してみるのが重要です。
是非この機会にSplunkと機械学習の最高の組み合わせを試してみてください。
----------------------------------------------------
Thanks!
丸山 潤一
Splunkプラットフォームは、データを行動へとつなげる際に立ちはだかる障壁を取り除いて、オブザーバビリティチーム、IT運用チーム、セキュリティチームの能力を引き出し、組織のセキュリティ、レジリエンス(回復力)、イノベーションを強化します。
Splunkは、2003年に設立され、世界の21の地域で事業を展開し、7,500人以上の従業員が働くグローバル企業です。取得した特許数は1,020を超え、あらゆる環境間でデータを共有できるオープンで拡張性の高いプラットフォームを提供しています。Splunkプラットフォームを使用すれば、組織内のすべてのサービス間通信やビジネスプロセスをエンドツーエンドで可視化し、コンテキストに基づいて状況を把握できます。Splunkなら、強力なデータ基盤の構築が可能です。