ゲインチャートの座標からGini(AR値)を求める(SPSS Modeler データ加工逆引き8-8)

# ゲインチャートの座標からGini(AR値)を求める

![スクリーンショット 2022-08-20 17.05.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/d2275c1a-028d-b80b-781c-60958dd8d569.png)


この記事は逆引き8-5,6,7と関連付いています。そちらも参照ください。

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

・予測モデルの性能評価
・実装後のモデルメンテナンスのための性能指標の算出


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

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

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

![スクリーンショット 2022-08-20 17.07.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/57fcdc80-e96f-583e-fa63-18a24a0ec169.png)

a.入力するデータは以下の通りです。故障有無と予測、傾向スコアの3列のデータです。
![スクリーンショット 2022-08-18 8.46.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/ff39ad43-5f8a-af31-c573-5af118503edc.png)

b.[評価グラフ]ノードを編集します。
![スクリーンショット 2022-08-20 17.11.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e8f9e5a8-6130-ae5a-e219-8d64c0ee206b.png)

[実行]します。
![スクリーンショット 2022-08-20 17.12.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/4bb34d3e-a973-fe93-1a9d-a91f4c88e4cc.png)

c.[精度分析]ノードを実行します。Gini係数は0.583です。逆引き8-6のようにROC曲線のAUCからも求められますが、今回はゲインチャートの座標からGini係数を求めます。
![スクリーンショット 2022-08-20 17.12.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/6395d2a8-b928-820b-a075-126a5c3229b4.png)

#### ゲインチャートの座標を求めて[線グラフ]ノードで描画する

d.[フィールド作成]ノードを編集します。関数@&#xFFF0;SUMを利用して故障=1を累積します。
![スクリーンショット 2022-08-20 17.13.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/77846b50-2f75-765f-1836-6b9b5ab28158.png)

e.[レコード集計]ノードを編集します。故障の全体数を累積の最大値から1レコードだけ取得します。
![スクリーンショット 2022-08-20 17.13.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/258bc574-7784-cecd-fb03-6b5d90bc890c.png)

f.[レコード結合]ノードを編集します。[レコード結合方法]を[キー]にしますが[キー]をブランクにして1対Nで結合します。
![スクリーンショット 2022-08-20 17.14.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/efea1fbc-51be-9c58-099b-d63102207bf6.png)

[プレビュー]します。
![スクリーンショット 2022-08-20 17.15.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/6e8873ef-25f4-bed6-681e-c6809ca028ff.png)

g.[フィールド作成]ノードを編集します。累積プロット（カーブ）を描くため故障の累積比率を求めます。
![スクリーンショット 2022-08-20 17.16.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/709fb7da-2c51-7557-b318-74b903e160e4.png)

h.[フィールド作成]ノードを編集します。ベストラインを設定します。列方向に参照するオフセット関数を利用します。[@&#xFFF0;OFFSET(フィールド,1)]でフィールドの値の1行上を参照します。故障の累積を上に参照してNull(undef)でなければ最大値に達していないため（if）その場合は、その時点でのレコード番号@&#xFFF0;INDEXを最大値で按分します。それ以降(else)は1になります。🇰🇵
![スクリーンショット 2022-08-20 17.16.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/a9d6e63c-105e-54b9-dc75-001fd1d37266.png)

i.[フィールド作成]ノードを編集します。チャートのX軸を作成しています。
![スクリーンショット 2022-08-20 17.17.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/9b58a9e5-27cb-2f7b-1f50-4893a8e0e769.png)

[プレビュー]します。
![スクリーンショット 2022-08-20 17.18.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/fda68a9f-5404-edfa-f290-45f50c7d0da3.png)

j.[サンプリング]ノードで最初の1レコードを抽出して原点（x=0,y=0）を便宜的に作成します。

k.[置換]ノードを編集します。抽出したレコードの値を強制的に0に置き換えます。
![スクリーンショット 2022-08-20 17.18.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/5b9308a8-f405-4bd4-2a98-2382742981b5.png)

l.[レコード追加]ノードでiとhで編集した１レコードにオリジナルの20レコードを追加します。

[プレビュー]します。
![スクリーンショット 2022-08-20 17.19.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/9e6fff6e-3c1e-7530-eda8-d7dab8e1875d.png)

m.[線グラフ]ノードを実行します。
![スクリーンショット 2022-08-20 17.20.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/cfc63c78-22d7-e27e-3cba-0f256fa23dde.png)

#### ゲインチャートの座標からGiniを計算する

累積プロット（赤の実線）は赤の波線で分割し1つの三角形と19の台形（長方形も台形として計算）に見立てて面積を求めます。ベストライン（青の実線）も同じ要領で求めます。
![スクリーンショット 2022-08-20 18.26.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/494cd6e4-0401-c438-2eaa-4c49e5de472f.png)

n.[フィールド作成]ノードを編集します。最初の三角形だけはif条件で計算し、それ以外は台形の面積として計算します。
![スクリーンショット 2022-08-20 17.20.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/5e54e3d2-cea5-ff6d-a7e3-f2cab5ce89d4.png)

o.[レコード集計]ノードを編集します。
![スクリーンショット 2022-08-20 17.21.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/a8ddfbfb-ecc4-84e0-9814-2ab45cb474e3.png)

p.[フィールド作成]ノードを編集します。冒頭概要チャートの②/（①＋②）を利用してGiniを計算します。
![スクリーンショット 2022-08-20 17.21.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e1d030d8-9922-b879-5c90-e37ac3235f2d.png)

[プレビュー]します。
![スクリーンショット 2022-08-20 17.22.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/c0d90fc0-e11d-dce9-4788-b9179da49b55.png)

#### 注意事項

スコアを降順にしてどこまで故障を疑うかを確定しますが
実際には見逃し率や濡れ衣率などのバランスは業務の状況と現場の理解を考慮して検討します。

## 4.参考情報

#### モデルの性能指標について解説した記事

https://www.ibm.com/blogs/solutions/jp-ja/modeler-tips-04/

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

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

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

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