特異値分解から主成分分析へ

項目の主成分

Xをm n 列の行列として、これをn 次元で測ったm 個のサンプルと捉えることも、
m 次元のサンプルにでたn 種類の測定方法の違いと捉えることもできる。
後者はすこし強引だけど、まあ数学的にはどっちも等価だろう。

ということを踏まえた上で X = UΣV* これをみて、3つある成分の後ろ2つのことを考える。
X* = VΣU* から、
R = VΣ (= X*U) なるR を考える。
これは、回転を表すユニタリ行列である(だからどの列も行も二乗和が1である)Vの列に、
固有値の平方根なる長さを与えたものでもあり、またX*をUで回転させたものでもある、
n m 列になる行列である(例によってn 列よりも左側は0行列だけど)。

V の成り立ちのことを固有値にさかのぼって考えると、
R のひとつの列は、ある固有値λ に対応するv を、固有値の平方根倍したものだとわかる。
v は成分の二乗和が1になるように標準化してあるから、それをX* とおなじスケールになるように
お湯をかけて戻したようなものである。
v ってなんだっけ? それを作用させることで、ひとつの次元をゼロにできるベクトル。
X - λI の成分を、ひとつ低い次元に投影するベクトルである。
そのため、投影された軸にもっとも大きい成分の割合を抽出することができる。
これがX*の回転と等しいという。
するとこれは、X*を、それぞれの次元を表す軸方向に、最大限に沿うように回転させたものということになる。
固有値は大きい順にならんでいたので、Σの対角も大きい順になっている。
するとR の列は左から右へと、その軸を(成分がより大きく抽出されている順で)
表すことになる。

このR を(私は)項目の主成分と呼んでいる。
主成分分析って、かなりたくさんの人が独自に発達させているから、
かならずしも統一がとれてないかもしれない。
私もへんな方言を話すかもしれない。
というか、ふだんはR でなくて PCitem と書くことが多い。
でもこれきっと数学のひとは気に入らないとおもう(1文字じゃないから)。
ここでは便宜的にR と書く。

サンプルの主成分

あるいは項目の主成分よりも、サンプルのほうがわかりがいいかもしれない。
X = UΣV* の3つある成分の前2つのことを考える。
L = UΣ (= XV)
これはつまり、Xを回転させたものである。
(私は)L をサンプルの主成分とよび、 PCsample と書くことが多い。
ふつうはサンプル間の関係を見たいことが多いので、こっちが主成分分析の目標であることが多い。
ただこの二種類の主成分にはそれぞれに関係があることはわかるとおもう;
これらはおなじ固有値に基づくベクトルから算出されたものである。

バイプロット

教科書的にはバイプロットは、固有値の割合を按分して、
UΣ × k とvΣ × (1- k )とで描くものらしい。
0 < k <1 の任意の数で(見栄えを考えながら)。

まあこれを1枚のグラフにすると、それぞれの関係がわかって解釈がラクになる。
私は適当な k を見つけるのが面倒であることと、
いろんな処理の大きさを実験間で比較したいので、そこになんらかの標準を考えたいと思う。
そこでこういう値を使っている。
Lscaled = UΣ/n1/2
Rscaled = VΣ/m1/2
これらはつまり、ひとつひとつのデータがどれくらい平均で散らばっているのかを示すものである。
だいたい同じくらいの値におちるので、R環境とかで作図するときに重ねやすいし、
ほかの測定と比べることができる。

なんか他と違わない?

教科書には主成分分析は、センタリング(項目ごとに平均を引く)ないし標準化をすることが前提、
の書き方をしてあるものがほとんどだと思う。
私が知る限りすべての教科書がそう書いてあった。

私はここではXは適当な配列ってことで説明している。
まあ計算上ではそう。あるいは数学的にはそう。
X = UΣV* のU は XX* の、V はX*X のeigenvector特異ベクトルである。
このときX そのものには制限がない(なんなら複素数でもいい)。

そこらへんの事情を次に。

目次にもどる