ID毎に最大値からの比率を求める(SPSS Modeler データ加工逆引き4-14)

# ID毎に最大値からの比率を求める

![スクリーンショット 2022-09-04 14.35.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/5b97b2d0-a713-d6ae-5163-faf31db150c6.png)

＊①は各時系列の時点でのIDの最大値、②は事後の集計後のIDの最大値と比較します。

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

・顧客の特定行動から特徴量を作成する
・設備ログから特定イベントの経過日数を特徴量にする

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

https://github.com/yoichiro0903n/blue/blob/main/ratio2max_value.str?raw=true

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

![スクリーンショット 2022-09-04 14.23.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/7f4b1481-9a33-4362-d5d9-92b4b26ea8d9.png)

a.入力するデータは以下の通りです。7レコード目からIDが入れ替わります。
![スクリーンショット 2022-09-04 14.25.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/7bbe8a16-f8b1-8967-3070-0169516a52a2.png)

b.[フィールド作成]ノードを編集します。関数[@&#xFFF0;OFFSET(ID,1)]はIDの1行上を参照する関数です。IDが1行上と異なったら1つカウントアップすることになります。
![スクリーンショット 2022-09-04 14.26.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/c87b5eda-9e1f-c5d0-015e-a103aba7f361.png)

式ビルダーから@&#xFFF0;関数を探すと簡単に入力できます。
![スクリーンショット 2022-09-04 14.27.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/d996c5e0-2acc-581b-52ae-73bcd763c297.png)

[プレビュー]します。
![スクリーンショット 2022-09-04 14.26.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/67664292-0ce2-42cf-bd7f-8a3750a18100.png)

c.[フィールド作成]ノードを編集します。ID毎に各時点での最大値を関数[@&#xFFF0;MAX(値,レコード数)]で求めます。レコード数は現在のレコードから何行上まで参照するかを指定するためindexをそのまま使います。
![スクリーンショット 2022-09-04 14.26.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/9645da4a-819e-2288-fef9-3b22b7b86c81.png)

[プレビュー]します。①が完成しました。
![スクリーンショット 2022-09-04 14.28.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/cdf3b4b4-80de-b0ca-6198-b278c7bcd151.png)

d.[レコード集計]ノードを編集します。[キーフィールド]には[ID]を選択して最大値を求めます。
![スクリーンショット 2022-09-04 14.28.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/536d9895-a239-78e3-71d5-3895141b39ec.png)

[プレビュー]します。それぞれのIDの最大値が得られました。
![スクリーンショット 2022-09-04 14.29.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/04ac2be7-a336-a48c-f4d6-45cebb026482.png)

e.[レコード結合]ノードを編集します。[レコード結合方式]を[キー]にして[ID]を[結合キー]で内部結合します。
![スクリーンショット 2022-09-04 14.29.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/3fd112d5-6b4b-a321-918c-c57906889ba9.png)

[プレビュー]します。時系列が崩れるので整えます。
![スクリーンショット 2022-09-04 14.30.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/317a5d38-87a2-aad8-0a51-0700a04ff47b.png)

f.[ソート]ノードを編集します。
![スクリーンショット 2022-09-04 14.30.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/7d74d20f-65ed-91ad-145c-931a595c52f4.png)

g.[フィールド作成]ノードを編集します。最大値を分母に各レコードの値を割り算します。
![スクリーンショット 2022-09-04 14.31.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/4d68e51a-62ca-2dc1-6843-bd8f80a95dbf.png)

[プレビュー]します。②が完成しました。
![スクリーンショット 2022-09-04 14.31.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/0062484f-35fd-3a8f-1642-4b8246317f81.png)

#### 注意点

予測や異常検知の仕組みがリアルタイムに処理できる場合には①を、バッチ処理による実装の場合②を検討します。

## 4.参考情報

#### ID毎にカウントアップするインデックスの作成

https://qiita.com/416nishimaki/items/8cd1fc55261fd36a9013

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

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

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

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