見出し画像

Webサービスを運営する会社的「因子分析の学び方」part.1 ~因子分析の位置づけ~

こんばんは。
少し久しぶりになりましたが、こうやって複数記事を書くようになってくると、「この先どんな記事を書けば、このnoteのありたい姿を過不足なく満たせるかな」と(MECE的に)考えてしまい、何から発信するべきか分からなくなってしまいます。
しかし、考えても分からないことはやってみるほかないので、できた記事から、自分の中でタイムリーな記事から発信していければと思いました!

さて今日は、
以下のような方に、この記事が役立つ内容をお届けしたいと思います:

  • 機械学習に少し触れたことがあり、「因子分析」や「主成分分析」といった言葉を耳にする機会が増えてきた方

  • Webサービスの分析に機械学習を活用してみたいが、何から手を付けるべきかわからない方

このシリーズでは、全3回ほどで因子分析について段階的に解説していきます。初回となる今回は、Webサービス運営会社のデータ部門にとっての因子分析の「位置づけ」&「学びの順序」について整理しながら、基本的な考え方を掴んでいただければと思います。


因子分析の基本概念

これから話すにあたって、「因子分析」と聞いてピンとこない方もいらっしゃるかもしれません。簡単に言うと、例えば以下のようなイメージです:

中学校で5教科(国語、数学、英語、理科、社会)のテストを受けると、それぞれの得点が出ます。しかし、個別の得点だけを見ても、各生徒の特徴を捉えたり、全体の傾向や覚の学力の構造を把握するのは難しいもの。
これを、「基礎学力」「読解力」「計算力」といった新しい指標で捉え直せたとしたらどうでしょうか?
ただの点数の集まりが、学力を構成する要素として再解釈できるようになります。因子分析とは、このようにデータを変換し、背後にある構造や特徴を浮き彫りにするための手法です。


Webサービス運営会社における因子分析の活用シーン

Webサービスの運営において、因子分析は以下のような理由・目的で使われることがあります。

ユーザーがサービスをより活発に利用するための課題を特定したい
┗そのためにはユーザーごとの利用目的や回遊スタイルの違いを把握せねば
  ┗そこでユーザーを数パターンのクラスターに分類し、
   それぞれの特徴を分析したいと目論む
   ┗クラスターごとの特徴を数個の要素に要約し、
    レーダーチャートなどで視覚的に捉えられればそれが叶いそう

こうした発想・観点から、単なるデータの羅列では見えづらいユーザー行動の本質やパターンを明確化していきます。
なお、書いたように、因子分析はクラスタ分析と併用すると相性がいいのですが、この点については次回以降のパートで詳しく触れます。


学び方のステップ


弊社では、因子分析を学ぶ際には、次のような流れで進めることにしています!

1.基礎知識の理解:

まずは因子分析の原理や基本概念をサラッと押さえます。
中でもデータの次元を削減するメリットを掴むことが大切。
(例えば、さっきの5教科→3指標の例でもいいです。話を考えてあげて、因子分析が何かを粗めでも理解できるようにします)
この段階では、「varimaxだ、promaxだ」だったり、因子負荷量がなんだかんだとか、細かな技術的用語や数学的背景に深入りは全くしません。


2.主成分分析作業の全体像を把握:

因子分析に必要なデータ前処理、モデル構築、結果の解釈といった大まかな流れを頭に入れます。
とにかく以下の図をまず見せ、ここからは常に、「自分たちはこの中のどのフェーズにいるか」を指差しながら話していきます。流れが可視化してわかっているだけで、変な分析手法にならないし、そしてヌケモレも防げることでしょう。

図1

具体的には以下の3STEP。

①データの準備(前処理)
いつもやっているようなハズレ値除外、そして忘れちゃいけないのは標準化。
ただ、ここでは「なぜ標準化をするか」の説明ははしょって、一旦はするものであるとだけ伝えます。

