SPSS Modeler ヒモトク

【リレー連載】わたしの推しノード –裏方の魔術師「グローバルの設定」が統計量をキャッシュ!後続プロセスで利活用

記事をシェアする:


日本アイ・ビー・エムの守谷です。
皆さんは「グローバルの設定」ノードをご存知でしょうか?一度知ると手放せない私の推しノードは、不運にも名前の分かりにくさと、機能を想起させない地球のアイコンによって謎ノード扱いされてきました。名前とアイコンのイメージから「海外で利用されている単位の変換?」「緯度経度関係の設定?」などと誤解され、触れる機会がなかった方も多いのではと推測します。
また、グローバルの設定ノードの機能は他のノードでも代替できるため、本ノードがなくても目的のデータ加工や分析を行うことができます。なので決して主役にはならない「裏方」なのですが、本ノードを活用するといろいろな統計指標や特徴量の計算を効率化でき、新しい分析のアイディアがどんどん湧いてくる「魔術師ノード」なのです。

集計値を活用した統計指標

データ分析を行う過程で、データの分布を把握しやすいように正規化(いわゆるZ値変換)するケースがあるかと思います。
参考: Z値 = (値 – 平均値) / 標準偏差
この場合、レコード集計とレコード結合を組み合わせて下記のようなストリームを作成してZ値を求める方が多いはずです。レコード集計ノードで値の平均と標準偏差を集計して、レコード結合ノードで元のデータに結合した上でフィールド作成ノードでZ値を計算します。今回はこちらの方法を「レコード集計&結合方式」と名付けます。

このようにレコード集計ノードで計算した平均値、標準偏差、最大値、最小値を活用して統計的指標や特徴量を作成し分析で活用するケースは多いと思います。
いくつか例を挙げてみます。
・売上トップの店舗の売上との差を求める: 売上最大値 – 売上
・売上の全体平均との乖離状況を指標化する: 売上 / 全体平均
・全体の売上の何割を占めているかを指標化する: 売上 / 売上合計
グローバルの設定ノードはこんな集計値を利用した分析をより便利に作業することができます。

グローバル値の記録

グローバルの設定ノードの使用方法を説明します。
まず入力データソースを設定した後にグローバルの設定ノードを接続します。

グローバルの設定ノードの設定画面においては、統計指標を求めたい数値型の変数を選択した上で、「平均」「合計」「最小」「最大」「標準偏差」からグローバル値として設定したい指標を選択します。変数は複数選択可能です。
重要なのはこれらの設定を行った後に「実行」を行う必要がある点です。実行すると選択した「降水日数」や「降水量」の平均、合計、最小、最大、標準偏差がグローバル値として記録され作業中メモリーにキャッシュされます。 グローバル値は後に紹介する@GLOBAL関数によりストリームの任意の場所から呼び出すことができます。(ストリームの流れに関係なくフローの外部からでも呼び出せるため「グローバル」と命名されています。)

記録されたグローバル値は「ツール」「ストリームのプロパティー」「グローバル」で確認することができます。この値を後に紹介するグローバル関数で参照できるようになります。

グローバル値の利用

グローバルの設定ノードで記録したグローバル値の利用方法を説明します。
まず最初に先に紹介したZ値の計算をグローバル値を用いて計算してみましょう。まずストリームは下記のような形になります。

ここでポイントとなるフィールド作成ノードのCLEM式を見てみます。
式ビルダ―を起動すると関数のカテゴリに「グローバル」があります。ここには@GLOBAL_XXX(FIELD)といった関数があります。こちらが記録したグローバル値を呼び出すグローバル関数になります。
例えばGLOBAL_MEAN(降水量)を指定すると降水量の平均を呼び出すことができます。同様にGLOBAL_SDEV(降水量)は降水量の標準偏差になります。このグローバル関数を利用することによりZ値は下記のように「(変数-@GLOBAL_MEAN(変数))/@GLOBAL_SDEV(変数)」というCLEM式で求めることができます。

計算結果は「レコード集計&結合方式」で求めた結果と同一になりますが、冗長なフィールドが不要な点や、ストリームのどの位置からも呼び出せる点で、グローバルの設定ノードを利用した方がより便利かと思います。

グローバル値の活用事例

