SPSS Modeler ヒモトク
Modelerデータ加工Tips#08-7日後と6ヵ月後の日付データを作成する
2021年05月14日
カテゴリー Data Science and AI | SPSS Modeler ヒモトク | アナリティクス | データサイエンス
記事をシェアする:
みなさん、こんにちはABTマーケティング株式会社の白岩です。
弊社は、株式会社オートバックスセブンとCCCマーケティング株式会社の2社の共同出資で設立されたマーケティング会社です。オートバックスとTポイントの情報を融合させたデータを使うことでカーライフを軸としたドライバーの分析や、コミュニケーション施策を実現しています。例えば、データから見える傾向と顧客のニーズをくみ取り、より実効性の高いマーケティング業務へ活用・展開を行っています。
SPSS Modelerはデータ活用の際に、柔軟にデータハンドリングしてくれるため欠かせない分析ツールです。処理手順の解釈が容易なため、共通言語としてストリームを共有しチームでスピード感をもって業務をすすめています。
今回のTipsのテーマは、日付データを扱った処理方法です。最適なオイル交換のタイミングやワイパー等、メンテナンスの交換タイミングは、クルマの利用状態により異なります。当然、車検の時期も異なり、データを使って顧客に向けた最適な提案を行うには、日付データの処理が重要になります。車両の状態と利用状況を分析して、その顧客、車両に合わせた、望ましいメンテナンスのご案内を行う場合、未来年月までの月数計算や自動化を行うときに今回の処理方法は役立ちます。今回のTipsでは、そういった日付データを扱うときの知っていると便利な方法を紹介いたします。
SPSS Modelerと基準日
SPSS Modelerはdate_days_differenceで2つの日付の差を求めることはできますが、起算日にN日加算するADD_DAYSのような関数が存在しません。そこで一旦1900年1月1日を基準日として、そこから起算日が何秒離れているかを求め、必要な日数を秒で加えます。
*2023年12月のModeler Ver18.5からこの関数が搭載されました。詳しくはこちらをご覧ください。
https://qiita.com/416nishimaki/items/85d42d7e54a42d426f3e
例えば、2021-05-14の翌日を求める場合にはdatetime_in_seconds(起算日)で3829939200を求め、1日分の秒数86400(=60*60*24)を加えて、またdatetime_dateで基準日に照らして日付に戻します。
ちなみに、基準日の初期設定はストリームのプロパティで変更することができます。
日付の関数はこちらの記事に整理されています。
https://qiita.com/Makimaki2020/items/72e3b774039327fa4ac4
例題1:7日後の日付を作成する
最初の例題です。起算日の7日後を求めます。
投了図はこちらです。フィールド作成ノードの1手詰めです。
可変長ファイルノードに以下の対象データを読み込みプレビューます。
https://raw.githubusercontent.com/yoichiro0903n/blue/main/data2.csv
(リンクを右クリックして「リンク先を保存」またはブラウザで開いてからページを保存します)
フィールド作成ノードは、2通り例を用意しました。まずは、基準日を軸に全て秒で処理する場合です。起算日を基準日にしてから、秒・分・時間の60*60*24の7日分を加え、datetime_dateで日付に戻しています。
次に、datetime_in_secondsをdate_in_daysで置き換えたバージョンです。最終的には秒のシリアル値で計算しますので本質的には先と同じ処理です。
例題2:6ヵ月後の日付を作成する
手強いとあらかじめお伝えしたNヵ月後です。
例題1と同様1手詰めです。フィールド作成ノードを使います
この処理には、
- 年をまたぐ
- 月末が31日ではない日がある
- うるう年かどうかの考慮が必要
の条件が必要ですので関数ライブラリの「論理」からif then elseで表現します。
ポイントは2点です。うるう年かどうかは、西暦が4で割り切れる(ただし100では割り切れず、400では割り切れる)の条件を使うため割り算した余り(剰余)を求める関数remを利用しています。例えば、5 rem 3 で2が返ります。
また、例題1ではdatetime_date(ITEM)は基準値からの秒数を使って日付に変換しましたが、今回はdatetime_date (YEAR,MONTH,DAY)とすることで日付を作成しています。
あとはひたすら、式を我慢強く書くだけです。コピーして便利に使うことを希望される方はこちらでコピーしてください。
スーパーノードでNヵ月後の日付作成
もしNヵ月先の日付を頻繁に求める必要がある場合は、それをスーパーノードにしておくと便利です。
置換ノードを詳しく説明した記事はこちら→推しノード#20「スーパーノード」
まず出来上がったストリームのフィールド作成をNヵ月後とリネームして右クリックします。スーパーノードの作成から始点の選択を選びます。
スーパーノードのパラメータを設定するために、パラメータの定義をクリックします。
それぞれ以下の通りに入力し、最後にデータ型を指定します。
データ型を連続型で指定して、下限と上限を入力します。
OKボタンで確定するとスーパーノードにパラメータが設定されました。あとは、ノードにパラメータが渡されるように編集します。まずズームインボタンをクリック。
フィールド作成ノードを編集します。
パラメータは、先ほど名前として登録したmonthの前にパラメータ識別記号の$P-をつけシングルクォーテーションで囲います。あとは例題2で作成したCLEM式の6(6ヵ月後)を置きかえれば完成です。
(完成したCLEM式は一部のみですが以下のようになります)
いかがでしたでしょうか?ModelerはPythonやRとの連携が魅力ですが、複雑でよく利用する関数はスーパーノードとして部品化できるのもの良いですよね。
Modeler詰将棋!次回のTipsから出題
次の例題にチャレンジしてみてください。2021年5月21日のオンラインユーザー会
https://note.com/ukiukiayatti/n/n91a0a28d41bc
でも特別企画として取り上げられます。事前に例題にトライした上で当日SPSSベテラン棋士がガチで解く様をご覧になると2倍楽しめます!
ご参加を希望される方は、IBMご担当者、またはIBMパートナーに、ご担当が不明の方はリンクの問い合わせ先までご連絡ください、、とのことです。
例題:2つのピークの傾きを求める
例題データ
https://raw.githubusercontent.com/yoichiro0903n/blue/main/data.csv
(リンクを右クリックして「リンク先を保存」またはブラウザで開いてからページを保存します)
いかがでしょうか。IBM所属のSPSS Modeler イケメン棋士達はこの例題に何分、何手詰めできるか見ものです。
次回のTips# 09はイベント当日にも解説されるIBM牧野さんが執筆されます。
ご期待ください。
白岩 英士
ABTマーケティング株式会社
データベースイノベーションラボ
チーフデータサイエンティスト
データ分析者達の教訓 #22- 予測モデルはビジネスの文脈で語られ初めてインパクトを持つ
Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...
皆さんこんにちは。IBMの坂本です。 SPSSを含むデータサイエンス製品の技術を担当しています。 このリレー連載ブログはSPSS Modelerの実際のユーザーで第一線で活躍するデータ分析者に、データ活用を ...続きを読む
データ分析者達の教訓 #21- 異常検知には異常を識別する「データと対象への理解」が必要
Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...
皆さんこんにちは。IBMの宮園です。IBM Data&AIでデータサイエンスTech Salesをしています。 このリレー連載ブログはSPSS Modelerの実際のユーザーで第一線で活躍するデータ分析者に、デー ...続きを読む
【予約開始】「SPSS秋のユーザーイベント2024」が11月27日にオンサイト開催
Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...
本年6月800名を超える方々にオンライン参加いただいたSPSS春のユーザーイベントに続き、『秋のSPSSユーザーイベント』を11月27日に雅叙園東京ホテルにて現地開催する運びとなりました。 このイベントは ...続きを読む