交差検証のためにデータを学習とテストに分割する(SPSS Modeler データ加工逆引き7-11)

# 交差検証のためにデータを学習とテストに分割する（クロスバリデーション）

![スクリーンショット 2022-09-04 16.16.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/b2ca82ad-037b-5654-12bb-a068a5137afb.png)

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

・予測モデルの頑強性を確保する

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

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

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

#### データ区分ノードを利用する

![スクリーンショット 2022-09-04 16.16.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/5150d5d2-e51d-fd5d-c443-b6e8e0532fbb.png)

a.入力するデータは以下の通りです。
<img width="500" alt="スクリーンショット 2022-01-12 10.02.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/f69d8fae-512c-8c88-49cd-04569e76e4b9.png">

b.[データ区分]ノードを編集します。5割を学習に、残る5割を検証に割り当てます。
![スクリーンショット 2022-09-04 16.23.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/9f3904f1-b8fe-b27b-75bd-c89c4cab4e20.png)

[実行]します。このノードの後続のモデルや評価グラフ、精度分析ノードは学習と検証に自動分割します。
![スクリーンショット 2022-09-04 16.24.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/9f573db2-5ef1-66fb-f45a-c17fbf6da48d.png)

この時点で[棒グラフ]で確認すると学習と検証がほぼ半分に分かれているのが確認できます。
![スクリーンショット 2022-09-04 16.30.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/433baca1-b9b7-a628-26f6-5e356de04534.png)

モデルとの組み合わせは以下の記事を参照してください。

https://qiita.com/416nishimaki/items/48759c41199d1d00a0bc

#### 不均衡データを想定してストリームで学習と検証に分割する

![スクリーンショット 2022-09-04 16.19.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/359f9262-de80-f611-1975-3ad1dd886835.png)

c.[条件抽出]ノードを編集します。目的変数のフラグが真のデータのみを抽出します。
![スクリーンショット 2022-09-04 16.24.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e41764af-dcba-5ac9-b084-11db0c253754.png)

d.[サンプリング]ノードを実行します。ランダムシードを固定して5割をサンプリングします。
![スクリーンショット 2022-09-04 16.25.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/01ef3f63-f073-f660-9509-f9db5efb9a33.png)

e.[条件抽出]ノードを編集します。フラグが真を破棄して負のデータのみ抽出します。
![スクリーンショット 2022-09-04 16.26.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/b852448a-34bb-07f3-1d59-aa1fec1e8113.png)

f.[レコード追加]ノードでフラグが真の半分と負の半分を学習用に結合します。
![スクリーンショット 2022-09-04 16.26.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/1ff5e432-adc3-520e-2bbb-46aeeb90eec1.png)

g.dをコピーして利用します。

h.[テーブル]ノードを実行します。ヘッダーの通り482レコードが選択されました。
![スクリーンショット 2022-09-04 16.27.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/58a62a0e-0fbb-3133-f89d-5a7a8e11203e.png)

i.dの設定から[モード]を[サンプルを破棄]にして反転させます。同じランダムシードを利用しているのでdでは選ばれなかったレコードが抽出されます。
![スクリーンショット 2022-09-04 16.28.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/404604e9-68ce-15bd-3d5a-2ae9fdd75119.png)

検証用のデータセットです。学習データhで選ばれていない残りの518レコードが対象です。
![スクリーンショット 2022-09-04 16.52.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/93487e0b-524f-bd7a-9a0b-c2740a10cc32.png)

#### 注意事項

極端にフラグの真が少ない故障や不正のデータはサンプリングで精度が不安定になる場合がありますので交差検証の方法を注意深く検討します。

## 4.参考情報

#### [交差検証]ノードを扱った記事

https://www.ibm.com/blogs/solutions/jp-ja/learn-modeler-01/

https://qiita.com/kawada2017/items/e76527ee5270ad017ef1

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

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

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

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