ROC曲線の全ての座標を求めて散布図で描画する(SPSS Modeler データ加工逆引き8-5)

# ROC曲線の全ての座標を求めて散布図で描画する

![スクリーンショット 2022-08-18 8.58.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/71f69146-5d97-201c-3588-d78bb3a3938f.png)

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

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


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

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

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

![スクリーンショット 2022-08-18 8.59.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/4f8f3b84-97b8-5156-85b7-9a88b4143728.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にしています。

#### 評価グラフでROC曲線を描画する

b.[評価グラフ]ノードを編集します。
![スクリーンショット 2022-08-18 9.05.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/c213db08-45b2-73d2-38b7-51c8488eaa3a.png)

[実行]します。ROC曲線が描画されました。
![スクリーンショット 2022-08-18 9.06.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/fa2223fa-ecf0-2833-e5eb-5de840284ac7.png)

#### ROC曲線の座標を求めて散布図で描画する

c.[フィールド作成]ノードを編集します。[派生]モードを[フラグ型]にして真になる条件を記述します。
![スクリーンショット 2022-08-18 9.07.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/129cd0b9-496e-d1d6-3fd0-ebaaa1e72313.png)

FPは故障を疑ったが、実際には故障ではなかったケースです。以下の混同行列を参照ください。
![スクリーンショット 2022-08-18 13.41.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/6000d0d8-4589-750d-b41b-808470a01348.png)

＊同じ目的のノードをc、d、e、fと作成します。

g.[フィールド作成]ノードを編集します。関数@&#xFFF0;SUMで4つの分類の累積を作成します。@&#xFFF0;FIELDはワイルドカードです。13のフィールドを同時に処理することが可能です。
![スクリーンショット 2022-08-18 9.08.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/36229311-ea0f-81af-d8db-bb3e4d30269a.png)

式ビルダーの@&#xFFF0;関数を利用すると簡単に入力できます。
![スクリーンショット 2022-08-18 9.09.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/bef32856-2223-c11a-fc3d-33e662c39a30.png)

[プレビュー]します。混同行列の４つの分類の累積ができました。
![スクリーンショット 2022-08-18 9.09.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/014cdcca-09a5-c7d7-6e4d-a2d8ef6853e4.png)

h.[レコード集計]ノードを編集します。各分類の最大値を求めます。
![スクリーンショット 2022-08-18 9.10.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/94a49ed9-b483-8649-b2ad-ada22253f904.png)

[プレビュー]します。
![スクリーンショット 2022-08-18 9.10.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/58d87344-b09a-b3f7-6cd7-cd25fa7f1347.png)

i.[レコード結合]ノードを編集します。[キー]をレコード結合方式に選択しますが[キー]はブランクにして全てのレコードにhで求めた累積値を結合します。
![スクリーンショット 2022-08-18 9.11.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/51963b45-0690-067f-b466-3c6722b5d73a.png)

[プレビュー]します。
![スクリーンショット 2022-08-18 9.11.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/bcf3bb4d-53a4-bf14-3870-2bd62bfba4bd.png)

j.[フィールド作成]ノードを編集します。感度を求めます。計算式は再現率と同じです。True Positive Rate(TPR)とも呼ばれます。
![スクリーンショット 2022-08-18 9.12.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/a85bbdfd-0009-9abc-a146-e83c79bf1483.png)

k.[フィールド作成]ノードを編集します。1-特異度を求めます。特異度は故障がなかったレコードの中で故障が疑われることもなかったレコードの比率=TN/(TN+FP）です。1-特異度は逆に故障がないのに故障が疑われた比率であるためFales Positive Rate（FPR）と呼ばれます。式ではFPを分子にしています。
![スクリーンショット 2022-08-18 9.12.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/0f4a4b17-7fb1-965a-d1d7-c35199de6b2c.png)

ここまでのデータは以下の通りです。
![スクリーンショット 2022-08-18 9.13.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/677badeb-54c3-0c94-1888-f0532aa2c0d2.png)

l.[散布図]ノードを編集します。
![スクリーンショット 2022-08-18 9.14.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/631465e3-1c70-9210-fa4e-6e1d95e4c759.png)

![スクリーンショット 2022-08-18 9.14.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/111f1980-4b4a-6bf1-7881-82a3b25784e9.png)

[実行]します。ROC曲線が描かれました。
![スクリーンショット 2022-08-18 9.15.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/defb9a74-d3c7-39bf-6395-485b65c652fe.png)

#### 注意事項

別の目的でストリームにアレンジしやすいように、今回は直接計算に不要な処理（TNとFN）を含めています。

## 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