SPSS CADSで数値予測モデルの更新


SPSS CADSでカテゴリ値の予測については標準の機能で劣化検知を検知する、[モデルリフレッシュ](https://qiita.com/kawada2017/items/e5a8cd9ad53817d47cb1
)が可能です。

回帰などの数値予測のモデルにもこの方法を利用することができます。


# 更新するモデルを持つストリームの解説

以下のように「温度1－5」と「圧力1－5」を説明変数にして、「濃度」を予測するモデルを作っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/2891e7ee-d962-93f4-0c79-89a1b2b0dafc.png)

以下のような回帰モデルになっています。とりあえず、切片が「1.304」であることに注目しておいてください。学習データが変わってモデルが更新されればこの値は変わるはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/295c7545-6cf2-fb27-453e-a17f18ef672f.png)

スコアリングをすると以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/d28299b2-ea5a-555e-2892-3318ea6b16eb.png)

ストリームプロパティの「展開」では以下を設定しています。
展開タイプ：「モデル更新」
スコアリングノード：スコアリング後のエクスポートノード。この例では「テーブル」
モデリングノード：モデルを作成したモデリングノード。この例では「濃度」
モデルナゲット：スコアリング枝のモデルナゲット。この例では「濃度」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/0e28b934-ee01-8e42-56c8-394713c1e07d.png)

# モデルリフレッシュジョブの作成
まず、フォルダを選んで、右クリックで「新規」_「ジョブ」で作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/36482b4a-9e10-93f2-50ea-8d16089a0ac1.png)

そして、名前を付けます。ここでは「濃度予測モデルリフレッシュ」としました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/49cc11d5-9263-39ce-7f15-44e68f8afee1.png)

ジョブ変数でFILENAMEを定義しておきます。モデルの更新に使うためのファイル名を指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/cf11bf8f-2ea4-f2aa-184f-b90256d1bd06.png)

ストリームを配置し、ジョブステップ名は「濃度予測モデルリフレッシュ」を指定しました。
Modeler Serverとコンテンツリポジトリ―サーバー（CADSレポジトリ）のサーバーと実行ユーザーを指定します。

「タイプ」を「モデルの管理」で「更新」とし、二つのモデルナゲットを更新対象とするチェックを付けました。これはストリーム内の二つのモデルナゲットを更新するという意味です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/98cc22eb-388b-15b7-1cc4-54daeb553054.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/0eb64114-e394-b2eb-6325-749b83b5fede.png)
なお、「モデルの管理」にするとストリームにあるModelerスクリプトは作動しません。スクリプトをつかって加工したいデータがある場合は、事前のジョブステップであらかじめ加工しておくようにしてください。


「データファイル」タブに移り、
sensorhist.csvノードには「${JobVariable.FILENAME}」としてジョブ変数を指定します。
つまりモデルを再学習するために使う学習データをジョブ変数で与えることを意図しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/957a9820-8f35-ca17-34be-1a0101d8a653.png)

# モデルリフレッシュジョブの実行
設定ができたので「保存」で保存をして、「オプションありでジョブを実行」してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/b1594bac-23dd-56e2-5b61-36dfad430e5b.png)

FILENAMEに「sensornew.csv」を指定します。これは「sensornew.csv」を使ってモデルを作り直すことを意図しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/71edf401-2f59-bbbb-d640-8108147ae51e.png)



# 更新されたモデルの確認
ジョブ実行が成功したら、Modelerで更新された最新バージョンのストリームを取得してみます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/bab182ab-9ae2-6fa2-ad6a-9efca819d911.png)

確かに回帰係数が変化し、モデルが更新されました。元のモデルの切片は「1.304」でしたが、更新されたモデルでは「1.43」になっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/54b5ea78-cfd5-4ed9-11e3-d230d228966a.png)


# サンプルストリームやデータ

https://github.com/hkwd/spsssample/tree/master/240418CADSContinuosModelRefresh


* テスト環境
  * Modeler 18.4
  * CADS 8.4
  * Windows 2019


# 参考情報
#### CADSでMLOps#4モデルリフレッシュ #SPSS - Qiita 
https://qiita.com/kawada2017/items/e5a8cd9ad53817d47cb1