はじめに
MELSOFT MaiLabのサンプル配布ページにて、新たに異常検知のサンプルデータが追加されていたので、早速データを取り込んで分析してみました。
実はデータ分析の教科書のハンズオンをした際に、卒業課題(?)として、この波形データで1からMELSOFTMaiLabを使えるかどうか使わせていただきました。
これができればMELSOFT MaiLabマスターです✨
頑張ります!
データを確認する
まずはダウンロードしたサンプルデータを解凍し、構成を確認します。「異常検知デモ説明.txt」というファイルには、以下の情報が記載してあります。
- デモの概要
- フォルダ構成
- 操作手順
「01_learn」(学習用データ)に含まれる時系列データ数は93個、「02_diag」(検証用データ)に含まれる時系列データ数は113個です。
データをプレビューしてみた
以下がプレビュー結果になります。
綺麗な波形ですね!異なる点はcurrent_2の振幅ですかね。
ちなみに太い部分は、完全に重ならない波形の集合になってます。
5秒、もしくは5分間隔で取得されたデータで、波形の形が同様なので、何らかのトリガーで取得されたデータと推定されます。(サンプルなので特定の波形にノイズを負荷していったような気もしますが)
パッと見た印象は学習検証共に同様の波形、current_1とcurrent_2を重ねた際のブレが気になるが両者同じ
正常波形と異常波形を目視比較しても、そんなにわからないですね。
まとめると、「パッと見た印象は学習検証共に同様の波形、current_1とcurrent_2を重ねた際のブレが気になるが両者同じ」ですかね。
学習してみた
学習は「自動」で行います。
今回は「異常の検知」が主目的になります。データセットの中身は「正常データのみ」で「周期的な波形の形状から判定」ではなく、また「波形の区切りはファイルごと」となっているので、選択された学習方法としてはオートエンコーダになるかと思います。
オートエンコーダ―については「データ分析の教科書」p40にも説明があります。
学習してみると、以下のような結果になりました。
学習時に表示されるグラフの見方は「データ分析の教科書」のp41に記載されています。
教科書では赤や黄色の領域がありましたが、今回は緑だけですね。
分布の度数が左から8、7、3、1なので、19データ分のプロットであると読み取れます。
以下妄言になるのですが、「01_learn」(学習用データ)に含まれる時系列データ数は93個であったので、恐らくこれは学習データと評価データを74:19で分割しているのではないでしょうか?
ここから、MELSOFT MaiLabの内部では、学習データの8割を学習、2割を評価として扱ってるのではないかと推測されます。
「データ分析の教科書」のp41より色分けの基準としては、度数の分布は「緑=95%」「黄色=4%」「赤=1%」となっています。
19データの1%、5%は、数値的には各々0.19と0.95で1未満になるので、色分けができなかったではないでしょうか。
テストしてみた
本来はタスクを作成し検証用のデータでタスク実行するのがスタンダードですが、検証データを事前にデータセット化し、テストします。
徐々に異常度が上がっていきますね。
「異常検知デモ説明.txt」の記載と動作が合致していますね。
これは実運用になった際の話になるのですが、
どこまで許容できるか(どこまで使ったらメンテナンスか)によりますが、タスク作成時の閾値は5周辺に設定すると良いと思います。
おわりに
一通りデータセット作成から実行までできました。
おめでとうございます!
これであなたもMELSOFT MaiLabマスターですね!
頑張ります…