主成分分析とは多次元データのもつ情報をできるだけ損わずに低次元空間に情報を縮約する多変数解析の一種です。例えば、身長と体重(二次元のデータ)から肥満度を示すBMI(一次元のデータ)に変換するのは主成分分析の代表例です。このように、主成分分析では複数の変数をなるべく少ない変数にデータの情報量を保ちながら縮小させることができます。
普通ビッグデータの解析には3次元を上回るような高次元データがほとんどです。つまり変数の数が非常に多くなってしまい、データの構造を可視化することが不可能になります。しかし、変数間には相関があったり、重要な変数は少なかったりするため、情報を失うことなく変数を減らすことが可能だという考えが生まれました。できるだけ情報を失うことなくデータの次元を減らすことを次元削減と呼び、その代表的な手法が主成分分析です。特に3次元以下まで次元を削減できればデータの可視化が可能となります。
例えば、国語と数学いう二次元のデータセットがあった場合に、その人の総合的なテストの得点を考えます。
国語テストの得点をx1、数学テストの得点をx2という変数名で表すとすると、国語と数学の両方を考慮した総合的なテスト得点(主成分得点)はz=a1x1+a2x2と表せます。
ここでa1とa2は重みづけを表す係数であり、総合的なテスト得点を表すために国語と数学の得点をどのように調整するかということを表しています。
例えばa1=a2=0.5であればz=0.5x1+0.5x2となり、国語と数学の得点の平均を表すことになる。一方でa1=0.3、 a2=0.7とすれば数学の得点をより重視した指標ということになります。
これを一般化すると、以下のような画像であらわされます。
主成分分析をする際、a1とa2はzの分散を最大化させるような値を求めます。
分散とはデータの散らばり度合いを表すものであり、分散が大きいほどデータが散らばっています。データが散らばっている=個体差が表れやすい=情報量が大きい、と解釈できるため、なるべくzが情報量を多く含ませるようなa1とa2を定めるために分散を最大化させます。
(なお、分散の最大化自体はRやPythonなどの統計計算ソフトで簡単に計算することができます。)
データが二次元の場合は第一主成分と第二主成分という二つの変数が作成されます。
第一主成分では欠けていた情報を第二主成分で補っています。
一般にデータがn次元の場合、n個の主成分得点が作成されます。
zの分散をλと表すとすると、それぞれの主成分がどれくらいデータを説明しているかという寄与率を表すことができます。
寄与率とは、ある主成分軸がデータの何割を説明しているかを表しています。下の図では、第一主成分がデータを60%説明しており、第二主成分がデータの40%を説明しています。このようにデータが二次元、つまり二つの変数であらわされるようなケースでは二つの主成分でデータの100%を説明します。
寄与率に着目する理由は、どの主成分を使えばよいかという指標になるからです。上の画像の例では変数が二つしかないため二つの主成分を使えばデータの100%を説明できました。一方で、大抵のデータでは二桁、ときには三桁を超える変数がある場合があります。こういった場合、主成分の数も二桁や三桁になってしまい、目的であったデータの要約ができなくなります。データの情報量を削減するために主成分を選択するわけですが、この際にデータの何割を説明しているかの基準となる寄与率を参考にすることで、データの特徴をつかんでいる主成分を採用することができます。
一般に下のような図で寄与率と累積寄与率を表します。
主成分の数が多い場合は、この累積寄与率が90%を超えるようなところまで主成分を採用します。
統計科学研究所の成績のデータを利用し、主要因分析を行ってみます。
使用するデータは、エクセルなどで以下のように各教科の成績が個体ごとに記録されているものです。
下の画像が実際に主成分分析をした結果です。
PC1とあるのが第一主成分であり、今回のデータは9個の変数があるため第9主成分まであります。
第一主成分に着目すると、この列が意味しているのは
z=0.363×国語のスコア+0.369×社会のスコア+0.357×数学のスコア+0.367×理科のスコア+0.354×音楽のスコア+0.313×美術のスコア+0.139×体育のスコア+0.317×技術家庭のスコア×0.357×英語のスコア
という式を表しています。
この連立方程式の中で体育の係数だけ他と比較して特に低いことから、この第一主成分は筆記試験の成績を表しているといえます。
第二主成分に着目すると、こちらは体育の係数が特に大きく、体育に関する主成分であることがわかります。この式では体育の係数の符号がマイナスになっていることから、体育の得点が高いほど第二主成分は小さくなります。つまり、第二主成分が小さいほど体育が得意であるということがわかります。
主成分得点をプロットした図を作成すると、以下のようなものになります。この図では横軸が第一主成分、縦軸が第二主成分であり、数字は個体の識別番号を示しています。
さて、先ほど第一主成分は筆記試験、第二主成分は体育の試験に影響するものであると解釈しました。下の図から、第一主成分の主成分得点が大きい個体は筆記試験が得意な個体、第二主成分の主成分得点が小さい個体は体育が特異な個体、という風に分類して解釈できます。よって右上に行くほど筆記試験と体育どちらも得意な文武両道のセグメント、左下に行くほどどちらも不得意なセグメントであるという風に解釈できます。
主成分得点はデータの情報量を損なわないようにしながら次元を減らすという手法です。なので、データが縮小された変数である主成分得点は多くの情報量を持ちながらも、基本的にはz=a1x1+a2x2+...+anxnという数式の形であらわされます。それぞれの主成分得点がどのような意味を持つかは、係数の値に注目して人間が解釈する必要があります。
主成分分析は人間にとってわかりやすいデータを構築するための手法の1つです。回帰分析のように、売上や利益に直接影響する要因を推定するわけではありません。クラスター分析や回帰分析、その他の多変量解析を行う前段階の分析といえます。
主成分分析はその性質上ビジネスの場面で使われることはほとんどなく、データ分析の実務で使われることが多くなる分析方法です。
主成分分析は因子分析と非常によく似ている分析ですが、考え方が異なります。
因子分析はデータに影響を与えている要因の共通因子を抽出する方法であり、因子(原因)がデータ(結果)に影響を与えていると考えます。
一方、主成分分析では多数のデータから少数の主成分として表す方法であり、データ(原因)から主成分(結果)が作られます。
このような性質を持つため、同じデータで因子分析と主成分分析を行うと主成分と共通因子の値は非常に似た値を持つことになります。
繰り返しになりますが、主成分分析はデータの情報量を削減してデータの特徴を可視化したり要約したりするのに使われます。対して因子分析では複数のデータからその背後にある潜在的要素を発見するのに使われます(例えば国語と英語のテストの点数に対して因子分析を行うことで、二つのテストの点数に影響を与える潜在的要素である言語能力を発見することができます)。因子分析に関して、詳しく知りたいは、次の記事「因子分析とは?」をご覧ください。