👻

文系でもわかる主成分分析

2024/08/22に公開

まえおき

株式会社ウェイブでコミック配信サイト ComicFesta のエンジニアをしている肥沼です。

今回は、データ分析でよく出てくる「主成分分析」について忘れないようにまとめてみました。

せっかくなので、誰でもわかるようにまとめてみました。

主成分分析とは?

説明の仕方は異なれど、多くはこのように解説しています。

「主成分分析」とは、統計学上のデータ解析手法のひとつです。たくさんの量的な説明変数を、より少ない指標や合成変数(複数の変数が合体したもの)に要約する手法です。

https://www.intage.co.jp/glossary/401/#:~:text=「主成分分析」とは,主成分」と呼びます。

「統計学上」「解析」「説明変数」「合成変数」など何やらよくわからない言葉が続いていて、なんとなくも分からない人が多いかと思います。

ここでは専門用語を使わずに主成分分析の本質を誰でもよく分かるように解説したいと思います

そもそも主成分分析はどんなときに使うの? (初級編)

弊社の運営するコミックサイトにちなみに、

どんなユーザーが特定の漫画を購入する傾向があるのか

を分析してみましょう。

ユーザーといえば、年齢、性別、都道府県、使用端末、他の漫画の購入数、などの属性を持ちますね。
下記に特定の漫画についてのユーザーのデータの例を示します。(データは適切にサンプリングされたものとします)

id 年齢 性別 都道府県 使用端末 他の漫画の購入数 この作品を購入したか etc.
3212 45 男性 東京都 Mobile 13
2548 39 男性 東京都 Mobile 9
0232 22 男性 東京都 Desktop 5
6834 13 男性 東京都 Mobile 2
4423 27 女性 東京都 Mobile 7
9223 55 男性 東京都 Mobile 12
...

これらの属性は非常に多岐にわたるため、どんな属性に注目して分析すればよいは簡単にはわかりません。

しかし、勘の良い方は気付いたかもしれない注目点があります。

性別、都道府県、使用端末がそれぞれほとんど同一の値となっていることです。同一な値なら、分析に使用しなくても良い気がしませんか?

例えば、性別を例に挙げれば、「ほとんどのユーザーが男性だから、性別を軸に判断するのは違うなぁ」と(思ってください笑

性別、都道府県、使用端末を除けば、分析する対象の属性は、年齢と他の漫画の購入数のみになります。

属性が2つになることで、下記のようにグラフに書くことができるようになりました。


(⚫︎: 購入した ×:購入してない)

こうすると、「年配で他の漫画を買っているユーザーが購入しやすいんだなぁ」と理解できるようになります。

ここまでの流れが「(すごい大雑把な)主成分分析を使ったユーザーを分析」となります。

振り返ると、主成分分析とは

多くある指標を少なくする事で、分析する人がデータの傾向を理解し安くできる手法

といえます。

主成分分析をもっと詳しく (中級編)

先程までは非常におざっぱだったので、ここからはもう少し詳しく理解していきましょう。

ここでは、「方角の伝え方」を示しながら解説します。

次のような図において、村Aの場所を方角と距離を使ってどのように表現できるでしょうか?

「東に3km,北に4km」と表現できそうですね。

では、ここで図のように、北東を東'と呼ぶ国Aの人たちがいたといます。

このとき、彼らの方角を使うと、村Aの場所をどのように表現できるでしょうか?

「大体、東'に5km」かと思います。

不思議なこと?に、先程までは説明するのに東と北という2つの変数が必要だったのに、東だけの変数だけでよくなりました。

使う方角(座標系)を異なる方角(座標系)にかえる事で、説明する変数を削減できるということです。

さて、この考え方を使うと、実は、先ほどの初級編のユーザー属性はさらに属性を減らすことができるんです。

こんなふうに傾けた座標系を考えて、、

傾けた座標系の横軸を変数X, 縦軸を変数Yとします。

この変数XとYを使うと、各ユーザーの属性はこのように表現できます。(すごい大雑把です)

id X Y
3212 59 1
2548 47 -1
0232 27 -0.5
6834 15 -1
4423 34 0
9223 65 -2

Yの値の殆どが-1から1の間にあり、同じ値に近いので無視しても良さそうです。
そうすると、変数Xだけ考えれば良いことになります。

先ほどまでは、年齢と他の漫画の購入数の二つが必要でしたが、この変数Xだけで分析できるようになります。
(ただし、変数Xがどういう意味を持つのかは考察が必要となります。

このように、座標系をいい感じに変えることで、説明するために必要な変数を減らすことができます。

これが主成分分析の本質となります。

ここまで理解できれば主成分分析が分ったと言ってもいいでしょう!

具体的に主成分分析ってどうやるの?

先程の例では、データを見ただけで重要な指標を判断する事が出来ました。

ただし世の中には人が見ただけでは判断できないデータがほとんどです。
(何百もの属性があったり、データ数が何十万もあったり。。。

では、人の感覚に頼らないためにはどうすれば良いのでしょうか?

主成分分析を数学的に理解しよう (上級編)

つぎの記事に続く...

主成分分析の活用

本記事で例として挙げたように、ユーザーの傾向を可視化する以外にもさまざまな活用方法があります。

いろんなサイトで紹介されているので、ぜひ活用してみましょう!

https://surveroid.jp/mr-journal/data_analysis_method/aqQEF#item1950

https://www.nttcoms.com/service/research/dataanalysis/principal-component-analysis/

wwwave's Techblog

Discussion