グローバル関数はCLEM式の中であればどのノードでも活用できます。活用事例をいくつか紹介します。

■フィールド作成ノード

Z値と同様にグローバル値を用いて新しい統計指標や特徴量を作成します。下記はある観測地点の降水量が最大降水量地点(@GLOBAL_MAX(降水量))の何%に該当するかを示す統計指標です。

■条件抽出ノード

条件抽出ノードでもグローバル関数を利用できます。下記例では降水日数が全体の平均+2σ(平均より2標準偏差分)より大きい観測地点のみ条件抽出します。

■置換ノード

置換ノードの中でもグローバル関数を利用できます。@FIELD変数を活用して複数の変数を一括で変換することができます。
下記例では平均+2σ以上を外れ値と定義して、外れ値に該当する場合は値を平均+2σに補正する処理を実施しています。
都道府県別で人口規模の大きい東京都の影響が大きすぎて小中規模の都道府県の実情をうまく予測できていない点を補正するために、人口規模に比例する変数はすべて一律外れ値を平均+2σに補正します。
同様に欠損値や異常値を平均値に補正するなどのケースでも置換ノードとGLOBAL関数の組み合わせが大活躍します。

グローバルの設定ノードの留意事項

グローバルの設定ノードはストリームで条件抽出されたデータの集計値を計算します。下記例では条件抽出により関東地方の降水量データだけを抽出しています。この場合は、関東地方の降水量に限定した平均値や標準偏差がグローバル値に保管されます。ただこちらのグローバル値が更新されるのはグローバルの設定ノードの「実行」がクリックされた時点です。
新しいグローバルの設定ノードを実行後にグローバル関数で取得できるのは先ほど求めた都道府県全体の降水量の集計値ではなく関東地方に限定した集計値になります。
グローバルの設定ノードはストリーム中で複数定義することもできますが、グローバル値として記録されるのは最後に実行したノードの集計値になるので、現在どのグローバル値が記録されているかを常に意識する必要があります。

また下記のようにデータソースに2018年の新しいデータが設定された場合は、グローバルの設定ノードの再実行をしないと新しい値が反映されません。再実行をしないとグローバル関数では2017年のデータの集計値が取得されます。
このようにグローバル設定ノードでは、グローバルの設定ノード以前のデータに変化が発生した際には再実行(グローバル値の更新)が必要となるため留意が必要です。

おわりに

近年の機械学習モデルの構築においては特徴量変数が重要とされています。今回のグローバルの設定ノードのように特徴量作成を支援するノードの使い方は知っていれば知っているほど分析作業を効率化できます。
グローバルの設定ノードは既存のストリームの構造を変えずノードを追加でき、自由度高くグローバル値を呼び出すことができます。是非次回の分析から活用を検討してみてください。

次回の推しノード#13はスタッツギルド の櫛田さんが「レコード結合ノード」について解説されます。

 

→これまでのSPSS Modelerブログ連載のバックナンバーはこちら

→SPSS Modelerノードリファレンス(機能解説)はこちら

→SPSS Modeler 逆引きストリーム集(データ加工)はこちら

 

 

守谷 昌久
日本アイ・ビー・エム株式会社
グローバル・ビジネス・サービス

 

More SPSS Modeler ヒモトク stories

データ分析者達の教訓 #16- ステークホルダーの高い期待を使命感と創意工夫で乗り越えろ

Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...

  皆さんこんにちは。IBMの坂本です。 SPSSを含むデータサイエンス製品の技術を担当しています。 このリレー連載ブログはSPSS Modelerの実際のユーザーで第一線で活躍するデータ分析者に、データ活用を ...続きを読む


データ分析者達の教訓 #15- データ分析は手段と割り切り情熱をもって目標に進め

Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...

  皆さんこんにちはIBMの河田です。SPSSを含むデータサイエンス製品の技術を担当しています。 このリレー連載ブログはSPSS Modelerの実際のユーザーで第一線で活躍するデータ分析者に、データ活用を進め ...続きを読む


データ分析者達の教訓 #14- データから導かれる「あたりまえ」を丁寧に見つめ直す

Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...

  皆さん、はじめまして。 昨年末にIBM にJoinし、Data&AIでデータサイエンスTech Salesをしている宮園と申します。   このリレー連載ブログはSPSS Modelerの実 ...続きを読む