②(並行)元データを因子分析したデータで変換 & 各因子の寄与度を可視化する
元データを変換して、そこにもとのユーザー名をつけたりします。
また各因子の寄与度の可視化でも、もともと入れた特徴量のカラム名をいれることで解釈が進みます。

次の解釈のフェーズでどっちも見比べながら進めるため、変換が先か、寄与度の確認が先かではありません。

③解釈する
上で必要な変換、データの準備をしたから、モデルがどう出力したかを理解していくフェーズです。
大事なのは、因子分析は教師なし学習だから正解がなく、解釈性があればOK。
注意したいのは、機械学習を「目的」にとらえていると、「すごい分析をした」というところに気持ちがむいてしまう。大事なのは、これは手段。
因子分析した結果が4要素なら、きれいに4要素が「〇〇力」と説明がつく状態になっているか、それが大切です。
弊社ではこれをサイトを作っている非データ人材のWebディレクターに説明して理解してもらえるかをイメージしながら、このフェーズを行います。結果を整理して、説明がややこしくなる状態ならまだそれは解釈性が高くないということ。まだ分析の余地があるのだと考えます。


3.コード起点で分析手順を知る:

「フェーズ2.主成分分析作業の全体像を把握」を30分で終えて、その日の中にコードを書くことが正直オススメ!
というのも、「上で紹介した手順で実際にできるのか!」という実感が得られるような手頃さを重視しています。コードの1個1個にこだわるのは後でOK。なんなら、ある程度のコピペでも良いと思います。(次回、自分が因子分析の雛形としているpythonの実コードを紹介します)
弊社では、一番因子分析に適した題材と、それを因子分析した段取りをデータ&コードを用意して、手順の図と併せて30分で写経してもらいました。
そうすることで、メンバー全員、実際にできるんだと実感がうまれたし、新しいことも1時間の勉強会だけで、初学終了まで持ち込めました。


4.手法として使える→解釈として使える分析にしていく

ここまで、手法として使えることを念頭に因子分析を学習してきました。次のフェーズでは一度心を折れさせます。
フェーズ3までは、こちらが用意したように概念を理解し、コードを書けるようにして、「逆上がり台を使って逆上がりができるようになった」状態。これでは台を外したときに、一人で逆上がりができないように、どのようにしたら逆上がりできるようになるかは分からないような感じといいましょう。

具体的にはこのフェーズ4では、これまで触れてこなかったようなデータ、生活と親和性がないようなサンプルデータをLoadして、因子分析の手法に当てはめてみてもらいます。
フェーズ3で、写経的にコードを書くことはできるようになっているので、数十次元あるデータを5指標ほどにまとめることができるでしょう。
さて次にさせるのは結果の解釈です。
実は驚くほどに、あなた自身が触れてこなかったデータの因子分析は因子の解釈ができません
この分析の良し悪しがわからない状態になるのでどうすればいいのか考えさせます。
そして、個人で、そしてみんなで素データの各指標がそもそもどんな項目だったのかなどをネット検索していきます。こういうことをしてようやく因子の解釈ができるようになるでしょう。
「触れてきたデータなら解釈できるけど、馴染みないデータではこんなにも分析がいいか悪いか判断つかないなんて」と思いが湧いて、「素データの各指標(特徴量)にもっと関心を持たないと。」とここで気づきます。以降、因子分析する時、メンバーはコードやデータを見るだけでなく、「この数値とこっちが高いってことはどういう解釈になる?」とWebディレクターと相談をするようになるなどして、解釈性を高めることの大事さを知るようになりました。

次回予告
次回のパート2では、「素データ理解の重要性を知る」というテーマで、プロ野球データを用いた学習事例を紹介します。
因子分析をWebサービス運営に役立てるための具体的な道筋がさらに明確になる内容をお届けしますので、ぜひお楽しみに!


読者の皆さんへのお願い
記事に関するご意見やご質問、意見交換したいことなどがあれば、ぜひコメントをお寄せください。一緒にブラッシュアップしていければと思います!

いいなと思ったら応援しよう!