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

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

![スクリーンショット 2022-09-05 11.46.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/be7d97a2-4cbc-be3c-fea5-e1d36e9e9e3a.png)

![スクリーンショット 2022-08-13 10.43.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/12173e49-0028-9c67-f3c4-b2e13ef6fff8.png)


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

・どの傾向スコアまでを故障/貸倒れ/不正/購入と判定するべきか検討
・予測モデルの性能評価
・実装後のモデルメンテナンスのための性能指標の算出


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

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

## 3.サンプルストリームの説明
![スクリーンショット 2022-08-23 13.43.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/2f77033f-ebf2-e2cd-883d-4ba2b9da63c6.png)

a.入力するデータは以下の通りです。ID、不良品（NG）判定、予測、傾向スコアの4フィールドのテーブルです。
![スクリーンショット 2022-09-05 10.55.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/192afaca-abe4-c6d5-181f-f242f2097a16.png)

#### 傾向スコア毎に適合率（Precision）を求める

b.[置換]ノードを編集します。どの傾向スコアまでをNG判定するかを確定するためPR曲線を作るため、この時点では一旦全て予測をNGに置換します。
![スクリーンショット 2022-08-23 13.49.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/59335c04-4627-c092-716a-b4277672d9b6.png)

c.[フィールド作成]ノードを編集します。以下の混同行列のFP（False Positive）フラグを作成します。
![スクリーンショット 2022-08-23 13.49.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/ceba0804-47cb-cb86-6534-893d8e8d51f7.png)

d.cと同じ方法でTP（Ture Positive）フラグを作成します。

e.[レコード集計]ノードを編集します。
![スクリーンショット 2022-08-23 13.50.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/f293f705-80be-c1bb-463a-dd19868a86bd.png)

f.傾向スコア降順でソートします。

g.[フィールド作成]ノードを編集します。FPとTPの累積フィールドを作成します。関数@&#xFFF0;SUMで列方向に累積します。
![スクリーンショット 2022-08-23 13.51.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/fa31cdd9-013b-102a-49ae-556ec6f379ef.png)

[プレビュー]します。
![スクリーンショット 2022-09-05 10.57.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/2ad1d263-65dd-9a83-5a05-a11c0c48d423.png)

h.[フィールド作成]ノードを編集します。各レコードまでの適合率を求めます。
![スクリーンショット 2022-08-23 13.52.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/f33eabf2-b91d-f87f-e080-c67f2c4d8d9e.png)

[プレビュー]します。
![スクリーンショット 2022-09-05 10.58.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/05d132ed-95a5-e268-b196-e0d44bc3e652.png)

i.[散布図]ノードを実行します。
![スクリーンショット 2022-09-05 10.58.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/d8db34b4-9d54-d409-6059-59356688010a.png)

#### 傾向スコア毎に再現率（Recall）を求める

j.傾向スコア昇順でソートします。傾向スコアが低い順にNGではないと予測していきます。

k.[フィールド作成]ノードを編集します。後続処理を想定してbのように置換えをせず、このノードでその意味を持たせます。FNフラグを定義します。
![スクリーンショット 2022-09-05 15.24.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/c28acba9-00a7-f4fd-9ad1-dbe1241321b6.png)

l.[フィールド作成]ノードを編集します。gと同じ要領でFNを累積します。
![スクリーンショット 2022-08-23 13.54.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/5defd916-8bd7-08c4-1c80-01e548ac20a7.png)

m.傾向スコア降順でソートします。傾向スコアが高い順にNGではないと予測していきます。

n.TPフラグを定義します。
![スクリーンショット 2022-09-05 15.25.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/7a3ba95b-382c-02b8-51b7-3e5d8140f04c.png)


o.[フィールド作成]ノードを編集します。lと同じ要領でTPを累積します。
![スクリーンショット 2022-09-05 11.07.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/c4413290-e923-befb-3c18-08a719e49a77.png)

p.[レコード集計]ノードを編集します。傾向スコア毎にFNとTPの累積値を合計します。
![スクリーンショット 2022-08-23 13.55.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/ecc5b3a9-9734-a0a9-07f6-e91b87c9c88b.png)

[プレビュー]します。
![スクリーンショット 2022-09-05 11.09.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/3dd45b70-9bb0-efc8-bd0f-4a0a6a43cb79.png)

q.[フィールド作成]ノードを編集します。再現率をレコード毎に求めます。
![スクリーンショット 2022-08-23 13.56.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/fe8d88be-fe0f-295b-ab3d-e117cec2accd.png)

[プレビュー]します。
![スクリーンショット 2022-09-05 11.11.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/0d4bb8e7-16e4-af27-9b46-b86f3aa112c3.png)

r.[散布図]ノードを実行します。適合率は傾向スコアが上がると上昇しましたが、再現率は減少します。
![スクリーンショット 2022-09-05 11.12.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/cfade76b-5519-8cb6-38d2-fb4e3eb137f2.png)

s.[レコード結合]ノードを編集します。[レコード結合方法]を[キー]にして傾向スコアをキーに内部結合します。
![スクリーンショット 2022-08-23 13.57.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/2a084427-b1cc-2b0f-1835-387bdde9bf65.png)

ここまでの座標を含むテーブルは以下の通りです。114レコードあります。
![スクリーンショット 2022-09-05 11.13.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/96f0f304-f077-5a86-9f06-51692164d9f6.png)

t.[散布図]ノードを実行します。PR曲線が描画されました。
![スクリーンショット 2022-09-05 11.46.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e654bb6e-8c3b-9dba-b0bb-b3d0205f6a57.png)

#### 注意事項

不均衡データの場合にはPR曲線を用いて、そうではない場合にはROC曲線が推奨されますが一度、データに当てはめた上で施策適用の視点から比較検討ください。

## 4.参考情報

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

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

#### PR曲線をStats連携で描画させる方法

https://qiita.com/Makimaki2020/items/c3cd57cfb5da78e38e6f

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

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

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

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