![見出し画像](https://assets.st-note.com/production/uploads/images/161825289/rectangle_large_type_2_204ed867bc84f26c0081424d45800914.png?width=1200)
ルールベースの異常検知 (Ver.3.10.0)
時系列データ分析ツール Node-AI スクラムマスターの 中野 です!
今回のアップデートで、ルールベースの異常検知モデルが利用できるようになりました!
これまでNode-AIではAutoEncoderモデル(MLPカードから設定)を用いた異常検知のみに対応していましたが、「もっと基本的なモデルをベースライン(基準)として作成したい」という要望をいただいていました。
異常検知といっても時系列データには様々なタイプの異常があります。
中でも、値が大きい/小さいで判断できるような異常であれば、「カラムXがA以上、カラムYがB以下」のようなルールで検出できる可能性があります。
これを実現するのが「ルールベース異常検知モデル」となります!
AutoEncoderを用いた異常検知機能の使い方は別の記事で解説しているのでご確認ください。
ルールベース異常検知モデルの詳細はマニュアルもご確認いただければと思いますが、通常のモデルとはカードの接続方法が異なる点にご注意ください。
以下の図は、通常のAutoEncoderでの異常検知のツリーにルールベース異常検知モデルを追加したものです(赤枠部分)。
![](https://assets.st-note.com/img/1731501065-HVPX8Q5rOqpNa7In3Wm2FLtB.png?width=1200)
ルールベース異常検知の場合は、AutoEncoderモデルのように学習という概念がないため、ルールベース異常検知モデルカードに異常度可視化カードを接続します。
また学習用の処理である「正規化」や「時間窓切り出し」も不要であるため、この例であればデータカードから直接異常度可視化カードに接続します。
さて、ルールベース異常検知モデルは「ルールを設定」して動くものですから、カードを開いて適切なルールを追加していきます。
前回の以下記事で作成したダミーデータでは、 series_1 というカラムにスパイク的なノイズが含まれていました。こちらを使ってみます。
正常時/異常時のデータをあらためて比較すると、異常時のデータには正常時のデータには含まれない傾向(series_1が「2以上」の値になる箇所)が確認できます。
![](https://assets.st-note.com/img/1731574020-Hx3gcN8XUl16ZjwE0YIMyKf9.png?width=1200)
![](https://assets.st-note.com/img/1731501470-NW4cEp1xBYObeF3vKuwJkqMz.png?width=1200)
そこで、ルールベース異常検知モデルでは、「series_1が2以上」というルールを設定します。
今回は極めて単純なのでこれでよさそうですが、ルールは「かつ(AND)」「または(OR)」を柔軟に組み合わせて設定することもできます。
※ルールの設定には先にカードの接続を完了させておく必要があります。
![](https://assets.st-note.com/img/1731501414-POZtRwYr6MTDWSAXgkH8pUo9.png?width=1200)
これで異常度可視化カードを実行した結果がこちら。
![](https://assets.st-note.com/img/1731501635-iJgcIbv2qprRk6nEASDflWOu.png?width=1200)
ルールベース異常検知モデルでは、設定したルールに合致した箇所が1、それ以外の箇所で0が出力されるように作成されます。
異常度可視化カードでseries_1と一緒に表示してみると、実際にseries_1でノイズが含まれる部分で異常であると検出できていることがわかります!
このような単純なノイズであれば、AutoEncoderを用いなくても異常を検知できることがおわかりいただけたでしょうか!
実際にはseries_1だけでなく複数のセンサーに異常が含まれていたり、単純に「以上」「以下」だけで検出できないような異常があることが多いです。
そのような場合にはAutoEncoderが有用な可能性がありますが、まずはルールベースでどの程度検出できるのか基準を作っておくとよいと思います!
今回はここまで。