LoginSignup
2
2

More than 1 year has passed since last update.

SPSS Modelerで異常検知

Last updated at Posted at 2018-07-07

SPSS Modelerを使って、異常検知モデルを作ってみます

環境

Modeler 18.1.1

参照

IBM SPSS Modeler - 概要 - 日本
https://www.ibm.com/jp-ja/marketplace/spss-modeler

A.事前準備

A1. 以下からプロジェクトのファイルをzipでダウンロードします。
image.png

hkwd/DSXL_MachineErr
https://github.com/hkwd/DSXL_MachineErr

A2. zipファイルを解凍し、データファイルを確認します。。
DSXL_MachineErr-master.zipを解凍するとDSXL_MachineErr-master\DSXL_MachineErr-master\datasetsに以下の3ファイルが入っています。

Cond3n_e111.csv
Cond3n_e.csv
Cond3n_e_new.csv

A3. SPSS Modelerを起動します

B.データの確認

B1. データを確認します
Cond3n_e.csvというファイルをModelerのキャンバスにドラッグアンドドロップします。

image.png

出力タブからテーブルノードを選択し、ドラッグアンドドロップしたCond3n_e.csvと接続します。
テーブルノードを選択状態にして、黄色の五角形に緑の三角のボタンで実行します。

image.png

以下のようなデータが入っています。各列の意味は以下です。
M_CD: マシンコード
UP_TIIME: 起動時間
POWER: 電力
TEMP: 温度
POWER_DIFF: 電力差分
TEMP_DIFF: 温度差分
POWER_5MAVG: 電力差分5期移動平均
TEMP_5MAVG: 温度差分5期移動平均
ERR_CD_5FUTURE: 5期先エラーコード

image.png

確認し終わったら赤い×ボタンで閉じます。

C.モデル作成

SPSS Modelerを使って、電力や温度の変化などからエラーは発生していないけれども異常(普通ではない)データを発見するモデルを作成します。

C1. 集計
レコード設定タブからレコード集計を選び、キャンバスにドラッグアンドドロップします。
そして、Cond3n_e.csvのノードと接続します。

image.png

次にダブルクリックをしてプロパティを開きます。

キーフィールドの「利用可能なフィールドの設定から取得」のアイコンをクリックします。

image.png

「M_CD」を選択し、OKで閉じます。

image.png

デフォルトモードで平均、最大、中央値にチェックを入れます。このチェックを入れた集計がデフォルトで有効になります。
次に、フィールドにレコード度数を含めるのチェックを外します。
集計フィールドの「利用可能なフィールドの設定から取得」のアイコンをクリックします。

image.png

集計項目を選びます。
「M_CD」と「UP_TIME」以外の列を選択し、OKをクリックします。

image.png

選んだフィールドの平均、最大、中央値を集計するよう設定されました。
「ERR_CD_5FUTURE」の平均値や中央値は意味がないので、最大にのみチェックをいれるように修正します。
image.png

プレビューで集計後のデータを確認します。
「M_CD」で一意になり、センサーデータの平均、最大、中央値が計算されています。

赤い×ボタンで閉じます。

image.png

レコード集計の設定もOKで閉じます。

image.png

C2. エラーなしデータのみの抽出

出力タブからテーブルノードを選択し、レコード集計ノードと接続します。
テーブルノードを選択状態にして、黄色の五角形に緑の三角のボタンで実行します。
image.png

