主成分分析
Principal Component Analysis
(PCA)
pp.35~49
◎主成分分析は 条件付 の 最大 最小問題 問題:
観測データにおける 分散が最大の軸 を求める 条件:
軸同士が直交 p次元の軸の長さ=1
主成分分析(前回のポイント)
Z1
Z2
新しい軸
新しい軸 重心
主成分分析の問題 固有値問題
主成分分析(今回のポイント1)
2次元からP次元へ拡張
◎ベクトルZの
分散 を最大にする
問題主成分分析 (2次元の場合)
Z Z'
ZZ n
S 1
下の
制約条件
が常に付いているラグランジュの未定乗数法
を使って、問題を解く関数:) 1
1 (
Z'Z
l'l v nとなる で表現すると
ベクトル
から
1 1 sin
; cos
2 1
2 2 2 1 2
1
l l
l '
l l
l l l
l
主成分分析(数式で表す)
) 1 1 (
Z'Z l'l v n
) 1 (
) 1 1 (
) 1 ( ) 1(
分散共分散行列
ここで、Σ XX
l l Σl l l l Xl X l l l (Xl Xl)
'
' ' ' ' ' '
'
n
n v n
にZ=Xlを代入して
ベクトルlについて偏微分して、0とおくと 0 l E Σ l Σl 0 l
l Σl
v vl 2 2 ( )
→対称行列
行列
の固有値を求める問題と同じ!!!
主成分分析の計算を行ってみよう
2個の変数
n個のケース 各変数の観 測データ
x y 1
2 : : n
x
nx x
2 1
y
ny y
2 1
分散が最大の軸を探す
2 1
90 75
70 60
80 65
75 70
85 50
l Xl l
Z
Z1
x1 x2
主成分分析の計算
2次分散共分散行列を求める
2 1
90 75
70 60
80 65
75 70
85 50
l Xl l
Z
50 10
10 74 Syy Sxy
Sxy Σ Sxx
y
x, の分散共分散行列 ベクトル
平均値は: 64
、
80
90 75
70 60
80 65
75 70
85 50
y x行列で分散共分散行列を書く (復習)
yy xy
xy
Σ
xxy y x y x
y x B x
B Σ
y y x x B y x A
s s
s s
n n
T
1
1
ここは2個のベクトルの例 各ベクトルのデータ数はnとする
列ベクトルと行列の表現で一括で計算できる
実対称 行列
行列で分散共分散行列を書く (復習)
zz yz xz
yz yy xy
xz xy xx
Σ
z z y y x x z z
y y
x x B B Σ
z z y y x x B z y x A
s s s
s s s
s s s
n n
T
1
1
ここは3個のベクトルの例 各ベクトルのデータ数はnとする 一般的に
p
個のベクトルまで拡張できる列ベクトルと行列の表現で一括で計算できる
データ形式(P次元の場合)
X
1X
2・・・ X
p1 x
11x
21・・・ x
p12 x
12x
22・・・ x
p2・・・ ・・・
n x
1nx
2n・・・ x
pn p個の変数n個のケース 各変数に関する各ケース の観測データ
P変量データからの主成分(主軸)
p pp p
p p
p p
p p
x l x l x l z
x l x l x l z
x l x l x l z
2 2 1 1
2 2 22 1 21 2
1 2 12 1 11 1
条件:
j i p j i
l l l
p
k jk ik p
i ij
; , , 1 ,
, 0 , 1
1 1
2
単位軸同士が直交 分散が最大
0
1 ,
, 1 1 2 2 1 2
2 22 21
2
1 12 11
1
l l
l l l l l l l
l
軸同士直交:
単位ベクトル:
p
p l
l l
l l l
行列で分散共分散行列を書く (復習)
p p
s s
s
s s
s
s s
s n
n p p
p p T
p p p
x x x
x x x
x x x
x x x
x x x
x x x
Σ
x x x x x x x x
x x
x x B B Σ
x x x x x x B x x x A
2 1
2 2
2 2 1
1 2
1 1 1
1 ...
1
...
...
2 2 1 1 2 2
1 1
2 2 1 1 2
1
p
個のベクトルの場合
各ベクトルのデータ数はnとする
列ベクトルの表現で
行列で平均を求める (復習)
を平均ベクトル(mean vector)と呼ぶ
n
i pi n
i i n
i i
p
x
n n x n x
1 1
2 1
1
2 1
1 : 1 1
, :
p 2 1
p 2 1
x : x x X
μ x
: x x X
X μ x ) E (
•変数がp個、個体がn個の場合
教科書の中の求め方は(行ベクトル)
行列で分散共分散行列を求める (復習)
p
p x
x x x
x x μ X x
: x x X
p 2 1
2 2
1 1
•変数がp個、個体がn個の場合、教科書の中の求め方は
Σ
x x x x x x x x
x x
x x μ X μ X S X
x x x x x x
x x x x x x
x x x x x x
p p p p
p p
s s s
s s
s
s s s
n
V n p p
p p
2 1
2 2 2 2 1
1 2 1 1 1
1 ...
) )(
1( )
( 2 2 1 1 2 2
1 1 '
行ベクトルの表現で
分散共分散行列の固有値を求めよう
個の固有値が得られる
つまり
より
p 0 ...
: : : :
...
...
0 (
...
: : : :
...
...
2 1
2 22
21
1 12
11
2 1
2 22 21
1 12 11
pp p
p
p p pp p
p
p p
S S
S
S S
S
S S
S
S S
S
S S S
S S S
E Σ 0 E)l Σ l
Σl Σ
•変数がp個、個体がn個の場合
対称行列です!
固有値 の固有ベクトルを求めよう
pi ki
kp pp k
p k p
kp p k
k
kp p k
k
pp p p
p p
k
k k
l
l a l
a l a
l a l
a l a
l a l
a l a
a a a
a a a
a a a
p k
1 2
2 2 1 1
2 2 22 1 21
1 2 12 1 11
2 1
2 22 21
1 12 11
1
0 ...
: : : :
0 ...
0 ...
...
: : : :
...
...
)
) , 2 , 1 ( (
とすると
より
E (Σ A
0 E)l Σ l Σl
k←制約条件
主成分分析(今回のポイント2)
◎
固有値 分散
固有ベクトル 主軸
) ( )
( )
( Z
1V Z
2V Z
qV
第1主成分(第
1主軸)は最大の分散
V(Z1) 第2主成分(第2主軸)は次に大きい分散V(Z2)・・・
軸と軸が直交しながら求められる
の表示もある 注:教科書によってVar(Zi)
◎主成分得点
◎固有値 → 寄与率、累積寄与率
分散の最大値と固有値の関係
) 1 (
,
) 1 ( ) 1 (
) 1 1 (
分散共分散行列
ここで、
X X Σ
Xl Z
l l Σl l
l l (Xl Xl) l
l Z Z
' ' '
' '
' '
n
n v n
ラグランジュの未定乗数法を使って、
主成分分析の問題を解く関数:
分散の最大値と固有値の関係
のことを証明しなさい
Z
'Z
ZZ
n
S 1
タイトル「演習レポート」、日付、学生番号、氏名を書く
1 ,
,
Xl Σl l l l
Z
'ヒント:
) 1 X X ( 分散共分散行列
Σ
' n
固有値分散
下の図を見ると 軸の方が 重要に思える どちらが重要かを統計的に表すのが固有値である
Z1
Z2
この幅が狭い
この幅が広い
分散の大きい軸 の方が重要 Z1
分散=固有値
固有値の大きい方が重要
分散最大 固有値最大
Z2
主成分(主軸)の求め方 (教科書p.36)
一般的にq < p
q
Z
qV Z
V Z V
2 1
2
1
) ( ) ( )
(
第1主成分(主軸)は最大の分散→ 固有値が1番大きい 第2主成分は次に大きい分散 → 固有値が2番大きい
・・・
軸と軸が直交しながら求められる
p mp m
m
m
l x l x l x
z
m 主成分:
1 1
2 2 第
) , , 2 , 1 ( , 1
1
2 m
l
p
k
k
また、 の条件を満足する
2次元の主成分分析の結果例(主成分)
94 . 0
34 . 0 34 . 0
94 . 0
38 . 46 )
( 2
62 . 77 )
( 1
22 21 2 2
12 11 1 1
2 2
1 1
l l l l Z
Z
l l の固有ベクトル:
の固有ベクトル:
最小の固有値:
主成分 第
最大の固有値:
主成分 第
y x Z
y x Z
y l x l Z y
l x l Z
94 . 0 34 . 0
; 34 . 0 94 . 0
2
;
2 1
22 21 2 12
11 1
この例ならば
主成分 第 第1主成分
主成分分析の計算(主軸同士直交)
94 . 0
34 . 0 34 . 0
94 . 0
38 . 46 )
( 2
62 . 77 )
( 1
2
22 21 2 2
12 11 1 1
2 2
1 1
l l l l Z
Z p
l l の固有ベクトル:
の固有ベクトル:
最小の固有値:
主成分 第
最大の固有値:
主成分 第
次元場合:
演習問題:
ベクトル
l1と
l2を直交すること証明しなさい
固有値と寄与率(proportion)
固有値の総数=行列
トレース
i
z
iV ( )
) (
1
tr Σ
p
i i
j番目主成分の寄与率=
) ( 100 100
2
1 tr Σ
j p
j
→ 各データの塊の分散が固有値と一致ので 新しいZi軸が、どの程度データに対する 寄与しているかの割合は、固有値の総数が判明 していれば計算することが可能
固有値と寄与率の計算例
124 50 74 )
(
50 10
10 74
Syy Sxx tr
Syy Sxy
Sxy Sxx
S S
S X
固有値の総数)は のトレース(
の分散共分散行列 データ行列
% 6 . 124 62
62 . 77 100 100 1 100
38 . 46 62 . 77
2 1
1 1
2 1
yy
xx S
S 主成分の寄与率 第
、 固有値:
この値は新しい軸の元で計測データに対する説明率に相当
累積寄与率
(accumulated proportion)
固有値の値が大きいほど、主成分の説明力は高くなる
j
番目主成分の寄与率
=p j
2 1
100
1番目主成分からj番目主成分までの固有値の合計を
累積寄与率
という分散共分散行列のとき
j番目まで主成分の累積寄与率=
p j
2 1
2
100 1
寄与率・累積寄与率の練習
94 . 0
34 . 0 34 . 0
94 . 0
38 . 46 )
( 2
62 . 77 )
( 1
22 21 2 2
12 11 1 1
2 2
1 1
l l l
l l l Z
Z
の固有ベクトル:
の固有ベクトル:
最小の固有値:
主成分 第
最大の固有値:
主成分 第
第2主成分の寄与率、2番目まで累積寄与率 をそれぞれ計算してください
主成分を何個まで考えれば十分か
変数が沢山ある時、主成分の数をいくつまで取るかが問題になる 主成分の数の決め方にこれといった方法はない
目安として次のようなものがあげられる
累積寄与率が、ある程度(例えば:80%)以上大きくなる
累積寄与率が第1主成分で 90%以上ある 元々高次元のデータは一次元に縮約 できそう
累積寄与率が大きくならない サンプルデータの収集方法や表現す る変数に問題がある
用いているデータ、変数を変更するや、
2つに分けて主成分分析を行う
- MAセミナ-
29
情報の縮約
(寄与率が小さい主成分を捨てる)主成分 1 2 3 4 5
固有値 177.3739 48.48755 16.09258 11.39074 9.596468 寄与率 67.46% 18.44% 6.12% 4.33% 3.65%
累積寄与率 67.46% 85.90% 92.02% 96.35% 100.00%
寄与率,累積寄与率,固有値,
スクリープロット,解釈
急坂からなだらかに変わる前までを採用
固有値
0 20 40 60 80 100 120 140 160 180 200
1 2 3 4 5
元々5次元空間内のデータ は2次元空間に縮約し表現
→ 部分空間
演習課題
ある分散共分散行列を解いて、固有値
を得る。
(1)各成分の寄与率、4番目まで累積寄与率をそれぞ れ計算しなさい。
(2)累積寄与率が90%以上あることを基準とすれば、
取り上げる主成分の数を決めなさい。
、
、
、
、 16.65 3.88 1.00 46
.
50 2 3 4
1
タイトル「演習レポート」、日付、学生番号、氏名を書く
主成分得点
y x
Z y x
Z
1 0 . 94 0 . 34 ;
2 0 . 34 0 . 94
第一主成分
第二主成分
第一主成分得点
重心
90 75
70 60
80 65
75 70
85 50 y x
46 . 11 ) 80 85 ( 34 . 0 ) 64 50 ( 94 . 0
1 ) 85 , 50 (
1
z
主成分得点は の第
点
演習問題:点(60,70)の第1、第2の主成分得点は?
80
64
y
x ;
平均:
重心(×)からの距離 なので
必ず平均値を引く
主成分分析の例
(データの単位が同じの場合)
Z1
第一主成分
第二主成分 第一主成分得点 重心
Z2
新しい軸
新しい軸 数
学 英 語
合 計
順 位
A 2 3 5 7
B 1 4 5 7
C 2 2 4 10
D 3 2 5 7
E 5 4 9 3
F 4 4 8 6
G 8 5 13 1
H 6 3 9 3
I 7 6 13 1
J 4 5 9 3
2 1
2
2 1
1
9215 . 0 3884 . 0
3884 . 0 9215 . 0
x x
z
x x
z
求められた主成分:
第1主成分得点:
第2主成分得点:
必ず平均値を引く
主成分得点での順位
主成分分析での順位と単純集計を比べると下図のようになり単純 集計より正確になっているように思える
順位
単純集計 第1主成分得点
A 7 8
B 7 10
C 10 9
D 7 7
E 3 4
F 6 6
G 1 1
H 3 3
I 1 2
J 3 5
主成分得点
第1 第2
A -2.3380 0.1173
B -2.8711 1.4272
C -2.7264 -0.8042
D -1.8049 -1.1926
E 0.8149 -0.1264
F -0.1066 0.2620
G 3.9678 -0.3701
H 1.3480 -1.4363
I 3.4347 0.9398
J 0.2818 1.1835
異なる順位 同順位
下記の表に基づいて、以下の問題を答えなさい。
No 標本 英語(x1) 数学(x2)
1 A 5 8
2 B 5 5
3 C 7 4
4 D 8 5
(1)x1とx2の平均値を求めなさい。
(2)x1とx2の分散と共分散を求める定義式を書き、分散共分散行列Sを求めなさい。
(3)分散共分散行列Sの固有値を求める定義式を書き、固有値を求めなさい。
(4)第1主成分として採用する固有値を書き、選定理由を述べなさい。
(5)第1主成分として採用された固有値の固有ベクトルを求める定義式を書き、
固有ベクトルを求めなさい。
(6)寄与率を求める定義式を書き、第1主成分の寄与率を計算しなさい。
(7)第1主成分の固有ベクトルと第2主成分の固有ベクトルの内積の値を書き、
その理由を述べなさい。
主成分分析の宿題2:
Excelによる主成分分析
手順1:データの入力(AVERAGE)
手順2:変数ごとの平均値と標準偏差の算出(STDEV) 手順3:変数ごとにデータの標準化(STANDARDIZE)
手順4:分析ツールで相関行列の算出 手順5:固有値・固有ベクトルの算出 手順6:累積寄与率と因子負荷量の算出 手順7:主成分スコアの算出(MMULT)
注:「関数の挿入fx」→関数の分類(c)から「統計」を選択
主成分分析より画像処理例:固有顔
各画像を画素の値を並べたベクトルとして表現
• 画像サイズ64×64画素を特徴ベクトル(4096次元)とする
N枚の画像集合から共分散行列(4096×4096)を作る
主成分分析して得られる固有ベクトル → 固有顔
=固有顔
観測データ 画像集合
=N枚
固有顔(=固有ベクトル)
First three eigenfaces : 3個で90%ぐらいの 累積寄与率になる
2次元まで圧縮した結果 3次元以上の情報を捨てる
38