主成分分析とは? 例を使って活用方法とメリットをわかりやすく解説

1.主成分分析とは

主成分分析の概要

主成分分析とは、多くの変数を持つデータを集約して主成分を作成する統計的分析手法です。
何かを予測する教師あり学習ではなく、教師なし学習にあたります。
主成分とはデータの特徴を表す要素のことで、「第一主成分、第二主成分・・・」という形で表現します。
簡単な例を挙げてみましょう。
要素A~Eで構成されるデータがあるとしましょう。
5つも要素があると集計が大変なので、主成分分析で各要素をより少ない要素で表すことにしてみました。
分析の結果、全データを以下のように表すことができました。

図

5つの主成分がありますが第4と第5主成分はデータの構成要素のうち10%未満ですので、第1〜第3主成分で全データのほとんどの要素を表せることが分かりました。
このように主成分分析を実施すると、多くの変数(要素)で表されたデータをより少ない変数(要素)で表すことができるようになります。

主成分分析によって分かること

固有値、寄与率、累積寄与率

固有値と寄与率をみることで、各主成分がデータ全体をどれくらい説明できているか知ることができます。
固有値は元のデータをどれくらい説明できているか示す指標で、基本的には1以上であれば十分に説明できていると判断します。
寄与率はその主成分がデータ全体を何%説明しているかを示すもので、直感的にその主成分の重要度を理解することができる指標です。
この固有値と寄与率をみて、第何主成分までを使って分析するか判断することができます。
また第1主成分から第〜主成分の寄与率の合計を”累積寄与率”と言います。
第1主成分と第2主成分を使ってグラフ化などした際に、第2主成分までの累積寄与率はいくつかみることで、そのグラフが元のデータをどれくらい説明しているか判断することができます。
例:第1主成分の寄与率50%、第2主成分の寄与率が30%の場合累積寄与率は80%となり、データの80%の情報をグラフで表すことができていると解釈する。

主成分負荷量

主成分負荷量をみることで、各主成分の計算にどの変数をどのくらい使用しているかみることができます。
例えば第1主成分をみた時に、要素A,C,Dの主成分負荷量が高く、要素B,Eの主成分負荷量が低かったとしましょう。
第1主成分の主成分負荷量→{要素A:1.1、要素B:0.3、要素C:0.9、要素D:-1.9、要素E:0.1}
第2主成分の主成分負荷量→{要素A:-1.1、要素B:1.2、要素C:0.3、要素D:0.2、要素E:1.1}
各値の絶対値が高ければ高いほど、その主成分に強く影響しています。
この場合第1主成分は、要素A,C,Dの値を強く反映した主成分だと判断できます。
一方第2主成分は、要素A,B,Eの値を強く反映した主成分だと言えそうです。
以上のように、主成分負荷量は各主成分がどのような意味合いを持つのか理解する際に使用されます。

主成分得点

元のデータを各主成分に変換した値を主成分得点と言います。
複数の変数を持つデータをグラフで表したい時などで使用されます。
各データの変数から第1主成分得点と第2主成分得点を算出することで、各データの特徴を2次元のグラフに変換することが可能となります。

図

主成分分析のメリットと活用法

情報を集約しながら変数を減らすことができる

主成分分析を使えばデータの情報量をなるべく減らさずに変数の数を減らすことができます。
主成分分析を使わずにデータの変数を絞りたい場合、いくつかの変数を切り捨てなければなりません。
しかしそれだと重要な変数も切り捨てなければならない場合が出てきます。
主成分分析は、各変数の情報をなるべく多く含むように第1主成分から順に主成分を生成していきます。
そのため通常よりも効率的に変数の数を減らすことができます。

データのグラフ化が可能となる

第1主成分得点と第2主成分得点を使用することで、多くの変数を持つデータの可視化(グラフ化)が可能となります。
通常は2変数以上含むデータを2次元でグラフ化することはできません。
しかし第1主成分と第2主成分に各変数の情報量を集約してしまえば、グラフ化が可能となります。

変数間の関係性を知ることができる

