
前回投稿まで少し理論的な話が続いたので、今回は実践的テーマとして機械学習を活用したデータ分析の実践的流れと結果の伝え方について記します。解析対象データについて細かく言及はできませんが、マーケティングにおける優良顧客分析、人事領域における従業員分析のようなものをイメージ下さい。それでは早速ですが以下の図をご覧下さい。
グレイ部分がデータ部、右下の黄色部分が提言部です。私たちの仕事はデータから提言を生産することなので、IN-OUTは常にDATA-SUGGESTION構造です。一番左のデータは目的変数群相当で、顧客分析であれば購買回数・単価・訪問回数などを表す変数が、従業員分析で従業員満足度などのKPI的変数で構成されます。この変数を何にするかはビジネス目的次第です。
さてここで教師なし学習のクラスタリング手法(上図❶)を使えば、複数ある目的変数群からパターンを抽出することができるでしょう。同じ優良顧客でも高頻度型なのか高単価型なのかといったイメージです。正直2変数程度ならパターンをルールベースで定義しても良いです。機械学習が役立つのは変数の数が多い時です。このように抽出されたクラスタ番号が上図❷に相当します。
次に多クラス分類器ですが、正解ラベルとして先に求めたパターン番号、特徴量には顧客や従業員の各種特性(基本属性、定量化された行動特性など)を使い、ランダムフォレストあたりを構築すればよいでしょう。特徴量をどう作り、どう工夫するかでもちろん結果は変わります。ここは場数を踏むしかないでしょう。ここまでで優良顧客や満足度のパターンを識別する因子を抽出できます。以下はその結果イメージです。
実は分析の自動化が難しい理由がこの図に隠れています。まず抽出されるパターン数の自動決定が難しいです。もちろんクラスタ数を決める技術的手続き論はありますが、実務の場でそのままやる人は多くないでしょう。ここはドメイン知識に照らし抽出されたパターンを心地良く感じられることの方が大事だからです。また何を特徴量に入れるかで抽出パターンも変わりますし、何よりパターン間の関係をどう構造化するかは解析者のセンスです。分析を自動化しようとする人は、異性と付き合う時もそういう本を読む人達と同様の残念さを漂わせるものなのです。
さてここまででパターン化とそのパターンを識別する因子理解までができるのですが、ここまでだと結果を聞いた人は「ふ〜ん、それで?」となります。分析界において聞き手の「ふ〜ん」は落第ですからここからが勝負です。以下図をご覧下さい。これはビジネス上あまり良くないパターン(Ex.非優良顧客や満足度が低い従業員)に属したクラスタをその一つ上のクラスタに引き上げるため、この二つのパターンに属したデータに限定しバイナリ分類器を構築し、その結果を表示させもののイメージです。
複雑なことは何もありません。パターンを見出し、評価し、ドメイン知識に照らしパターン間に構造を与える。そして上図であればバイナリ分類器を合計4つ構築し、各分類器の上位重要変数について基礎集計を行うだけです。結構ここが大事です。PDP(Partial Dependence Plot)なども悪くないですが、やはり最後の提言に向けては基礎集計が最強だと思います。最後のサマリページのテンプレート画像も参考までに貼り付けておきます。
以上まとめます。興味ある多数のKPIを個別に目的変数としモデル化するのは骨が折れます。そこで目的変数群についてクラスタリングでパターン抽出し、そのパターン間に構造を見出し、全体俯瞰を多クラス分類で行います。そして最後の提言に向けて各パータン間について一つずつバイナリ分類器を構築し、変数重要度上位のものについて基礎集計を行い提言をまとめます。流れに規律はありますが重要なのは解析者のセンスに委ねられた以下のような点です。
- クラスタリングに投入する変数をそもそもどうするか?(醜いアヒルの子定理をご参照下)
- ドメイン知識と照らし心地良さを感じる範囲でクラスタ数を最終決定する
- 抽出されたクラスタ間に構造関係を与える(ここのサイエンス要素強化余地は感じます)
- 最終提言内容をまとめる
皆さまは組織的にこのような実践的分析フローをいくつお持ちでしょうか。またそれを共有し合うオープンなカルチャーを構築できているでしょうか?…そのような文化は現場の自由な発想と討議から生まれます。分析を単なるデータ処理と考え、何でも自動化、何でも標準化と現場管理しようとし、データサイエンティストの創造性を奪ってしまってはいないでしょうか?