±3標準偏差を外れ値と定義して欠損値に置換する(SPSS Modeler データ加工逆引き5-17)

# ±3標準偏差を外れ値と定義して欠損値に置換する

![スクリーンショット 2024-04-12 16.26.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/57cec1e8-419b-30eb-48da-971bb1c25907.png)

*逆引き3-6では外れ値として削除/抽出しましたが、欠損値NULLに置き換えます。

https://qiita.com/416nishimaki/items/9ab448424ca53b03f9f2

## 1.想定される利用目的

・予測モデル精度向上のための前処理（異常値への対処）

## 2.サンプルストリームのダウンロード

https://github.com/yoichiro0903n/blue/raw/main/outliers_sd_null.str

## 3.サンプルストリームの説明

![スクリーンショット 2024-04-12 17.52.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/5698af94-b5f6-d663-445e-873976a01ab3.png)

a.入力するデータは以下の通りです。平均50、標準偏差10、サンプル数10,000レコードで正規分布するようにデータを発生させています。
![スクリーンショット 2024-04-12 18.09.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/81e860e6-6251-59d8-339c-cdb7b504924c.png)

#### [データ検査]ノードを利用する方法

b.[データ検査]ノードを編集します。[外れ値]が3標準偏差、極値は5標準偏差で初期設定されています。
![スクリーンショット 2022-07-10 13.20.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e5e400a5-12d3-5d0c-1880-1923d0d96d41.png)

[データ検査]ノードを編集します。[欠損値検査]タブで外れ値が28レコード確認できました。[アクション]を[無効]にします。
![スクリーンショット 2024-04-12 17.55.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/d1ffef84-bf77-77f0-78a9-7583c573cf24.png)

[生成]メニューから[外れ値および欠損値スーパーノード]を選択します。
![スクリーンショット 2024-04-12 17.56.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/429b222b-02a1-bc7a-5a5d-f5e7eea7138a.png)

ストリーム上のcと同じノードが自動生成されます。
![スクリーンショット 2024-04-12 17.56.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/bb827f25-3058-76e5-3e2f-a250fe19a538.png)

c.[スーパーノード]を編集します。生成した10,000レコードから正確に±3σ（シグマ）を求め、外れ値を破棄するように式が埋め込まれています。
![スクリーンショット 2024-04-12 18.21.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/60b4098a-947c-d517-b1f1-be558fb5215c.png)


[プレビュー]をします。10,000レコードから外れ値を破棄した9,972レコードが表示されます。
![スクリーンショット 2022-07-10 11.07.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/f975e25d-712b-2193-b51b-f23252bc141d.png)

d.[ソート]ノードを編集します。

![スクリーンショット 2024-04-12 17.57.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/a0c7ff12-cea6-1000-e3b2-436069b64dfe.png)

[テーブル]を実行します。3標準偏差に該当していた28レコードがNULLに置き換わりました。
![スクリーンショット 2024-04-12 17.57.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/1d2c8ac2-ece3-9bf6-9f80-5440db6cbfcd.png)

#### [レコード集計]ノードと[レコード結合]ノードを利用する方法

e.[レコード集計]ノードを編集します。
![スクリーンショット 2024-04-12 17.58.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/1632170b-5aa9-2b04-1aef-cc407f69fb5f.png)

[プレビュー]します。平均と標準偏差が求められました。
![スクリーンショット 2024-04-12 17.58.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/89a15e71-2a5e-d7b3-a8e6-fb9b29968e72.png)

f.[レコード結合]ノードを編集します。キーをブランクにして元データにeの統計量を付与します。
![スクリーンショット 2024-04-12 17.59.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/2f680beb-86a5-909d-f397-6f12ea6774f6.png)

[プレビュー]します。
![スクリーンショット 2024-04-12 17.59.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/405cd8c5-1faf-80ef-832d-76115d17e9d8.png)

g.[置換]ノードを編集します。３標準偏差の外側のレコードを欠損値に置換します。
![スクリーンショット 2024-04-12 17.59.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e64cead3-1783-3f4f-631c-b744c46b3d9f.png)

[プレビュー]します。
![スクリーンショット 2024-04-12 18.00.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/62b6c5b6-27db-63f7-bec3-efd8759dbe11.png)

h.[ソート]ノードを編集します。

![スクリーンショット 2024-04-12 17.57.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/a0c7ff12-cea6-1000-e3b2-436069b64dfe.png)


#### 注意点

置換する値は用途によって選択します。例えば時系列予測を行う際には予測した機械学習した結果が理論上あり得ないマイナスになる場合はゼロに置換。何らかのマイナス計上を予測材料にする場合には欠損値にして学習に考慮しないなどが妥当です。

## 4.参考情報

#### ±3標準偏差を外れ値と定義して削除/抽出する

https://qiita.com/416nishimaki/items/9ab448424ca53b03f9f2

#### SPSS Modeler ノードリファレンス目次

https://qiita.com/416nishimaki/private/503037195081d3323eee

#### SPSS Modeler 逆引きストリーム集（データ加工）

https://qiita.com/416nishimaki/private/4bf813e6cba84b2a1008