各主成分の主成分負荷量をみることで、変数間の関係性を知ることが出来ます。
先ほどの例で上げた主成分負荷量をもう一度確認してみましょう。
第1主成分の主成分負荷量→{要素A:1.1、要素B:0.3、要素C:0.9、要素D:-1.9、要素E:0.1}
第2主成分の主成分負荷量→{要素A:-1.1、要素B:1.2、要素C:0.3、要素D:0.2、要素E:1.1}
第1、第2主成分をそれぞれx軸、y軸としてグラフ化すると以下のようになります。

図

このようにすると要素Bと要素Eは近い位置にあり、同じような性質を表す変数であることがわかります。
以上のように主成分負荷量をグラフ化することで、変数間の関係性を考察することも可能です。

主成分分析の注意点

各主成分の持つ意味は分からない

主成分分析を行うと、計算で自動的に主成分を作成することが出来ます。
しかし作成した主成分がどのような意味を持っているのかは、自力で考察する必要があります。
基本的には最初に主成分寄与率や主成分得点をみて各主成分の特性を把握します。
次にその特性を考慮して各主成分の意味を考察します。
しかしこの意味づけはあくまでも人間の主観に基づいて行われるため、人によって違った意見になることもしばしばあります。
主成分の持つ意味を考察する時は、なるべく多くの人と結果を共有して慎重に意味付けを行っていく必要があります。

寄与率が低すぎて役に立たないこともある

データによっては寄与率が低すぎて役に立たない場合もあります。
特に変数が多すぎるデータの場合は寄与率が低くなりがちなため、注意しましょう。
寄与率が低い主成分を使ってグラフ化する場合は特に注意が必要です。
例えば第1主成分と第2主成分の累積寄与率が10%以下の場合、それらの主成分を使って表したグラフは、全データの10%以下の情報しか含まれていないことになります。
このようにせっかく主成分分析を行っても寄与率が低すぎてあまり役に立たない場合もあります。

2.主成分分析の活用例

例①マーケティング(顧客の分類)

ある会社がどのような顧客が自社製品を購入してくれているのか調査しました。
事前の調査で製品に対して安さにメリットを感じている方や、機能性にメリットを感じている方など、様々なメリットを感じている方がいることが分かっています。
そこで”価格”、”使いやすさ”、”ブランド”、”耐久性”、”機能性”の5項目をそれぞれ10点満点で調査し、それぞれの顧客が自社製品に対してどのような印象を持っているか調査することにしました。
各顧客の特徴を最終的にグラフにして視覚化する方が望ましかったため、主成分分析を用いることにしました。
分析の結果、第1主成分の寄与率は62%、第2主成分の寄与率は28%でした。
第2主成分までで累積寄与率が90%ですので、良好な結果といえそうです。
次にそれぞれの顧客の第1主成分得点と第2主成分得点を使って以下の散布図を作成しました。

図

横軸が第1主成分、縦軸が第2主成分を示しています。
このグラフをみると、どうやら以下の2グループに顧客を分類できそうです。
・右下のグループ=”第1主成分が高値で第2主成分が低値の顧客”
・上のグループ =”第2主成分が高値で第1主成分の影響がない顧客”
最後に第1主成分と第2主成分が何を意味しているのか考察するために主成分負荷量を確認してみました。
以下に主成分負荷量が高かったものを示します。
・第1主成分:”機能性”=2.4、”価格”=1.8、”耐久性”=1.3
・第2主成分:”使いやすさ”=1.4
以上の結果から以下のような解釈をしました。
・右下のグループ=”機能性や価格、耐久性に魅力を感じているが、使いやすさに少し不満を持っている顧客”
・上のグループ =”使いやすさに魅力を感じている顧客”
今回の分析結果から、この製品は機能性や価格、耐久性に魅力を感じている顧客が多い一方で、使いやすさは顧客によって差があることが分かりました。
現状の使いやすさに魅力を感じている顧客もいるため、使いやすさをどのように改善してくか注意が必要そうです。
このように主成分分析はサンプルの特徴をグラフ化し、分析する際に役立ちます。

例②テスト結果の分析

ある学校が生徒の運動能力を伸ばすために、体力テストの結果を分析することにしました。
体力テストの結果は”握力”、”走力”、”柔軟性”、”持久力”、”瞬発力”の5項目があり、それぞれ10点満点です。
まずはそれぞれの項目がどのように関連し合っているのか知る必要があると感じ、分析してみることにしました。
それぞれの項目の関係性を視覚化したかったため、主成分分析を用いて各項目間の関係性をグラフ化しました。
結果は以下のようになりました。

