主成分分析 - net-machine.netkato/seitogaku-h21/pdf/t-kato-waseda2009b.pdf · 主成分分析...
TRANSCRIPT
主成分分析
加藤 毅
November 10, 2009
Contents
1 導入 1
2 低次元空間への射影 42.1 命題 2.1の証明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2 命題 2.2の証明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3 演習 2.1の解答 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4 演習 2.2の解答 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 積率行列による主成分分析 93.1 演習 3.2の解答 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.2 演習 3.3の解答 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 共分散行列による主成分分析 134.1 演習 4.1の解答 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5 相関行列による主成分分析 17
6 固有値分解 206.1 固有値と固有ベクトル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206.2 命題 6.1の証明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206.3 命題 6.3の証明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7 主成分分析算法の最適性 237.1 命題 7.1の証明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237.2 命題 7.3の証明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257.3 証明 7.4の証明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
List of Tables
1 講義アンケート. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
List of Links
1 導入
多次元のデータの分布を知りたいとする.1次元の場合,ヒストグラムにしたり,2次元の場合,データ点をプロットしたりして視覚的に分布を俯瞰することができる.しかし,3次元以上のデータを紙面上にプロットすることは難しい.そこで必要になってくるのがデータの可視化技術である.データを可視化するための一つの方法として次元削減がある.主成分分析は,次元圧縮技術の一つで,データ点を1次元直線,もしくは2次元平面に射影する.射影されたデータ点の像の分布をみればおおよそのデータの分布を視覚的に把握することができる.
1
加藤 毅 : 主成分分析 2
Table 1: 講義アンケート.
番号 x1 x2 x3 x4 x5
1 2 3 5 4 42 3 3 3 4 43 1 2 4 4 44 1 3 5 3 45 2 2 5 5 56 4 1 5 4 47 2 4 4 4 48 4 3 4 3 39 2 1 2 3 310 5 1 2 4 311 2 2 5 5 412 4 3 5 4 513 2 4 5 4 414 4 3 5 5 415 2 2 5 3 316 2 1 4 5 517 2 2 4 4 4
例をみてみよう.表 1では,某大学で平成21年に生命情報学演習という講義を行ったときに,履修生に答えてもらったアンケート結果を示している.アンケートでは,5 つの質問を行った.
• x1 =履修の際,シラバスは参考にしたか,
• x2 =予習復習はしたか,
• x3 =パワポの文字や図表は見やすかったか,
• x4 =教員の説明は分かりやすかったか
• x5 =授業に対する満足度,
次の表はこのデータを主成分分析 (正確には「共分散行列による主成分分析」)によって2次元に圧縮した結果である:
番号 第1主成分 第2主成分1 1.116 0.1002 -0.694 0.0213 0.692 -1.4444 1.631 -0.9325 1.033 0.1986 -0.982 0.9787 0.954 0.0108 -1.061 0.7909 -1.909 -2.29810 -3.649 0.28911 0.776 0.01512 0.149 1.83713 1.553 0.43814 -0.011 1.90915 0.325 -0.67616 -0.003 -0.56817 0.080 -0.667
加藤 毅 : 主成分分析 3
これを2次元平面上にプロットしたのが次の図である:
-4
-2
0
2
4
-4 -2 0 2 4
z1
z2 0102
03
04
05
06
07
08
09
1011
12
13
14
15
16
17
この図から様々な憶測ができる.この講義の受講者は,生物,化学,情報科学,物理,数学と多岐にわたっていた.だいたい研究室が同じか,専攻が同じな学生同士が近くの席に座って,相談しながら演習などをこなしていた.なので,知り合い同士はだいたい行動や感想を共有していたように思える.表 1にある一つ一つのレコードには番号がついているが,これは提出されたアンケート用紙の順番どおりになっている.アンケート調査中は教室外に出ていたので確かなことはいえないが,アンケート用紙がシャッフルされていないと仮定すると,研究室や専攻が同じ学生どうしが同時に提出して研究室に戻って行ったと予想できる.その学生らは行動や感想を共有しているので,同じようなアンケート結果を書いている可能性が高い.特に上の図で 15, 16, 17の点が重なっているのはそのためではないか?これは著者の根拠の薄い憶測にすぎない.しかし,主成分分析は,このようにデータ間の関係を図示する手段として使うことができることは確かである.
加藤 毅 : 主成分分析 4
2 低次元空間への射影
データの次元数を d とする.これを m次元線形部分空間に射影するとする.たとえば,m = 1の場合,線形部分空間は1次元直線となり,m = 2の場合,2次元平面となる.前節で示した表1の例では d = 5 で,これをm = 2次元に圧縮したものが前節の図に示したものであった.線形部分空間は d×m の行列 U ∈ Rd×m で規定でき,
M(U) = {y ∈ Rd | ∃α ∈ Rm s.t. y = Uα}とあらわすことができる.ただし,U = [u1, . . . ,um] に含まれるm個の列ベクトル u1, . . . ,umは基底と呼ばれる.ここでは,各列ベクトルが互いに正規直交であるものに限定する1:
U>U = Im.
つまり,各規定の長さは 1 であり (‖u1‖ = · · · = ‖um‖ = 1),互いに直交している (∀i 6= j ∈ Nm :
u>i uj = 0). 正規直交の定義は定義 6.3 で与える.
命題 2.1. 任意の部分空間上の点 x ∈M(U)に対して,その成分α ∈ Rm は,α = U>x
で与えられる.
では射影の数学的な定義を与える.Rd 上のデータ点 xをM(U)に射影するとは,点 xからの距離が最小になるM(U) 上の点を見つけることである.射影された像は次のように計算できる:
命題 2.2. Rd 上のデータ点 x をM(U)に射影したときの像は
y = UU>x
で与えられ,その成分はα = U>x
で与えられる.
例 2.1. 表 1 のデータのうち,1 番目,6番目,9番目のデータは
x1 =
+2+3+5+4+4
, x6 =
+4+1+5+4+4
, x9 =
+2+1+2+3+3
,
とあらわされる.基底
U =
+0.4472 +0.5+0.4472 −0.5+0.4472 +0.5+0.4472 −0.5+0.4472 0
をもつ部分空間M(U)にこの3つのベクトル x1,x6,x9 を射影したときの成分をそれぞれ求めよ.
各データの成分は
U>x1 =[+8.0498
0
], U>x6 =
[+8.0498
+2
], U>x9 =
[+4.9193
0
],
と計算される.これをプロットすると次の図のようになる:1基底が正規直交でなくても,線形独立でありさえすれば,m 次元の線形部分空間を規定できる.
加藤 毅 : 主成分分析 5
-4
-3
-2
-1
0
1
2
3
4
2 3 4 5 6 7 8 9 10z1
z2 1
6
9
例 2.2. 2次元のデータセット
X = [x1,x2,x3,x4] =[+1 +2 −1 −2+3 +1 0 −4
]
が所与とする.基底を
u =[+0.6+0.8
]
に持つ1次元の線形部分空間M(u)を考える.各点 x1, x2, x3, x4 をM(u)に射影した時の像とその成分を計算せよ.
各データ点の成分は
u>x1 = +3, u>x2 = +2, u>x3 = −0.6, u>x4 = −4.4
と計算される.
-5 -4 -3 -2 -1 0 1 2 3 4
これより,像は
uu>x1 =[+0.6+0.8
](+3) =
[+1.8+2.4
], uu>x2 =
[+0.6+0.8
](+2) =
[+1.2+1.6
],
uu>x3 =[+0.6+0.8
](−0.6) =
[−0.36−0.48
], uu>x4 =
[+0.6+0.8
](−4.4) =
[−2.64−3.52
],
と計算される.
加藤 毅 : 主成分分析 6
-5
0
5
-5 0 5
演習 2.1. 例 2.2 と同じデータセット
X = [x1,x2,x3,x4] =[+1 +2 −1 −2+3 +1 0 −4
]
が所与とする.基底を
u =[−0.8+0.6
]
に持つ1次元の線形部分空間M(u)を考える.各点 x1, x2, x3, x4 をM(u)に射影した時の像とその成分を計算せよ.
例 2.2 で得られた射影の結果と演習 2.1 で得られた射影の結果は,基底が異なるだけでまったく異なった像が得られている.では,データの分布を把握する上でどのような部分空間がよりよいものといえるだろうか.部分空間の良さを比較するための指標として,平均再構築誤差という概念を導入する.
定義 2.1. d 次元のデータセットX = [x1, . . . ,x`] が所与とする.このとき,部分空間M(U) の平均再構築誤差をデータ点と像との平均二乗距離で定義する:
Erecon(U ; X) ≡ 1`
∑̀
i=1
‖xi −UU>xi‖2
平均再構築誤差が小さいほど,小さい情報損失でデータを低次元空間に射影したことを意味する.
演習 2.2. 例 2.2 と同じデータセット
X = [x1,x2,x3,x4] =[+1 +2 −1 −2+3 +1 0 −4
]
が所与とする.2つの部分空間,
M([
+0.6+0.8
])
および
M([−0.8
+0.6
])
に対する平均再構築誤差をそれぞれ計算せよ.
加藤 毅 : 主成分分析 7
2.1 命題 2.1の証明
成分 α とはx = Uα
を満たすベクトルである.正規直交行列の定義より,
U>U = Im
が成り立つ.これより,x = Uα の両辺に左から U> をかけると,
α = U>x
を得る.
2.2 命題 2.2の証明
点 xから集合への射影とは集合の中で最も xに近い点である.すなわち
‖x− y‖2
を最小にする y ∈M(X) である.yは部分空間M(X)の元なので,
y = Uα
を満たす α ∈ Rm が存在する.二乗誤差は,この αを使うと
J(α) = ‖x−Uα‖2
とあらわされる.これを最小にする αを求めるために導関数を求めると
∂J
∂α= 2U> (Uα− x)
を得る.これを 0m とおくと,α = U>x
を得る.よって,像はy = Uα = UU>x
とあらわされる.
2.3 演習 2.1の解答
各データ点の成分は
U>x1 =[−0.8 +0.6
] [+1+3
]= +1,
U>x2 =[−0.8 +0.6
] [+2+1
]= −1,
U>x3 =[−0.8 +0.6
] [−10
]= +0.8,
U>x4 =[−0.8 +0.6
] [−2−4
]= −0.8
と計算される.
-1 -0.5 0 0.5 1
加藤 毅 : 主成分分析 8
像は
UU>x1 =[−0.8+0.6
] [+1]
=[−0.8+0.6
],
UU>x2 =[−0.8+0.6
] [−1]
=[+0.8−0.6
],
UU>x3 =[−0.8+0.6
] [+0.8
]=[−0.64+0.48
],
UU>x4 =[−0.8+0.6
] [−0.8]
=[+0.64−0.48
]
と計算される.
-5
0
5
-5 0 5
2.4 演習 2.2の解答
部分空間
M([
+0.6+0.8
])
に対する平均再構築誤差は0.82
と計算される.部分空間
M([−0.8
+0.6
])
に対する平均再構築誤差は8.18
と計算される.
加藤 毅 : 主成分分析 9
3 積率行列による主成分分析
主成分分析は,所与のデータセットから平均再構築誤差が最小になる線形部分空間を探し出し,その部分空間にデータ点を射影する.平均再構築誤差を最小にする基底は次の算法によって計算できる.
算法 3.1 (共分散行列による主成分分析). 1: Input: X = [x1, . . . ,x`] ∈ Rd×`;2: X の標本積率行列M を計算する;3: M のもっとも大きな m 個の固有値(重根を含む)に対応する固有ベクトルv1, . . . ,vm を計算し,それらのベクトルから部分空間の基底を
U = [v1, . . . ,vm]
と定める;4: Output: U ∈ Rd×m : 正規直交行列;
この算法を積率行列による主成分分析と呼ぶ.積率行列による主成分分析では,データ x ∈ Rdの主成分は,算法 4.1 で得られた基底 U ∈ Rd×m から次のようにして得る:
α = U>x.
算法 3.1の中には標本積率行列,固有値,固有ベクトルという用語が含まれている.用語の定義を以下に述べる.なお,算法 3.1の正当性は節 7で示す.
定義 3.1 (標本積率行列). ` 個の d 次元データ x1, . . . ,x` ∈ Rd の標本積率行列は
M =1`XX> =
1`
∑̀
i=1
xix>i
で与えられる.ただし,X = [x1, . . . ,x`].
例 3.1. 例 2.2 で用いたデータセット
X = [x1,x2,x3,x4] =[+1 +2 −1 −2+3 +1 0 −4
]
の標本積率行列は
M =[
+2.5 +3.25+3.25 +6.5
]
で与えられる.
固有値,固有ベクトルは次のように定義される:
定義 3.2. 固有値・固有ベクトル n× n 行列A に対して,スカラー λ ∈ Rは,Av = λv (1)
を満たす,0n ではないベクトル v ∈ Rn が存在するとき,A の固有値と呼び,v を λに対応する固有ベクトルという.
行列の大きさが 3 以上になると残念ながら,行列の固有ベクトルを計算するには特殊な数値計算算法が必要となる.フリーのソフトウェアとしては R や octave という数値計算用ソフトウェアを使用すれば固有ベクトルを計算することができるが,現在 (2009年)の時点では,手軽に計算する手段がない (筆者は知らない).M のもっとも大きな m 個の固有値(重根を含む)に対応する固有ベクトルv1, . . . ,vm から基
底を U = [v1, . . . ,vm] と定める.M(U)は主部分空間と呼ばれる.データ x ∈ Rd の主成分 αに対し,その第 i 要素は αi = v>i x とあらわされる.これを第 i主成分と呼ぶ.
加藤 毅 : 主成分分析 10
例 3.2. 例 2.2 で用いたデータセットの積率行列は2つの固有値
λ1 = 8.3161, λ2 = 0.6839,
をもち,それぞれの固有ベクトルは
v1 =[+0.4878+0.873
], v2 =
[ −0.873+0.4878
]
である.
演習 3.1. 標本積率行列M =[
+2.5 +3.25+3.25 +6.5
]の固有値,固有ベクトルは例 3.2 に与えた.こ
れらの値が定義通りMv1 = λ1v1, Mv2 = λ2v2
を満たしていることを確かめよ.
この演習の解答は省略する.
演習 3.2. 例 2.2 で用いたデータセットの主成分分析を行い,第 1 主成分を数直線上にプロットせよ.また,その平均再構築誤差を求めよ.
演習 3.3. 表 1 のデータの場合,データ行列は
X =
+2 +3 +5 +4 +4+3 +3 +3 +4 +4+1 +2 +4 +4 +4+1 +3 +5 +3 +4+2 +2 +5 +5 +5+4 +1 +5 +4 +4+2 +4 +4 +4 +4+4 +3 +4 +3 +3+2 +1 +2 +3 +3+5 +1 +2 +4 +3+2 +2 +5 +5 +4+4 +3 +5 +4 +5+2 +4 +5 +4 +4+4 +3 +5 +5 +4+2 +2 +5 +3 +3+2 +1 +4 +5 +5+2 +2 +4 +4 +4
>
とあらわされる.このデータの積率行列は
M =
+8 +5.9412 +10.7059 +10.4118 +10.0588+5.9412 +6.4706 +10.3529 +9.3529 +9.3529+10.7059 +10.3529 +18.9412 +17.1176 +17+10.4118 +9.3529 +17.1176 +16.4706 +16.0588+10.0588 +9.3529 +17 +16.0588 +15.9412
と表され,その固有値・固有ベクトルは,
λ1 = 62.846, λ2 = 1.583, λ3 = 0.859, λ4 = 0.420, λ5 = 0.115,
v1 =
+0.3267+0.3013+0.5424+0.5077+0.5005
, v2 =
−0.8663+0.3152+0.3642−0.102+0.0843
, v3 =
+0.3265+0.783+0.0545−0.4205−0.3171
, v4 =
−0.1718+0.4379−0.7487+0.3722+0.2823
, v5 =
−0.0821+0.0704+0.0981+0.6454−0.7497
,
加藤 毅 : 主成分分析 11
と計算される.積率による主成分分析により,次の3つのデータ
x1 =
+2+3+5+4+4
, x6 =
+4+1+5+4+4
, x9 =
+2+1+2+3+3
,
の第 1主成分と第 2主成分を求めて,2次元平面上にプロットせよ.
3.1 演習 3.2の解答
積率行列M の固有値,固有ベクトルは例 3.2ですでに与えた.λ1 > λ2 なので,v1を基底 uとして採用する.各データ点 x1, . . . ,x4 を線形部分空間M(u)に射影して得られる像の成分は
u>x1 =[+0.4878 +0.873
] [+1+3
]= +3.1067,
u>x2 =[+0.4878 +0.873
] [+2+1
]= +1.8486,
u>x3 =[+0.4878 +0.873
] [−10
]= −0.4878,
u>x4 =[+0.4878 +0.873
] [−2−4
]= −4.4674,
と計算される.
-5 -4 -3 -2 -1 0 1 2 3 4
その像は
uu>x1 =[+0.4878+0.873
](+3.1067) =
[+1.5154+2.712
],
uu>x2 =[+0.4878+0.873
](+1.8486) =
[+0.9017+1.6137
],
uu>x3 =[+0.4878+0.873
](−0.4878) =
[ −0.238−0.4258
],
uu>x4 =[+0.4878+0.873
](−4.4674) =
[−2.1792−3.8999
],
と計算される.
加藤 毅 : 主成分分析 12
-5
0
5
-5 0 5
これより,平均再構築誤差
14
4∑
i=1
‖xi − uu>xi‖2 = 0.6839
と求まる.
3.2 演習 3.3の解答
主部分空間の基底は
U =
+0.3267 −0.8663+0.3013 +0.3152+0.5424 +0.3642+0.5077 −0.102+0.5005 +0.0843
となる.各データの主成分は
U>x1 =[+8.3022+0.9638
], U>x6 =
[+8.353−1.3992
], U>x9 =
[+5.0641−0.7418
],
と計算される.これをプロットすると次のようになる:
-4
-3
-2
-1
0
1
2
3
4
2 3 4 5 6 7 8 9 10z1
z2
1
69
加藤 毅 : 主成分分析 13
4 共分散行列による主成分分析
前節では標本積率行列による主成分分析を紹介した.本節では標本分散共分散行列による主成分分析について述べる.例 2.2 で用いたデータセット
X = [x1,x2,x3,x4] =[+1 +2 −1 −2+3 +1 0 −4
]
の標本平均の値は [0, 0]> であった.すなわち,2 次元空間上の原点付近に分布しているデータであった.これが原点から離れた所に分布しているデータの場合,どうなるかみてみよう.各データ点を [+10,−10]> だけ平行移動させたデータセット
X = [x1,x2,x3,x4] =[+11 +12 +9 +8−7 −9 −10 −14
]
を考える.このデータセットの積率行列は
M =[+102.5 −96.75−96.75 +106.5
]
で与えられる.平均再構築誤差最小となる線形部分空間を求めるために,固有値・固有ベクトルを求めてみると
λ1 = 201.271, λ2 = 7.7293,
v1 =[−0.7144−0.6998
], v2 =
[+0.6998−0.7144
]
を得る.よって,平均再構築誤差最小となる線形部分空間の基底は
u =[+0.6998−0.7144
]
であり,平均再構築誤差は,Erecon(u ; X) = 7.7293
と求まる.
12 13 14 15 16
-15
-10
-5
5 10 15
加藤 毅 : 主成分分析 14
ここで,平行移動しただけなのに,平均再構築誤差が 0.6893から 7.7293 と一気に増大してしまったことに注意しよう.これは,平行移動によって線形部分空間M(u)の角度が 106.4度も傾いてしまったことによる.そこで,分布の平均位置の影響を受けないようにするには,前処理として,データを中心
化(centerize)する,すなわち,各データ点を標本平均 µ で引いておく:
∀i ∈ N` : x̃i ← xi − µ.すると,x̃1, . . . , x̃` の平均は原点になる.この変換した変量から標本積率行列
Σ =1`
∑̀
i=1
x̃ix̃>i (2)
を求め,その固有ベクトルから基底を構成する.行列Σ は,特に標本分散共分散行列と呼ばれている.標本分散共分散行列のことを単に共分散行列と呼ぶこともある.中心化したデータの標本積率行列から主成分分析することを共分散行列による主成分分析と呼ぶ.そのアルゴリズムをまとめると次のようになる.
算法 4.1 (共分散行列による主成分分析). 1: Input: X = [x1, . . . ,x`] ∈ Rd×`;2: X の標本分散共分散行列 Σを計算する;3: Σ のもっとも大きな m 個の固有値 (重根を含む)に対応する固有ベクトル v1, . . . ,vm を計算し,それらのベクトルから基底を
U = [v1, . . . ,vm]
と定める;4: Output: U ∈ Rd×m : 正規直交行列;
共分散行列による主成分分析では,データ x ∈ Rd の主成分は,算法 4.1 で得られた基底U ∈ Rd×m から次のようにして得る:
α = U>x̃ = U> (x− µ) .
演習 4.1. 表 1 のデータの場合,データ行列は
X =
+2 +3 +5 +4 +4+3 +3 +3 +4 +4+1 +2 +4 +4 +4+1 +3 +5 +3 +4+2 +2 +5 +5 +5+4 +1 +5 +4 +4+2 +4 +4 +4 +4+4 +3 +4 +3 +3+2 +1 +2 +3 +3+5 +1 +2 +4 +3+2 +2 +5 +5 +4+4 +3 +5 +4 +5+2 +4 +5 +4 +4+4 +3 +5 +5 +4+2 +2 +5 +3 +3+2 +1 +4 +5 +5+2 +2 +4 +4 +4
>
とあらわされる.このデータの平均ベクトル µおよび標本分散共分散行列は
µ =
+2.5882+2.3529+4.2353
+4+3.9412
, Σ = M − µµ> =
+1.301 −0.1488 −0.2561 +0.0588 −0.1419−0.1488 +0.9343 +0.3875 −0.0588 +0.0796−0.2561 +0.3875 +1.0035 +0.1765 +0.308+0.0588 −0.0588 +0.1765 +0.4706 +0.2941−0.1419 +0.0796 +0.308 +0.2941 +0.4083
加藤 毅 : 主成分分析 15
と表され,その固有値・固有ベクトルは,
λ1 = 1.708, λ2 = 1.081, λ3 = 0.820, λ4 = 0.395, λ5 = 0.113,
v1 =
−0.612+0.4368+0.5992+0.0967+0.2574
, v2 =
+0.7775+0.3384+0.4278+0.2541+0.1829
, v3 =
+0.0673+0.7049−0.1804−0.5449−0.4113
, v4 =
+0.0854−0.441+0.6456−0.4988−0.3642
, v5 =
+0.0957−0.0582−0.0925−0.6168+0.7736
,
と計算される.共分散行列による主成分分析により,次の3つのデータ
x1 =
+2+3+5+4+4
, x6 =
+4+1+5+4+4
, x9 =
+2+1+2+3+3
,
の第 1主成分と第 2主成分を求めて,2次元平面上にプロットせよ.
4.1 演習 4.1の解答
基底は
U =
−0.612 +0.7775+0.4368 +0.3384+0.5992 +0.4278+0.0967 +0.2541+0.2574 +0.1829
となる.各データから平均を差し引くと
x̃1 = x1 − µ =
−0.5882+0.6471+0.7647
0+0.0588
,
x̃6 = x6 − µ =
+1.4118−1.3529+0.7647
0+0.0588
,
x̃9 = x6 − µ =
−0.5882−1.3529−2.2353−1
−0.9412
,
と計算される.すると,主成分は
U>x̃1 =[
+1.116+0.0996
], U>x̃6 =
[−0.9816+0.9776
], U>x̃9 =
[−1.9093−2.2977
],
計算される.これをプロットすると次のようになる:
加藤 毅 : 主成分分析 16
-4
-3
-2
-1
0
1
2
3
4
-4 -3 -2 -1 0 1 2 3 4z1
z2
1
6
9
加藤 毅 : 主成分分析 17
5 相関行列による主成分分析
本節では,相関行列による主成分分析について述べる.主成分分析は,単位の影響を受ける.例をみてみよう.次の図は,平成 20年度学校保健調査
結果のうち,5歳男子の身長と体重のデータをプロットしたものである:
0
10
20
30
40
90 100 110 120 130Height [cm]
Wei
ght [
kg]
斜めの直線は m = 1 としたときの主成分の空間を表すアファイン空間を表している.標本平均µ,および標本分散共分散行列Σは
µ =[+110.683+19.0845
], Σ =
[+22.1364 +9.2595+9.2595 +7.1856
]
である.Σの固有値と固有ベクトルは
λ1 = +26.5614, λ2 = +2.7605,
v1 =[+0.9023+0.4312
], v2 =
[+0.4312−0.9023
]
と計算される.よって,データ x ∈ Rd の主成分を求める式は
α =[
0.9023+0.4312
]>(x− µ)
となる.これをみると,身長は体重の 2倍くらい主成分に含まれることが分かる.このデータは身長はセンチメートルで計算した場合だが,メートルでプロットすると次の図に
なる:
加藤 毅 : 主成分分析 18
0
10
20
30
40
-20 -10 0 10 20Height [m]
Wei
ght [
kg]
標本平均 µ,および標本分散共分散行列Σは
µ =[
+1.1068+19.0845
], Σ =
[+0.0022 +0.0926+0.0926 +7.1856
]
である.Σの固有値と固有ベクトルは
λ1 = +7.1868, λ2 = +0.001,
v1 =[+0.0129+0.9999
], v2 =
[−0.9999+0.0129
]
と計算される.よって,データ x ∈ Rd の主成分を求める式は
α =[+0.0129+0.9999
]>(x− µ)
となる.すると,身長は体重と比べてほとんど主成分に含まれないようにみえる.このようにデータの単位を変えただけで主成分分析の結果が大きく変わってしまう.単位の影響を軽減するため,しばしば標準化と呼ばれる前処理がおこなわれる.データセッ
トを
X = [x1, . . . ,x`] =
x1,1 · · · x1,`
.... . .
...xd,1 · · · xd,`
とおくと,第 j 次元の標本分散は
σ2j ≡
1`
∑̀
i=1
(xj,i − µj)2
で与えられる.データの標準化は
∀i ∈ N`, ∀j ∈ Nd : x̄j,i ← xj,i − µjσj
によって行われる.標準化されたデータの行列表現を
X̄ = [x̄1, . . . , x̄`] =
x̄1,1 · · · x̄1,`
.... . .
...x̄d,1 · · · x̄d,`
加藤 毅 : 主成分分析 19
とおく.標準化されたデータの標本積率行列
R =1`
∑̀
i=1
x̄ix̄>i
は標本相関行列と呼ばれる.標準化したデータの標本積率行列から主成分分析することを相関行列による主成分分析と呼ぶ.そのアルゴリズムをまとめると次のようになる.
算法 5.1 (相関行列による主成分分析). 1: Input: X = [x1, . . . ,x`] ∈ Rd×`;2: X の標本相関行列 Rを計算する;3: R のもっとも大きな m 個の固有値 (重根を含む)に対応する固有ベクトル v1, . . . ,vm を計算し,それらのベクトルから
U = [v1, . . . ,vm]
と定める;4: Output: U ∈ Rd×m : 正規直交行列;
共分散行列による主成分分析では,データ x ∈ Rd の主成分は,算法 5.1 で得られた基底U ∈ Rd×m から次のようにして得る:
α = U>x̄
加藤 毅 : 主成分分析 20
6 固有値分解
主成分分析は,標本積率行列が必ず固有値分解できることが前提になっている.固有値分解できなれば,算法は成り立たない.本節では,あらゆる対称行列が固有値分解できることを示す.
6.1 固有値と固有ベクトル
定義 6.1. (対角行列) A を n× n の正方行列とする.非対角要素が 0 のとき,A を対角行列であるという.
定義 6.2. (直交行列) A を m× n の行列とする.a1, . . . ,an ∈ Rm をA の列ベクトルとする:
A = [a1, . . . ,an] .
これらの列ベクトルが∀i 6= j ∈ Nn : 〈ai,aj〉 = 0
を満たすとき,A は直交行列であるという.
定義 6.3. (正規直交行列) A を m × n の行列とする.a1, . . . ,an ∈ Rm を A の列ベクトルとする:
A = [a1, . . . ,an] .
これらの列ベクトルが∀i, ∀j ∈ Nn : 〈ai,aj〉 = δi,j
を満たすとき,A は正規直交行列であるという.ただし,δi,j はクロネッカのデルタである:
δi,j =
{1 if i = j,
0 if i 6= j.
次の2つの命題で,あらゆる対称行列は必ず固有値と固有ベクトルによって分解できることを示す.
命題 6.1. Aを任意の n×nの対称行列とする.n×nの正規直交行列U = [u1, . . . ,un] ∈ Rn×n,と n× n の対角行列 Λ = diag{λ1, . . . , λn}が存在して,
A =n∑
i=1
λiuiu>i = UΛU> (3)
を満たす.
命題 6.2. 命題 6.1における λ1, . . . , λn および u1, . . . ,un はそれぞれA の固有値,及び対応する固有ベクトルである.
よって,あらゆる対称行列は式 (3)のように分解できる.この分解が固有値分解と呼ぶ.
6.2 命題 6.1の証明
命題 6.1の証明には,任意の対称行列が必ず一つ以上固有値を持つという次の命題を利用する.
命題 6.3. A ∈ Sn とする.n 次元単位ベクトルの集合を S とする:S ≡ {x ∈ Rn | ‖x‖ = 1}. このとき
u>Au = maxx∈S
x>Ax
を満たす uが存在し,A は u>Au を固有値に持つ.また対応する固有ベクトルは u である.
加藤 毅 : 主成分分析 21
数学的帰納法で証明する.n = 1 のときは明らかに成り立つ.いま,あらゆる (n−1)× (n−1)の対称行列に対して,式 (3) のような分解が可能と仮定する.任意の n× n の対称行列 A をとる.命題 6.3により,A は少なくともひとつは固有値を持つことがわかっている.その固有値をλn とおき,対応する固有ベクトルを un とする.グラムシュミットの直交化により,u と直交な正規直行行列 V ∈ Rn×(n−1) が存在する:
[V >
u>n
][V ,un] = In
いかなる (n− 1)× (n− 1)の対称行列に対してもこれを分解する正規直交行列と対角行列が存在するとの仮定していた.よって,行列 V >AV を分解する正規直交行列W および対角行列Dが存在するはず:
∃W ∈ R(n−1)×(n−1), ∃D = diag{λ1, . . . , λn−1} s.t. V >AV = WDW>,
W>W = In−1.
また,この V に関して
u>nAun = λn,
V >Aun = V > (λnun) = 0n−1,
u>nAV =(V >A>un
)>=(V >Aun
)>= 0>n−1,
が成り立つ.正方行列 U と対角行列 Λ を
U ≡ [V ,un][W 0>n−1
0n−1 1
],
Λ ≡ diag{λ1, . . . , λn−1, λn}と定義し,この2つの行列でAを分解できることを示そう.この正方行列 U は正規直交行列であることが次のように示せる:
U>U =(
[V ,un][W 0>n−1
0n−1 1
])>[V ,un]
[W 0>n−1
0n−1 1
]
=[W> 0>n−1
0n−1 1
] [V >
u>
][V ,un]
[W 0>n−1
0n−1 1
]
=[W> 0>n−1
0n−1 1
] [V >V V >uu>V u>u
] [W 0>n−1
0n−1 1
]
=[W> 0>n−1
0n−1 1
] [In−1 0>n−1
0n−1 1
] [W 0>n−1
0n−1 1
]
=[W> 0>n−1
0n−1 1
] [W 0>n−1
0n−1 1
]
=[W>W 0>n−1
0n−1 1
]
= In
また,
UΛU> = [V ,un][W 0>n−1
0n−1 1
] [D 0>n−1
0n−1 λn
] [W> 0>n−1
0n−1 1
] [V >
u>n
]
= [V ,un][WDW> 0>n−1
0n−1 λn
] [V >
u>n
]
= [V ,un][V >AV V >Aunu>nAV u>nAu
] [V >
u>n
]
= [V ,un][V >
u>n
]A [V ,un]
[V >
u>n
]
= InAIn = A
加藤 毅 : 主成分分析 22
となるので,たしかに,A は正規直交行列 U と対角行列 Λ で分解できることが示された.
6.3 命題 6.3の証明
最適化理論において Karash-Kuhn-Tucker (KKT)条件と呼ばれる有名な条件があり,最適性のチェックに頻繁に用いられる.ラグランジュの未定乗数法の根拠も KKT 条件による.連続微分可能な f : Rn 7→ R および c : Rn 7→ Rm に対して,次の最適化問題を考える:
min f(x) wrt x ∈ Rn subj. to c(x) = 0m. (4)
ラグランジュ関数と呼ばれる関数を導入する.ラグランジュ関数は
L(x,λ) = f(x)− λ>c(x)
と定義される.λ ∈ Rm はラグランジュ乗数と呼ばれる.この最適化問題の最適解に対する必要条件は次の命題で与えられる.
命題 6.4. x∗ を最適化問題 (4)の局所解とし,制約条件間で ∇xci(x) は互いに線形独立とする.このとき,
∃λ∗ ∈ Rm s.t. ∇xL(x,λ) = 0n,
c(x) = 0m
が成り立つ.この2つの条件はKKT条件と呼ばれる.
命題 6.3の証明を始める.集合 S はコンパクト集合で,x>Ax は x の連続関数なので,最大値は存在する.最適化問題
min − x>Ax wrt x ∈ Rn subj. to ‖x‖ = 1 (5)
に対するラグランジュ関数は
L(x, λ) = −x>Ax− λ (1− x>x)
とあらわさされる.x に関する導関数は
∇xL(x,λ) = −2Ax+ 2λx
で与えられる.u は最適化問題 (5) の局所解であり,命題 6.4の仮定を満たす.よって,
∇xL(u, λ∗) = 0,
なる λ∗ が存在するので,Au = λ∗u
を満たす.よって,λ∗ はA の固有値であり,対応する固有ベクトルは uとなる.
加藤 毅 : 主成分分析 23
7 主成分分析算法の最適性
節 3では,算法 3.1を平均再構築誤差を最小にする基底を計算する算法として紹介したが,求まった基底が平均再構築誤差を最小にすることに対する根拠は示していなかった.本節ではこれを証明する.まず,本節全体にわたって用いる変数を整理しておく.データ行列は
X = [x1, . . . ,x`] ∈ Rd×`
で表す.X の標本積率行列はM ∈ Sd とし,M ∈ Sd の固有値分解を
M = V ΛV > =d∑
j=1
λjvjv>j
とおく.ただし,λj は第 j 固有値,vj は対応する固有ベクトルで,
λ1 ≥ λ2 ≥ · · · ≥ λdを満たすとする.Λおよび V は,それぞれ,対角行列,および正規直交行列であり,
Λ = diag{λ1, . . . , λd}, V = [v1, . . . ,vd]
を満たす.任意の自然数m,n ∈ Nに対し,m× n の正規直交行列の集合を
Om×n ≡ {A ∈ Rm×n |A>A = In}
と記すことにする.本節の目的は次の命題を証明することである.
命題 7.1. 正規直交行列 Vm ≡ [v1, . . . ,vm] は,次の最適化問題の解の一つである:
min Erecon(U ; X) wrt U ∈ Od×m.
証明は節 7.1で与える.
7.1 命題 7.1の証明
命題 7.1を証明するために,次の命題を用いる:
命題 7.2. 任意の n ∈ Nに対して,
∀A ∈ On×n, AA> = In
が成り立つ.
証明しろ.
命題 7.3. 任意の ∀U ∈ Od×m に対して,
∃!W ∈ Rd×m s.t. U = VW
が成り立つ.このW は正規直交行列である:
W ∈ Od×m.
逆に,任意の正規直交行列 ∀W ∈ Od×m に対して U = VW は正規直交になる.
加藤 毅 : 主成分分析 24
命題 7.4. 任意の ∀U ∈ Od×m に対して,平均再構築誤差はErecon(U ; X) = tr(M)− tr(U>MU)
とあらわされる.
では,命題 7.1の証明を開始する.命題 7.4より,Vmは次の最適化問題の解の一つであることを示せば題意は示されたことになる:
max tr(U>MU) wrt U ∈ Od×m. (6)
命題 7.3を使って,この最適化問題の実行可能解 U を
U = VW
と分解する.正規直交行列 W の各行ベクトルをw>j とおく:
W =
w>1
...w>d
.
そして,各行列ベクトルの二乗ユークリッドノルムを
∀j ∈ Nd : sj ≡ ‖wj‖2
とおく.d次元ベクトル s = [s1, . . . , sd]は
0d ≤ s ≤ 1d,d∑
j=1
sj = m (7)
を満たす.
前者は s ≥ 0d は s の定義より明らかに成り立つ.後者は
d∑
j=1
sj = tr(WW>
)= tr
(W>W
)= tr Im = m
より示される.
すると,最適化問題 (6)の目的関数は
tr(U>MU) = tr(W>V >MVW
)
= tr(W>ΛW
)
=d∑
j=1
λj‖wj‖2
=d∑
j=1
sjλj
と変形できる.固有値は降順に並べてある (i.e. λ1 ≥ · · · ≥ λd)と仮定しているので,式 (7)を満たす範囲で tr(U>MU) を最大にする s は
s1 = · · · = sm = 1, sm+1 = · · · = sd = 0 (8)
で与えられる.このような s を与えるW は無数にあるが,そのひとつは
W =[
ImO(d−m)×m
](9)
である.
加藤 毅 : 主成分分析 25
W を式 (9) のようにおくと,確かにW は正規直交行列であり,
∀j ∈ Nm : sj = ‖wj‖2 = 1, ∀j ∈ Nd \ Nm : sj = ‖wj‖2 = 0
を満たす.
このとき,
U = VW = [v1, . . . ,vm,vm+1, . . . ,vd][
ImO(d−m)×m
]= Vm
となる.
7.2 命題 7.3の証明
U の任意の列ベクトル u に対して,V x = u
を満たすベクトル x ∈ Rd が一意に存在する.∵ 線形系 V >x = u の係数行列 V > はフルランク.
これより,
U = VW
を満たすW ∈ Rd×m が一意に存在することが分かる.
7.3 証明 7.4の証明
Erecon(U ; X) =1`
∑̀
i=1
‖xi −UU>xi‖2
=1`
∑̀
i=1
(xi −UU>xi
)> (xi −UU>xi
)
=1`
∑̀
i=1
x>i xi −2`
∑̀
i=1
x>i UU>xi +
1`
∑̀
i=1
x>i UU>UU>xi
(xi −UU>xi
)>
=1`
∑̀
i=1
x>i xi −1`
∑̀
i=1
x>i UU>xi
= trM − 1`
∑̀
i=1
tr(U>xix>i U
)
= trM − tr(U>MU
)