SPSS
IoT
modeler

スタンドアローン版のSPSS Modelerで故障予知

スタンドアローン版のSPSS Modeler Flowsの機能を使って、故障予知モデルを作ってみます

「DSXLのSPSS Modelerで故障予知 」の記事のスタンドアローン版用です。
https://qiita.com/kawada2017/items/f245df00850f3da54b71

環境

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を使って、電力や温度の変化などから5期先のエラーコードを予測するモデルを作成します。

C1. データの型定義
フィールド設定タブからフィールド設定のデータ型を選び、キャンバスにドラッグアンドドロップします。
そして、Cond3n_e.csvのノードと接続します。

image.png

次に右クリックをして編集をクリックし、プロパティを開きます。
image.png

ERR_CD_5FUTUREは数値のデータですが、連続型ではないので、ERR_CD_5FUTUREの尺度をカテゴリ型に設定し、値の読み込みします。

image.png

ERR_CD_5FUTUREには4種類の名義型のデータがあると判定されます。
一番上の二つのM_CDとUP_TIMEのロールを「なし」に設定します。
一番下の列のERR_CD_5FUTUREのロールを「対象」に設定します。TEMPやPOWERをつかって、ERR_CD_5FUTUREを予測するという設定になります

image.png

C2. データの検査
出力タブから「データ検査」を選び、キャンバスにドラッグアンドドロップします。
そして、データ型ノードと接続します。
データ検査ノードを選択状態にして、黄色の五角形に緑の三角のボタンで実行します。
image.png

各列の最大値、平均などの情報を一覧で確認することができます。

image.png

欠損値検査のタブを開くと外れ値や欠損値の情報を確認することができます。

image.png

C3. モデルの作成

モデル作成タブの一覧からC5.0を選び、キャンバスにドラッグアンドドロップします。C5.0は予測分析のできる決定木アルゴリズムの一つです。
そして、データ型ノードと接続します。
C5.0を選択状態にして、黄色の五角形に緑の三角のボタンで実行します。
image.png

実行が終わるとモデルが作成されます。
右クリックで編集を選びます。

image.png

予測変数の重要度をみるとTEMP、POWERが説明変数としての重要度が高いことがわかります。
image.png

ビューアータブにうつりを、「度数情報を表とグラフで表示」のアイコンと「左から右」のアイコンをクリックして決定木を表示します。
TEMPが259度未満だと202のエラーと判定されることがわかります。また、TEMPが259度以上でもPOWERが857未満なら101のエラーと判定されることがわかります。
このようにどういう条件でどうなるかがすべて示されるのが決定木モデルの特徴です。
image.png

C4. モデルの評価
ストリーム名をクリックし、キャンバスに戻ります。
出力タブの一覧から精度分析を選び、キャンバスにドラッグアンドドロップします。
そして、モデルのナゲットノード(黄色)と接続し、実行します。

image.png

作成したモデルの精度は99.33%であることがわかります。
image.png

D. スコアリング

良いモデルができたので新しいセンサーデータをこのモデルにかけて将来のエラーを判定してみます。

D1. 新しいセンサーデータの入っているCond3n_e111.csvをファイルから選び、キャンバスに置きます。
そして右クリックしプレビューで中身を確認します。

image.png

ここにはERR_CD_5FUTUREの列はありません。
赤い×ボタンで閉じます。
image.png

POWERやTEMPから5期先のエラーを予測してみます。

D2. モデルナゲットを右クリックしてコピーします。
image.png

キャンバスの何もないところで右クリックして、貼り付けします。
image.png

D3. 貼り付けたモデルナゲットにCond3n_e111.csvから接続します。
さらに出力タブからテーブルノードを選び、キャンバスにドラッグアンドドロップします。
そして、モデルナゲットノードと接続します。
それからテーブルノードを選択状態にして、黄色の五角形に緑の三角のボタンで実行します。
image.png

D4. 新たに\$C-ERR_CD_5FUTUREと\$CC-ERR_CD_5FUTUREの列が追加されています。
\$C-ERR_CD_5FUTUREが予測結果です。\$CC-ERR_CD_5FUTUREがその確度を示しています。このデータの場合、4レコード目でPOWERやTEMPに大きな変化があったときに将来エラーコード202が起きる可能性が9割以上あると予測をしています。
image.png