ROC曲線からAUCとGini（AR値）を求める(SPSS Modeler データ加工逆引き8-6)

# ROC曲線からAUCとGini（AR値）を求める

![スクリーンショット 2022-08-18 17.28.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/87e4bba6-e787-2997-c72b-b0a33d286647.png)

この記事は逆引き8-5(ROC曲線)と関連付いています。そちらも参照ください。

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

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


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

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

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

![スクリーンショット 2022-08-18 17.32.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/ab9c6a54-1e6d-1312-1115-27333e1f5a31.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)

＊ROC曲線でカットオフポイントを決めるためこの時点では予測列[$&#xFFF0;R-故障]は全て1にしています。

#### 精度分析ノードでAUCとGiniを求める

b.[精度分析]ノードを編集します。
![スクリーンショット 2022-08-18 18.37.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/feda66c8-f9ff-4e4c-0191-75e9d98d83b5.png)

[実行]します。AUCとGiniが表示されました。
![スクリーンショット 2022-08-18 18.37.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/6877d078-a18b-3a76-3ed4-709adf398e9a.png)

#### ROC曲線の座標からAUC（Area Under Curve：曲線の下の面積）を求める

c.この時点でのデータを確認します。赤枠は逆引き8-5を参照ください。
![スクリーンショット 2022-08-18 17.37.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/19aa6358-a0e3-a321-5664-d8e4d1d5439c.png)

そもそも曲線の軌跡は以下のルールで描かれています。
![スクリーンショット 2022-08-19 8.35.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/71fa2aea-a3d9-4a30-94bb-ce668229f773.png)

曲線の下の面積を求めるためには以下のように12に分割した長方形の面積を個別に計算します。横の長さはここでは全て1/12　＝　0.0833 です。12は故障の無いレコード数です。縦の長さは1単位 1/8　＝　0.125です。8は故障したレコード数です。
![スクリーンショット 2022-08-19 8.15.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/00eca4f7-5695-af3a-d040-c3cd73c33841.png)

d.[フィールド作成]ノードを編集します。関数@&#xFFF0;OFFSET（フィールド,1）で1レコード上の値を参照します。
![スクリーンショット 2022-08-18 17.38.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/dd1cbca9-d63b-1412-4633-282255d173c3.png)

式ビルダーの@&#xFFF0;関数を利用すると簡単に入力できます。
![スクリーンショット 2022-08-18 17.39.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/fb917a05-5b08-e22a-56b5-260124f84c49.png)

[プレビュー]します。2レコード目だけ注目すると縦の辺が0.125でこのあと作る横の辺（1-特異度）が0.0083。2辺を掛けると曲線の最初に作られる長方形の面積（例ではオレンジ）が求められます。
![スクリーンショット 2022-08-18 17.40.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/bd0ed471-a0a0-4240-447c-a5d96d398cb3.png)

e.[フィールド作成]ノードを編集します。長方形の横の辺は1/12で固定したくなりますが全レコード数は20で長方形を作れるのは右スライドした場合のみ。差が出現した時だけになるよう左の座標からの引き算にします。
![スクリーンショット 2022-08-18 17.40.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/cdf2c8aa-1769-d8b9-aca4-641484cef332.png)

f.[フィールド作成]ノードを編集します。個別の長方形の面積を求めます。
![スクリーンショット 2022-08-18 17.40.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/87212c54-80de-4843-d809-c58b32ea20c1.png)

![スクリーンショット 2022-08-19 8.16.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/74168011-8434-a25e-e79c-3ea6b2b4a71f.png)

g.[レコード]ノードを編集します。長方形の面積を合計します。
![スクリーンショット 2022-08-18 18.00.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/933ad8fd-f6b4-c51f-8bab-821a4bbca316.png)

[プレビュー]します。AUCが算出できました。
![スクリーンショット 2022-08-18 18.00.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/cdde434f-f499-312b-c350-b15aeb4385cd.png)

#### AUCからGini（AR値）を求める

そもそもGini係数はROC曲線ではなくゲインチャートの以下の面積を示します。企業の倒産リスクを判定する際にAR値として利用されるこの値はAUCからシンプルな式で求めることができます。
![スクリーンショット 2022-08-18 18.26.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/5673bbe4-b77f-809c-6f37-515977f4c42f.png)

h.[レコード結合]ノードを編集します。GiniをAUCから求めます。 (AUC - 0.5) * 2　で計算できます。
![スクリーンショット 2022-08-18 18.01.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/5aca8dc9-1c03-b6ad-a213-269b59455d0f.png)

[プレビュー]します。
![スクリーンショット 2022-08-18 18.01.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/8800f4d1-eec1-aaf1-7148-d9975344bf80.png)


#### 注意事項

別の目的でストリームにアレンジしやすいように、今回は直接計算に不要な処理（TNとFN）をストリームに含めています。精度分析で求められるAUCやGiniをあえて手計算しているのはCADSなどの自動処理でモデル性能を監視する際に判断基準として利用するからです。

## 4.参考情報

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

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

#### SPSS StatisticsでROC分析を行う

https://qiita.com/Makimaki2020/items/59aed89864ea21617bbd

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

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

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

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