主成分分析

トップページ研究分野と周辺システムの評価

二つの変量x、yを持つサンプルデータ(点)が多数あるとする。例えば、x軸が国語の点数、y軸が数学の点数で、点は一人の生徒を表す場合等である。
一人一人の違いを見るとき、黄色の矢印の国語の側から見るのと(国語の点数を比較する)、赤色の矢印の数学の側から見る事が出来る。
二つの方向から眺めて違いを分析するのも良いが、もし生徒の散らばり方に最も沿った、青矢印の方向から見たら、一人一人の違い(各点の離れ方)は一目で、最も大きく見えるだろう。
主成分分析は、この様な線を引く。それは座標軸の回転と考える事も出来る。

二つの変量(三つ以上の場合もある)を合成して、一つの量を作る。主成分分析は「合成の分析」とも呼ばれる。
ここでは、二次元のデータを一次元で見ようとするのだから、次元は減る事になる。
各点は、新たに引かれた座標軸上での原点からの距離を持つ事になる。一つの点だけに注目すると、以下のようになる。

ここで、青い線が新しい座標軸とする。元のx軸とは角度θだけ回転している。この点の元の座標はx1、y1とする。
この点は新しい座標軸に乗ってはいないが、新しい座標軸の上での(x軸に相当する)座標を求める。新しい青線の座標軸と平行で、その点を通る線を引く。
また、a=cosθ、b=sinθとおく。すると、平行線によって二つの緑の角は等しい事が分かり、三角形の内角の和が180度である事から、青の角度はθである事が分かる。
従って、黄色の距離はby1である事が分かる。同様に、赤色の距離はax1である事が分かる。
結局、この点の新たな座標軸での座標は、ax1+by1である事が確かめられた。

点がn個あるとき、n個の新たな座標が求められる。原点を通る新たな座標軸を適当に一本引けば、上記のようなn個の座標が求められる。これは、新たな座標軸と元のx軸との角度θによって様々な値になる。
主成分分析では、新たな座標軸における各点の座標が最もばらけるように(違いが分かるように)、新たな座標軸を引きたいのだった。
そこで、各点の座標値の分散が最も大きくなるように新たな座標軸を引く事を計算で求める。

まず、元の座標でデータの中心化を行う。中心化は、其々の軸の平均値に原点を移動する。元の座標の双方の平均値の座標が赤い×印だとすると、以下のように変化させる。
分散は、各データの値から全データの平均値を引いた値(偏)差の自乗の総和をデータの個数で割ったものである。
従って、中心化させる事で各データの値がそのまま偏差となって計算が簡単になる。
中心化後の座標を使って、上記の三角関数を使った回転後の座標を求める。

偏差の自乗を取るのは、原点を挟んでプラスとマイナスがあるので、相殺されるのを防ぐためである。
或る点k(中心化後の座標をx_k、y_kとする)の原点からの距離をD_kとすると、D_k=ax_k+by_kとなる。その自乗は以下のようになる。

分散を求めるのだから、データの数だけこの自乗の和を求めてデータの個数(n)で割る。以下のように展開されるが、a^2、b^2、a、bは定数なので括り出した。

上記のような括り出しが出来る事を、一番左の項を例に取り、以下に示す。

(1)式のa、b以外の所は其々、回転前の座標軸でのx座標の分散(中心化後なので平均0の分散)、y座標の分散、x座標y座標の共分散となっている。これを以下のように置く。

Sの部分は与えられたデータからは不変だが、この式の値を最大化するようなa、bを求めたいのだった。
また、a=cosθ、b=sinθから、a^2+b^2=1の制約もある。
この制約の中で、最大値を求めるために、ラグランジュの未定係数法を用いる。この方法によれば、以下のように関数を作り、Gの最大値を与えるa、b、λを求めれば、Fの最大値を与えるa、bも求まる事が分かっている。

これを解くには、Gをa、b、λで其々偏微分して、=0と置いた連立方程式を作る。

偏微分した式を纏めると、以下のようになり、結局、λは分散共分散行列の固有値、(a、b)はその固有ベクトルになっているのでそれを求めればよい(「固有値、固有ベクトル」)。
固有ベクトルは通常、a、bの比しか求められないが、ここではa^2+b^2=1の制約があるので、各固有値に対するa、bは一つずつ求まる。

なお、各点の座標値の自乗和が最も大きくなるような軸を求める事は、同時に各点から下ろした垂線の自乗和が最小となる座標軸を求める事でもある。
図から明らかなように、x2軸の方が或る点の座標(緑の距離)を大きくすると同時に、垂線(赤)の長さは短くする。

n次正方行列の固有値は、n個ある。上記の例では2次正方行列だから、固有値は2つあり、対応する固有ベクトルも計2つある。
対称行列の固有ベクトルは互いに直交する。分散共分散行列は対称行列なので、その固有ベクトルは直交する。
固有ベクトル(a、b)が決まれば、a=cosθ、b=sinθから、軸の角度は決まる。2つの固有値のうち、大きい方の固有値の固有ベクトルから得られた軸を第1主成分軸、小さい固有値から同様に由来するのを第2主成分軸と呼ぶ事にする。

第1主成分軸と、第2主成分軸が直交する事は、以下のように確かめられる。大きい固有値の固有ベクトルをa_1=cosθ_1、b_1=sinθ_1、小さい固有値の固有ベクトルをa_2=cosθ_2、b_2=sinθ_2と区別する。
ベクトルが直交するので内積は0となり、(1)と置ける。(2)に変換し、θ_1とθ_2の差をπ/2として三角関数の公式を使うと、確かに内積=0が確かめられる。

ところで、各データの第1主成分軸上の座標(得点)の分散は、第1主成分を作った固有値に等しい(第2主成分の得点の分散は2番目の固有値に等しい)。
この事は以下のように確かめられる。主成分得点の分散を最大化するa、b、λはラグランジュの未定係数法により、(1)(2)のように求められた。(1)×a+(2)×bと置くと、これも=0となる。
これを整理して、a^2+b^2=1の条件を使うと(3)となり、この左辺は最大化を目指した主成分得点の分散に他ならない。

各固有値の大きさが、その軸の主成分得点の分散の大きさを表す。それが大きいほど、全体のデータの特徴を、一方向からよく眺められる事になり、主成分分析の目的に合致する。
固有値は、n次元のデータならばn個なので、大きい順にλ1≧λ2≧・・・≧λnと並べる。
λk(1≦k≦n)のλの総和に占める以下の比率を「寄与率」という。また、例えばλ1~λ3までの寄与率の合計を、λ3までの累積寄与率という。
主成分分析は、多次元で行う場合、累積寄与率が80%などの十分な一定の数値を超えたら打ち切る場合も多い。寄与率は、その主成分軸が全体のデータをどの程度説明しているかを表す指標と考えられる。

以上は、分かりやすい2次の場合で説明したが、主成分分析(多変量解析の一種)は、もっと多い数のn次元で行われる場合が多い。
例えば4次元ならば、分散共分散行列は4次正方行列、固有値は4つ、固有ベクトルは(a、b、c、d)のような形となる。
元データがx軸、y軸、z軸、w軸の4次元に散らばり、或る主成分軸を作るベクトルが(a、b、c、d)であるとき、或る点nの主成分得点は、S=ax_n+by_n+cz_n+dw_nと求められる事になる。