SPSS Modeler ヒモトク
ブログで学ぶSPSS_Modeler #06- モデル作成をもっと楽に!特徴量の選択もSPSS Modelerにおまかせ
2022年06月06日
カテゴリー Data Science and AI | SPSS Modeler ヒモトク | アナリティクス | データサイエンス
記事をシェアする:
皆様、初めまして。日立ソリューションズ東日本の南雲と申します。
SPSS製品やCognosなどを活用してデータサイエンティストとしてお客様の課題解決に向けた支援をしています。
・日立ソリューションズ東日本 データ分析ソリューション
https://www.hitachi-solutions-east.co.jp/products/dataanalytics/
・日立ソリューションズ東日本 予兆検知ソリューション(製造データ分析)
https://www.hitachi-solutions-east.co.jp/products/sign/
「私の推しノード」から続くこのリレー連載本当にいいですよね。
SPSS Modeler使い始めてもう10年になりますが、まだまだ使ったことない機能が沢山あり、よく「そんな機能もあったの・・?」と、ブログを読んではのけぞります。
まさか、自分が執筆する立場になるとは思いませんでしたが、皆様に喜んでいただけるよう張り切って解説します。
さて今回はIBM河田さんよりバトンを受けまして、SPSS Modelerの「特徴量選択ノード」を紹介いたします。
「特徴量」とは、結果を予測する為に必要な情報のことで、「説明変数」またはSPSS Modelerの「入力フィールド」と同義と考えていただければ幸いです。
特徴量選択ノードはModeler上では「モデル作成」タブに入っていますが、個人的にはデータの前処理作業の一環として扱っています。
手間がかかる作業を楽にしてくれる非常に嬉しい機能ですので、使ったことがない方はこの機会に是非お試しください。
特徴量選択ノードはこんなご経験のある方におススメ!
- 欠損値割合の高いフィールド、カテゴリに偏りがあるフィールドなどに対するスクリーニングが手間
- 関連するデータを集めたら、特徴量候補のフィールドが大量に出来てしまった
- 知識の乏しい業務についてモデル作成を依頼され、どのフィールドが重要か判断し辛い
- まずは一度、短時間で少しでも良いモデル作成したい
SPSS Modelerに限らず、これまでに予測モデルを構築された方はこんな困り事のご経験があるかと思います。
特徴量選択ノードはこんな困り事に対して、次の処理により予測に重要な特徴量を“自動で”選択してくれるノードです。
- スクリーニング
欠損値割合の高いフィールド、カテゴリに偏りがあるフィールドなどを判定 - ランク付け
相関係数などから予測対象フィールドに対する重要度をランク付け - フィルタリング
1と2で重要度の低いフィールドをフィルタリングし、重要な特徴量を自動選択
※もちろん1~3のパラメータはデフォルトから変更可能です。
特にフィールドが数十以上ある場合、フィルターノードやデータ型ノードで選択するだけでも大変なのに、スクリーニングと順位付けまで自動実行してくれる優れものです。
早速、特徴量ノードの使い方を実際の操作に沿って説明していきましょう。
利用場面のイメージ
今回は、SPSS Modeler製品に同梱されているデモデータ「customer_dbase.sav」を使います。
このデータは、どうやら顧客の属性情報とプロモーションに対する応答結果のようです。
このデータ提供主から、次の依頼をされたと仮定して進めていきます。
【依頼】:顧客の属性情報とプロモーション結果から、プロモーションに反応してくれる可能性の高い顧客の傾向を分析したい。
いきなり業務知識のないデータ扱うのは難しい為、本当はデータの意味や業務に関するヒアリングなど色々したいところですが、数千件程度のデータであればとりあえずモデル作ってみることが出来るのがSPSS Modelerのいい所ですよね。
データの詳細はよく判らないですが、早速作ってみましょう。
通常のモデル作成
まずは特徴量選択ノードを利用しないでモデルを作成します。
データ型ノードで尺度やロールを設定します。
今回は予測したいフィールド[response_01]のロールを「対象」にして、不要なフィールドのロールを「なし」にします。
0 or 1のフラグデータは尺度をフラグ型にしておきます。
事前に棒グラフノードでプロモーションに反応した顧客の割合も確認しましょう。
・反応あり:8.36%
今回の分析では、この数値より反応率が高い顧客の属性を見つけることが出来れば良さそうです。
バランシングして偏りを除去したり学習と検証に分ける前処理は割愛しますが、本来は必要です。
モデルは「CHAID」を利用します。数値もカテゴリも予測対象に出来て、予測結果も理解し易い為、最初のモデル作成によく利用しています。
データ型ノードに接続、実行し作成されたモデル・ナゲットを確認します。
プロモーションへの反応に関連ある項目として24のフィールドが挙げられ、
62のルールセットが作成されました。
この中からプロモーションへの反応が期待できる顧客の属性を調べるのですが、もっとシンプルなルールセットにできないか試してみましょう。
特徴量選択ノードを利用したモデル作成
ここからは特徴量選択ノードを利用してモデルを作成します。
この記事の最初でも触れましたが、特徴量選択ノードはフィールドのスクリーニング、ランク付け、フィルタリングを自動で実行してくれるので、今回の様に重要なフィールドを絞り込んだり、ルールセットをシンプルにする場合に有効です。
特徴量選択ノードにおけるスクリーニングは次の5項目で設定可能です。
私の場合、とりあえずデフォルトで実行して、結果見ながらチューニングしていくことが多いです。
- 欠損値の最大パーセンテージ
→欠損値割合が大きすぎるフィールドをスクリーニングします。
欠損値であることに重要な意味がある場合は、事前に欠損値をフラグやカテゴリデータに置換しておくとこのスクリーニングを回避できます。 - 単一カテゴリー内のレコードの最大パーセンテージ
→1つのカテゴリに偏っているフィールドをします。
例えば性別のフィールドで99%男性の場合、予測精度に寄与しない可能性が高いと考えられます。 - レコードのパーセンテージとしての最大カテゴリー数
→カテゴリ数が多すぎるフィールドをスクリーニングします。
例えば顧客1000人のデータに対して、あるカテゴリのフィールドが950種類も含まれる場合、予測精度に寄与しない可能性が高いと考えられます。 - 最小変動係数
→変動が小さすぎるフィールドをスクリーニングします。
最小変動係数とは、入力フィールドの平均に対する入力フィールドの標準偏差割合のことで、ほぼ一定値が入力されている様なフィールドを探索してくれます。 - 最小標準偏差
→標準偏差が小さすぎるフィールドをスクリーニングします。
最小変動係数と類似していて、こちらも変動の小さいフィールドを探索してくれます。
データ型ノードに特徴量選択ノードを接続、実行して、作成されたモデルナゲットを確認します。
設定した条件に従って、フィールドのスクリーニングと重要度の算出による順位付けまでしてくれました。
利用可能な全128フィールドから34フィールドが選択されています。
もちろん、ここからチェックボックスを操作することで追加したいフィールドを選ぶことが可能です。
今回はデータの都合上128フィールド程度ですが、実際の分析作業で数百~数千のフィールドのデータと向き合うときは、この特徴量選択ノードのありがたみを心から実感します。
この特徴量選択ノードのモデルナゲットはフィルターの機能も兼ねています。
試しにフィルターノードを接続してみると、38フィールド(選択した34フィールド+予測対象1フィールド+ロール「なし」に設定した3フィールド)のみが残っており、フィルタリングされていることが確認できます。
ポイント:特徴量選択ノードのモデルナゲット上部からフィルターノードを生成することも可能ですが、その場合ロールを「なし」に設定したフィールドもフィルタリングされてしまいます。
顧客IDなどは後から別のテーブルと結合するキーに利用する場合もあるので、モデルナゲットをそのまま使う方が好きです。
では、こちらも「CHAID」モデルを作成して結果を確認してみましょう。
今回のデモデータではそれ程実感出来ないですが、モデル作成に利用するフィールドが絞られたことによって、処理時間も大幅に減少しています。
試行錯誤繰り返す中での処理時間削減も助かりますね。
プロモーションへの反応に関連ある項目として13のフィールドが挙げられ、
36のルールセットが作成されました。
特徴量選択ノード利用前が24フィールド、62ルールセットでしたので、かなりシンプルになったのではないでしょうか。
特徴量選択ノード“なし”“あり”の結果比較
最後に出来上がったモデルのルールセットがちゃんプロモーションに反応してくれそうな顧客セグメントを作ってくれているかを比較しましょう。
今回のセグメント探索はCHAIDモデルの作成オプションからモードを変更して、
インタラクティブセッションで実施します。
デフォルトの設定「モデルの生成(N)」から「インタラクティブセッションの起動(I)」に変更して実行します。
その他の設定はモデル作成時と同じにしておきます。(詳細設定のランダムシードは忘れずに統一しておきましょう。)
表示されたウィンドウ上部から、「ツリーを成長(T)」を選択すると先のモデルと同じ決定木が作成されますので、次の手順でセグメントの情報を確認します。
- 表示を「ビューア―」から「ゲイン」に切り替え
- セグメントの表示区分を「分位」に変更し、「5分位」を選択
- 対象カテゴリを「0」に変更
これにより、どのルールセットがプロモーションに反応する可能性が高いセグメントかを確認することが出来ます。
特徴量選択ノード“なし”と“あり”の場合で結果を比較します。
この機能ではプロモーションに反応する率が高い順にルールセットを並び替えた上で、指定した分位数に区切ってくれます。
特徴量選択ノード”なし”
特徴量選択ノード”あり”
特徴量選択ノード“なし“の結果からは次のことが読み取れます。
- プロモーション反応率が高い順にルールセットを並び替え、約1000件で区切ると8ルールセット(44,29・・・53,45)が含まれる
- この約1000件の内、195件がプロモーションに反応あり →回答(%):49%
- 全5000件の反応率が36%なので、約2.3倍の反応率が見込めるセグメントと考えられる →インデックス(%):233.18
つまりこのインデックスの値をみれば、反応してくれそうな顧客セグメント特定に繋がりそうです。
同じように特徴量選択ノード“あり“のインデックスを確認すると216.21となっており、
全てのフィールドで作成したモデルより若干数値は下がりますが、
重要な変数やルールセットを大幅に減らしたよりシンプルな状態でも大きな差はないだろうと考えられます。
まとめ
最後に特徴量選択ノード“なし“と”あり“の結果について整理します。
いかがでしょうか?
インデックス値や予測精度が少しでも高い事は嬉しいのですが、なるべくシンプルなルールでセグメントを決められる方が対象の顧客にアプローチし易いですし、何故このような結果になったかも説明し易くなります。
今後ますます自動でモデルが更新されるMLopsの要望が高まる中でも実装後の誤差のハンドリングは不可避です。この時現場に「なぜ予測精度が落ち、どのように対策するのか」を説明する際には特徴量を適切に選べているかが重要になるはずです。
データのスクリーニングやモデル作成でお困りの方は、ぜひ一度試して頂ければ幸いです。
次回の「ブログで学ぶ」はIBM西牧さんによる「モデル評価に欠かせない予測変数の重要度!そのカラクリと存在意義」です。
そして「身近な疑問にヒモトク」連載ではにマーケティングバリューアップの千野さんが「答えはお客さんの中にある?!アンケートの自由回答からニーズとベネフィットを定量化」を執筆。
どちらもお楽しみに!
→これまでのSPSS Modelerブログ連載のバックナンバーはこちらから
→SPSS Modelerノードリファレンス(機能解説)はこちらから
南雲 陸
株式会社日立ソリューションズ東日本
産業ソリューション事業部
ビジネスソリューション本部
アナリティクスソリューション部 第一グループ
データ分析者達の教訓 #22- 予測モデルはビジネスの文脈で語られ初めてインパクトを持つ
Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...
皆さんこんにちは。IBMの坂本です。 SPSSを含むデータサイエンス製品の技術を担当しています。 このリレー連載ブログはSPSS Modelerの実際のユーザーで第一線で活躍するデータ分析者に、データ活用を ...続きを読む
Women in Data Science Tokyo @ IBM 2024 開催レポート
Data Science and AI, IBM Data and AI
こんにちは。IBM西戸です。 今年で5回目のWomen in Data Science (WiDS) Tokyo @ IBM が2024年6月14日に初の会場とオンラインのハイブリッド開催されました。会場は2024年2月 ...続きを読む
法務・AIリスクのスペシャリスト三保友賀が語る「ダイバーシティー」 | インサイド・PwDA+7(後編)
Data Science and AI, IBM Sustainability Software
日本IBMにて法務、特にAI倫理・リスクのスペシャリストとして、そして同時にLGBTQ+コミュニティー*1やPwDAコミュニティー*2のアライとして積極的に活動している三保友賀さんにお話を伺いました。 前編での法務・AI ...続きを読む