SPSS Modelerで時系列データから「時間」の特徴量を作る

# はじめに
時系列データから平均値や最大値を求める特徴量はよく作ると思いますが、「時間」に着目した特徴量も重要です。捉えたい事象がどのくらいの時間発生していたかという「時間」が説明力の高い特徴量になることがよくあります。SPSS Modelerで時系列データからそのような「時間」の特徴量を作ってみます。

この記事は[SPSS秋のユーザーイベント2024](https://www.ibm.com/blogs/solutions/jp-ja/smuc-2024-autumn/)の[東日本旅客鉄道の堀様のご講演の「ものづくり領域で活かされるSPSSの今とこれから-2異常検知と自動化」](https://speakerdeck.com/jpspss/20241127spssqiu-02-dong-ri-ben-lu-ke-tie-dao-ku-yang-zi-liao)でご紹介したデモ①「時系列データから『時間』の特徴量を作る」の解説です。
[『実践！ 異常検知と故障予測―IBM SPSS ModelerによるIoT時系列データ活用』（東京図書）](https://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5-%E7%95%B0%E5%B8%B8%E6%A4%9C%E7%9F%A5%E3%81%A8%E6%95%85%E9%9A%9C%E4%BA%88%E6%B8%AC%E2%80%95IBM-SPSS-Modeler%E3%81%AB%E3%82%88%E3%82%8BIoT%E6%99%82%E7%B3%BB%E5%88%97%E3%83%87%E3%83%BC%E3%82%BF%E6%B4%BB%E7%94%A8-%E5%B0%8F%E5%B7%9D/dp/4489023855)の「1-3　実務で使える異常検知」(p.78-96)の一部を簡略化してご紹介しています。詳しい内容をお知りになりたい方はぜひ書籍もご参照いただければと思います。

■テスト環境
* Modeler 18.5
* Windows 11 64bit

# テストデータ
テストデータは以下のような時系列データです。「製品切替Bボタン」が押された00：09から「温度」が210度に上がる00：12までの3分間という時間を特徴量として取り出したいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/491210b3-acdf-be82-5815-09af7bb08b71.png)


# データの可視化
「時系列グラフ」ノードで、系列に「温度」「製品切替Aボタン」「製品切替Bボタン」を設定し、X軸ラベルに「時刻」に設定し、「別のパネルに時系列を表示」にチェックを付けます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/80ec67af-3e41-cdc7-34dc-3327c8533a36.png)



以下のようなデータです。
「製品切替Aボタン」が押されると「温度」が150度まであがり、製品Aが製造され、「製品切替Bボタン」が押されると「温度」が210度まで情報して製品Bが製造されることを示しています。
そしてここでは「製品切替Bボタン」が押されてから「温度」が210度に上がるまでの時間を特徴量として抽出していきます。赤の横棒の長さがそれを示しています。「製品切替Bボタン」は3回押されていますので、3つの特徴量が得られます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/8d801146-f34c-d45a-af65-d7eb25c57621.png)


# 説明変数の作成

「フィールド作成ノード」をつなぎ以下の設定をします。
「ステート型」にします。
フィールド名：「B製造」
スイッチ”オン”の条件式：「製品B切替ボタン＝１」
スイッチ”オフ”の条件式：「製品A切替ボタン＝１」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/2739980b-9c5a-d062-1830-6c7906f66bf3.png)

以下のように「製品B切替ボタン」が押されると「１」のフラグが立ち、「製品A切替ボタン」が押されるとフラグが降ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/53374d6c-611d-9d8f-2400-1b11a9692d1b.png)

次も「フィールド作成ノード」をつなぎ以下の設定をします。
「カウント型」にします。
フィールド名：タイムカウント
初期値:「-1」←製品Bの開始のタイミングは０にしたいので「-1」としています。
増分条件:「B製造＝１」←製品B製造中に１ずつカウントが増えます。
増分：「1」
リセット条件は「B製造＝0」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/6d9cfee2-39ca-595a-e155-d9f74ee2c60b.png)

以下のように「B製造」のフラグの立っている間カウントが増えます。つまり製品Bが製造されている間の「分」を示す値が作れました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/caf59198-be2b-fe4b-c5db-02c01597dc63.png)

「条件抽出ノード」をつなぎ、以下の設定をします。
「条件」に「`B製造 = 1 and 温度 >= 210 and @OFFSET(温度,1) < 210`」を設定します。
Bの製造が始まっていて、温度が1レコード前では210未満で、210度になったタイミングのレコードを抽出しています。
![{E8026F68-54E8-48E3-9EF6-FFD3CB2881BD}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/7eb7fe85-d030-f5fc-27f8-4acc28275738.png)


# 結果
結果は以下のようになります。製品Bは3回製造されたので3レコードが抽出されています。それぞれ3分間、3分間、10分間という結果になっています。もしかすると10分間という時間は長く不良の予兆であるかもしれません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/26472d3c-2047-c684-8d3b-1ac35dfe5350.png)

「時間」の特徴量を作る事ができました。

なお、[複数の工場に対してこの特徴量をループでつくる記事](https://qiita.com/spssfun2017/items/968b04035e1b5eff26a4)もありますので、参考にしてください。

# サンプル
#### サンプルストリーム
https://github.com/hkwd/spsssample/raw/refs/heads/master/241203%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E7%89%B9%E5%BE%B4%E9%87%8F/240918%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E7%89%B9%E5%BE%B4%E9%87%8F2.str


#### サンプルデータ
https://github.com/hkwd/spsssample/blob/master/241203%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E7%89%B9%E5%BE%B4%E9%87%8F/%E5%B7%A5%E5%A0%B41%E3%83%87%E3%83%BC%E3%82%BF.csv

# 参考
#### 20241127SPSS秋02_東日本旅客鉄道 堀様資料
https://speakerdeck.com/jpspss/20241127spssqiu-02-dong-ri-ben-lu-ke-tie-dao-ku-yang-zi-liao

#### 『実践！ 異常検知と故障予測―IBM SPSS ModelerによるIoT時系列データ活用』（東京図書）
https://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5-%E7%95%B0%E5%B8%B8%E6%A4%9C%E7%9F%A5%E3%81%A8%E6%95%85%E9%9A%9C%E4%BA%88%E6%B8%AC%E2%80%95IBM-SPSS-Modeler%E3%81%AB%E3%82%88%E3%82%8BIoT%E6%99%82%E7%B3%BB%E5%88%97%E3%83%87%E3%83%BC%E3%82%BF%E6%B4%BB%E7%94%A8-%E5%B0%8F%E5%B7%9D/dp/448902385

#### SPSS Modelerのループでパラメーターを与えて特徴量を生成
https://qiita.com/spssfun2017/items/968b04035e1b5eff26a4