主成分分析
2016/07/27
八木貴之
目次
1. 主成分分析
- 主成分分析の目的
- 式の導出
- 実験
2. カーネル主成分分析
- カーネル法とは
- 式の導出
- 実験
1. 主成分分析
主成分分析の目的
多次元データの持つ情報をできるだけ損なうことなく,低次元空間に情報を集約すること
次元のデータをうまくD 次元に変換する手法.M (D ≥ M)
主成分分析の利用用途
次元削減
非可逆データ圧縮
データの可視化
前処理(特徴抽出,無相関化,ノイズ削減)
分散最大化による定式化
射影されたデータ点の分散を最大化しながら,
データを低次元空間上に射影することを目指す.
データ集合 を考える.
ただし,
{ }xn
としn = 1, 2, …, N は次元xn のユークリッド空間中の変数とする.
各データ点を次元
D
から次元D に射影することを考える.M
まず 次元空間1 への射影を考える.
この空間の方向を
(M = 1)
次元ベクトルD として表す.u1
を第 主成分と呼ぶu1 1
興味があるのは で定義される方向であるため,u1 とする.
したがって,各データ点
= 1u
T
1
u1
はスカラー値xn 上に射影される.
このとき,射影されたデータの平均値は
u
T
1
xn
とかける.
(ただし,
u
T
1
x¯
)=x¯
1
N
∑N
n=1
xn
射影されたデータの分散は
であたえられる.
ただし,
{ − = S
1
N
∑N
n=1
u
T
1
xn u
T
1
x¯ }
2
u
T
1
u1
はデータ共分散行列であり次のように定義される.S
S = ( − )( −1
N
∑N
i=1
xn x¯ xn x¯ )
T
分散の最大化
射影後の分散 を制約条件Su
T
1
u1 で最大化する.
ラグランジュ乗数
= 1u
T
1
u1
を導入し,λ1
を制約なしに最大化する.
S + (1 − )u
T
1
u1 λ1 u
T
1
u1
の
S + (1 − )u
T
1
u1 λ1 u
T
1
u1
に関する微分をu1 とおけば,0
という固有方程式が導ける.
この式から,第一主成分は共分散行列
S =u1 λ1 u1
の固有ベクトルであることがわかる.S
の左からS =u1 λ1 u1 を掛けて,u
T
1
を使うと,= 1u
T
1
u1
となり,分散と固有値が等しいことがわかる.
したがって,分散は最大固有値
S =u
T
1
u1 λ1
を選んだ時に最大となる.
この
λ1
に対応する固有ベクトルλ1 を第u1 主成分となる.1
その他の主成分も,すでに得られている主成分ベクトルに直交するという条件の下で,
射影後の分散を最大化するような方向を選ぶことで逐次的に得ることができる.
一般の場合として 次元の射影空間を考えると,データ共分散行列M の
大きい順に
S
個の固有値M に対応する, , …,λ1 λ2 λM
個の固有ベクトルM により, , …,u1 u2 uM 個の主成分を得ることができる.M
帰納法による証明
射影されたデータの分散を最大化するような 次元部分空間の上への線形写像が,
データ共分散行列
M
の上位S 個の固有値に属するM 本の固有ベクトルにより定義されることを示す.M
の場合は既に示したので,ある一般的な値M = 1 に対してこの結果が成り立つと仮定して,
その下で,
M
次元に対しても成り立つことを示せれば良い.M + 1
第 主成分を(M + 1) とする.uM+1
と,= 1u
T
M+1
uM+1 は既に求めたベクトルuM+1 と直交するという, …,u1 uM つの制約条件の下で,
射影後の分散
2
の最大化を考える.
ラグランジュ乗数を導入すれば,
Su
T
M+1
uM+1
を制約式なしで最大化する問題とみなすことができる.
S + (1 − ) +u
T
M+1
uM+1 λM+1 u
T
M+1
uM+1 ∑M
i=1
ηi u
T
M+1
ui
に関して微分してuM+1 とおけば,0
左から
2S − 2 + = 0uM+1 λM+1 uM+1 ∑M
i=1
ηi ui
をかければ,u
T
j
が得られる
したがって,以下の式を得る.
= 0 (j = 1, 2, …, M)ηj
さらに,左から
S =uM+1 λM+1 uM+1
をかければu
T
M+1
が得られる.
以上より,分散を最大にするにはまだ選択されていない固有値の中で
最大のものに属する固有ベクトル
S =u
T
M+1
uM+1 λM+1
であることがわかる.uM+1
主成分分析
1. データ集合から共分散行列 を求める
2. の固有値問題を解く
3. 大きい順に 個の固有値に対応する固有ベクトルから主成分を求める
4. 各データに対して 個の主成分で基底変換した座標をもとめる
S
Su = λu
M
M
実験
3次元から2次元への次元削減を考える
第1主成分(赤)と第2主成分(青)で次元を削減
情報をうまく保持していることがわかる
スイスロールデータセットで同様の実験を行う
情報をうまく保持できていないことがわかる
※ 左右の図で対応するデータの色が異なっていることに注意
主成分分析の特徴
基底変換(無相関化)の手法と言える
- 次元削減やデータの可視化,前処理などに利用できる
主成分を解析的に求めることができる
- の固有値問題の計算コストは
非線形な構造を持つデータでは良い結果が得られない
- 基本的には高次元空間中の線形の部分構造しか取り出せない(直線や平面など)
n × n ( )n
3
2. カーネル主成分分析
カーネル法
カーネル関数を使う手法の総称
サポートベクターマシン
カーネル回帰
カーネル主成分分析
カーネルk-平均法
カーネル判別分析
カーネル正準相関分析
カーネル主成分分析とは
カーネル関数を用いた主成分分析
高次元の特徴ベクトルに変換してから,通常の主成分分析を行う
カーネル関数の定義
2つの要素 に対し,カーネル関数x, x
′
はk(x, )x
′
それぞれの特徴ベクトルどうしの内積として定義されるx, x
′
k(x, ) = ϕ(x ϕ( ) = (x) ( )x
′
)
T
x
′
∑d
m=1
ϕm ϕm x
′
カーネル関数の例
ガウスカーネル
-
多項式カーネル
-
シグモイドカーネル
-
k(x, ) = exp(−β||x − | )x
′
x
′
|
2
k(x, ) = ( + cx
′
x
T
x
′
)
p
k(x, ) =x
′ 1
1+exp(−βx )x
′
1次元のガウスカーネル
1次元の があったとき,以下のようなベクトル関数を特徴ベクトルに対応させる.x
つまり,
ϕ(x) = {a exp(− (z − x ) | z ∈ }β′
)
2
という実数の添え字を持つz
を成分とする無限次元の特徴ベクトルを考えれば良い.
(x) = a exp(− (z − x )ϕz β′
)
2
k(x, )x
′
= exp(− (z − x − (z − )dza
2
∫
∞
−∞
β′
)
2
β′
x
′
)
2
= exp(− (x − )a
2
π
2β′
‾ ‾‾‾
√
β′
2
x
′
)
2
無限次元のベクトルの内積は以下の積分の形でかける.
これに先ほどの式を代入すると,
k(x, ) = (x) ( )dzx
′
∫
∞
−∞
ϕz ϕz x
′
ここで, とすればa = ( , = 2β2β′
π )
1
4 β′
と一致する.k(x, ) = exp(−β||x − | )x
′
x
′
|
2
カーネル関数の構築方法
k(x, ) = c (x, )x
′
k1 x
′
k(x, ) = f (x) (x, )f ( )x
′
k1 x
′
x
′
k(x, ) = q( (x, ))x
′
k1 x
′
k(x, ) = exp( (x, ))x
′
k1 x
′
k(x, ) = (x, ) + (x, )x
′
k1 x
′
k2 x
′
k(x, ) = (x, ) (x, )x
′
k1 x
′
k2 x
′
※ この他にもいくつかの構築方法があります.(わかりやすいもののみのせました)
カーネル主成分分析
データ集合 を考える.
ここで,
{ }xn
であり,データは次元n = 1, …, N の空間にあるとする.
簡単のため,
D
をそれぞれのベクトルx¯ からあらかじめ引いているものとする.
すなわち,
xn
であるとする.= 0∑N
i=1
xn
主成分分析の復習
主成分は共分散行列の固有ベクトル でui
で表される.
ここで,
S =ui λi ui
であり,i = 1, …, D の共分散行列D × D はS
で定義され,固有ベクトルは
S =
1
N
∑N
n=1
xn x
T
n
で規格化されているとする= 1u
T
i
ui
ここで, 次元特徴空間への非線形変換M を考える.
各データ点
ϕ(x)
はこれによりxn の上に射影される.
まずは簡単のため,射影されたデータ集合も平均
ϕ( )xn
であると仮定する.
したがって
0
であると仮定する.ϕ( ) = 0∑N
n=1
xn
特徴空間における サンプル共分散行列はM × M
で与えられ,通常の主成分分析と同様に固有方程式は
C = ϕ( )ϕ(
1
N
∑N
n=1
xn xn )
T
に対して,i = 1, …, M
で与えられる.
C =vi λi vi
とC = ϕ( )ϕ(
1
N
∑N
n=1
xn xn )
T
から
固有ベクトル
C =vi λi vi
は以下の式を満たす.vi
したがって,
ϕ( ){ϕ( } =
1
N
∑N
n=1
xn xn )
T
vi λi vi
のようにかける.
ただし,
= ϕ( )vi ∑N
n=1
ain xn
= ϕ(ain
1
Nλi
xn )
T
vi
とϕ( ){ϕ( } =
1
N
∑N
n=1
xn xn )
T
vi λi vi より
以下の式が得られる.
= ϕ( )vi ∑N
n=1
ain xn
両辺に
ϕ( )ϕ(x ϕ( ) = ϕ( )
1
N
∑N
n=1
xn )
T
n ∑N
m=1
aim xm λi ∑N
n=1
ain xn
をかければ,ϕ(xl )
T
を用いてk( , ) = ϕ( ϕ( )xn xm xn )
T
xm
とかける.
k( , ) k( , ) = k( , )
1
N
∑N
n=1
xl xn ∑N
m=1
aim xn xm λi ∑N
n=1
ain xl xn
は
行列とベクトルを用いれば以下のようにかける.
k( , ) k( , ) = k( , )
1
N
∑N
n=1
xl xn ∑N
m=1
aim xn xm λi ∑N
n=1
ain xl xn
ただし,
= N KK
2
ai λi ai
はai 次元ベクトルでその要素はN に対してn = 1, …, N ain
はK 行i 列に要素j をもつ行列= k( , )Kij xi xj
をグラム行列と呼ぶ.K
に対する解を,次の方程式を解くことにより得られる.ai
また,係数
K = Nai λi ai
に対する規格化条件は以下で得られる.ai
固有値問題を解いたとして,主成分への射影をカーネル関数で表すことができる.
1 = = ϕ( ϕ( ) = K = Nv
T
i
vi ∑N
n=1
∑N
m=1
ain aim xn )
T
xm a
T
i
ai λi a
T
i
ai
で与えられ,カーネル関数だけを通して表されていることがわかる.
(x) = ϕ(x = ϕ(x ϕ(x) = k(x, )yi )
T
vi ∑N
n=1
ain )
T
∑N
n=1
ain xn
K̃ 
nm = ( ( )ϕ̃ 
xn )
T
ϕ̃ 
xm
= ϕ( ϕ( ) − ϕ( ϕ( ) − ϕ( ϕ( ) + ϕ( ϕ( )xn )
T
xm
1
N ∑
l=1
N
xn )
T
xl
1
N ∑
l=1
N
xl )
T
xm
1
N
2 ∑
j=1
N
∑
l=1
N
xj )
T
xl
= k( , ) − k( , ) − k( , ) + k( , )xn xm
1
N ∑
l=1
N
xl xm
1
N ∑
l=1
N
xn xl
1
N
2 ∑
j=1
N
∑
l=1
N
xj xl
射影されたデータ集合 の平均がϕ( )xn でない場合も考える
射影されたデータ点の中心化された点を
0
で表すと,( )ϕ̃ 
xn
で与えられ,グラム行列の対応する要素は,
( ) = ϕ( ) − ϕ( )ϕ̃ 
xn xn
1
N
∑N
l=1
xl
これは行列表記で次のようにかける.
ただし,
= K − K − K + KK̃  1N 1N 1N 1N
は全ての要素が1N という値をとる1
N
行列である.
したがって,カーネル関数だけを用いて
N × N
を求めることができる.
あとは
K̃ 
を使って固有値と固有ベクトルを求めれば良い.K̃ 
カーネル主成分分析
1. カーネル関数を設定する
2. グラム行列から を求める
3. の固有値問題を解く
4. 大きい順に 個の固有値に対応する固有ベクトルから主成分を求める
5. 各データに対して 個の主成分で基底変換した座標をもとめる
K̃ 
v = λvK̃ 
M
M
スイスロールでカーネル主成分分析を行う
情報をうまく保持していることがわかる
※ 左右の図で対応するデータの色が異なっていることに注意
まとめ
- 主成分分析を紹介した
- カーネル法について簡単に触れた
- カーネル主成分分析なら,非線形なデータに対しても有効であることを確認した
感想
- カーネル法の特徴や活用場面が少しずつわかってきた
- 次元削減もたくさん手法があるので勉強してみたいと思った
参考文献
[1] C.M.ビショップ,パターン認識と機械学習下,丸善出版,2006
[2] 赤穂昭太郎,カーネル多変量解析,岩波書店,2008

主成分分析