図

先ほどの例と違い、縦軸と横軸がそれぞれ主成分負荷量に変わっていることに注意してください。
このグラフをみると、どうやら”走力と瞬発力”、”柔軟性と持久力”はそれぞれ関係がありそうです。
反対に”握力”はどの項目からも離れており、関係が少ないといえそうです。
このように主成分分析は各項目の関係性をグラフ化する時に役立ちます。

3.主成分分析のアルゴリズム

主成分分析はどのように主成分を作成しているのか、簡単に解説していきます。
端的に言うと、主成分分析は分散が最大になるように主成分を作成します。
分散とはデータのばらつき具合を表す指標です。
つまりデータが固まらないよう、なるべくばらつくように主成分を作っていくわけです。
どういうことか、例を使って説明していきましょう。
ある4人の生徒の国語と数学の点数を以下の表に示します。

図

どちらの教科もできる生徒、できない生徒がいる一方で国語だけ得意な生徒や数学だけ得意な生徒がいることが分かりますね。
ではこの2つの教科の点数(2変数)で表される生徒達の特徴を1変数だけで上手く表したいとしましょう。
国語と数学のどちらかを使うだけでは、2教科とも得意な生徒とどちらか1教科だけ得意な生徒が同じ扱いになってしまいます。
理想としては2教科とも得意な生徒と1教科だけ得意な生徒、2教科とも苦手な生徒をうまく表したいところです。
ここで主成分分析を使います。
以下の図のように2変数を合成した斜めの軸(主成分)を使用して生徒の得点を表してみましょう。

図

この軸上でみると、国語や数学だけでみた時と比べて生徒達が適度にばらついているのが分かりますね。
ちなみに今回の例で作成した第1主成分は国語と数学の点数を均等に足したもので、いわゆる「総合点数」を意味しています。
主成分分析によって国語と数学の2変数で表す必要があった生徒達の特徴を、1変数で上手に表せるようになりました。
このように主成分分析はデータの分散(ばらつき)が最大になるように主成分を作成する分析です。

4.主成分分析と因子分析の違い

主成分分析と因子分析は複数の変数を少数の変数に要約するという点でよく似ていますが、少し異なります。
両者の最大の違いは、新しく作成する変数の中身を事前に仮定しているどうかです。
新しく作る変数のことを主成分分析では”主成分”、因子分析では”因子”と表現します。
“主成分”は先ほどご説明したようにデータの分散が最大になるように設定されるため、すべての変数を使用して主成分負荷量を計算します。
”因子”は先にどの変数を使用するか仮定し、仮定された変数のみを使って主成分負荷量(正確には因子負荷量)を計算します。
まとめると、以下の違いになります。

  • 全ての変数を使って新しい変数(主成分)を作る→主成分分析
  • あらかじめ仮定した変数のみをつかって新しい変数(因子)を作る→因子分析

因子分析のほうがあらかじめ使う変数を仮定している分、作成した因子の解釈が容易です。
しかし仮定が間違っていた場合、寄与率が低くなるリスクがあります。
そのため作成する因子の目処が立っていたり、特定の因子について分析したい時は因子分析を選択することになります。

主成分分析と因子分析のどちらを使うべきか、分析する目的によって変わってくるため、事前に目的を明確にしておきましょう。

5.まとめ

最後におさらいをしましょう。

  • 主成分分析は多くの変数を持つデータを集約して主成分を作成する統計的分析手法
  • 主成分分析によって固有値、寄与率、主成分負荷量、主成分得点を算出できる
  • 主成分分析は多くの変数を持つデータの関係性をグラフ化する時に活用できる
  • 主成分分析は変数間の関係性をグラフ化する時にも活用できる
  • 算出された各主成分の意味は自力で考察しなければならない点や、寄与率が低すぎる場合もある点には注意が必要
  • 各主成分はデータの分散が最大になるように作成される

最近はデータが集めやすくなった一方で、データが増えすぎて扱いきれなくなっているケースが出てきました。
変数が多すぎて解釈が難しくなったデータを扱う時に主成分分析は非常に役に立ちます。
煩雑なデータを最初に主成分分析をしてみることで、分かりやすくなることもよくあります。
今まで使ったことがなかった方は、是非一度試してみてください。
最後までお読み頂きありがとうございました。