一番左にあるERR_CD_5FUTURE_Maxの中から「0」のデータを一つ選び、生成メニューから条件抽出ノード(”AND")を選びます。
赤い×ボタンで閉じます。
image.png

キャンバスに(生成)という名前の条件抽出ノードができています。
ダブルクリックしてプロパティを開きます。
image.png

ERR_CD_5FUTURE_Max = 0の条件式が作られています。
SPSS Modelerにはこのように出力結果から新たな処理を作る便利な機能があります。
image.png

出力タブからテーブルノードを選択し、条件抽出ノードと接続します。
テーブルノードを選択状態にして、黄色の五角形に緑の三角のボタンで実行します。

image.png

データを確認するとエラーのデータがなくなっています。

image.png

グラフタブから散布図ノードを選択し、条件抽出ノードと接続します。
ダブルクリックし、プロパティを開きます。
image.png

X軸にPower_Mean、Y軸にTEMP_Meanを設定し、実行をクリックします。

image.png

正常なマシンのデータに絞り込まれているにも関わらず、右下には普通ではないデータが離れてプロットされています。こういうマシンは今は正常でも問題が潜んでいるかもしれません。

image.png

表示から「探索モード」と「インタラクティブ」を選択し、「選択範囲をアクティブにします」アイコンをクリックします。

image.png

このデータを囲みます。
image.png

生成メニューから領域の抽出ノードを選びます。
赤い×ボタンで閉じます。
image.png

変更内容は保存しないで閉じます。
image.png

キャンバスに新たな(生成)という名前の条件抽出ノードができています。
image.png

ダブルクリックすると散布図で囲んだ領域が条件式として生成されています。
OKをクリックして閉じます。
image.png

先ほど作った条件抽出ノードの後ろにつなぎ、プレビューします。
image.png

449のマシンであることがわかります。

赤い×ボタンで閉じます。

image.png

C3. モデルの作成
このように散布図をみて普通ではない異常なデータを見つけることは、項目数が多い場合は困難です。このような異常データを自動的に発見するのが異常値検査ノードです。

フィールド設定タブからデータ型ノードをドラッグアンドドロップし、正常データのみに絞り込んだ条件抽出ノードにつなぎます。
ダブルクリックでプロパティを開きます。
image.png

値の読み込みをクリックします。
image.png

「M_CD」列のロールをなしに設定します。
OKをクリックして閉じます。
image.png

モデル作成タブより異常値検査ノードをドラッグアンドドロップし、データタイプノードとつなぎます。
ダブルクリックして、プロパティを開きます。
image.png

「異常値インデックスの最低レベル」にチェックを入れます。
image.png

エキスパートタブに移り、モードを「エキスパート」に指定します。
「ピアグループ数を指定」を指定し、クラスター数を1に設定します。
そして、実行ボタンをクリックします。
image.png

C4. 結果の確認
レコード設定タブからソートノードをドラッグアンドドロップし、モデルナゲットとつなぎます。
ダブルクリックでプロパティを開きます。
image.png

ソート項目の「利用可能なフィールドの設定から取得」のアイコンをクリックします。
image.png

\$O-AnomalyIndexを選び、OKをクリックします。
image.png

順序を降順に設定し、OKで閉じます。
image.png

右クリックし、プレビューで確認します。
image.png

\$O-AnomalyがTのデータは異常と判定されたデータです。先ほどの449も異常と判定されています。
さらに\$O-Field-1や\$O-Field-2に異常と判定した理由となった項目が列挙されます。たとえば2行目のデータはPOWER_5AVG_Mean,POWER_DIFF_MEANなどで他のデータと比べて異常だったと判定されました。
image.png

POWER_5AVG_Mean,POWER_DIFF_MEANがどちらも0であることが異常と判定された原因です。
image.png

赤い×ボタンで閉じます。

グラフタブから散布図ノードを選択し、モデルナゲットと接続します。
ダブルクリックし、プロパティを開きます。
image.png

X軸にPOWER_5AVG_Mean,Y軸にPOWER_DIFF_MEAN,Color 色に\$O-Anomalyを設定し、実行をクリックします。
image.png

確かに他の点から離れている様子がわかります。他に異常と判定された2レコードも他の点から離れていました。
image.png

おわりに

Anomaly(異常値検査)ノードは教師なし学習の手法です。教師あり学習の場合は異常ケースがある程度の件数はないとモデルを作ることができませんが、教師なし学習であれば、異常ケースが少ない場合にも利用することができるます。ですので、滅多に発生しない故障や今までに発生したことのない故障を検知できる可能性もあります。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2