データ解析の手法の一つである主成分分析(principal component analysis ; PCA)について,それなりに利用頻度が高いものの,そのたびに勉強しなおしていて効率が悪かったので,その基礎をまとめておくことにしました.
=================================================================================
[ 1. 準備 ]
データ行列を準備します. 個の変数についてそれぞれ 個のサンプルがある場合を考え,測定値を とします.議論を簡単にするために,各変数についてその平均
(1.1)
からの偏差
(1.2)
を導入します.すると測定データ全体は以下の 行列であるデータ行列 で表現できます.各サンプルを意味する 個の測定データベクトル を定義しておきます.
(1.3)
分散共分散行列を準備します.分散共分散行列は以下の 行列 で表現できます,その 要素 も示します.
(1.4)
(1.5)
(1.5)より分散共分散行列 なので実対称行列です.
分散共分散行列の固有値,固有ベクトルとその性質を準備します. の 個の固有値を ,長さ1の固有ベクトルを とします.つまり以下が成り立つとします. は通常の内積, はユークリッドノルムです.
(1.6)
測定データから計算されていることから,現実のデータ解析において固有方程式が重解を持つことはあまりないと思われます.よって,以下を仮定します.
仮定.
のすべての固有値は相異なる.すなわち である.
定義より は半正定値であり,またエルミート行列でもあるのですべての固有値は実数です.さらにすべての固有値は相異なると仮定したので, の固有ベクトルはそれぞれ互いに直交します.それらの証明は以下の過去記事にあります.
分散共分散行列(と相関行列)は半正定値であることを証明する - エンジニアを目指す浪人のブログ
エルミート行列のすべての固有値は実数であることの証明をメモする - エンジニアを目指す浪人のブログ
エルミート行列の相異なる固有値に対する固有ベクトルは直交することの証明をメモする - エンジニアを目指す浪人のブログ
以下の2つの事実を証明なしで用います.
・半正定値行列のすべての固有値は非負である
・ エルミート行列 の 個の固有ベクトルからなるユニタリ空間 の正規直交基底をとることができる.
よって は の正規直交基底です.また固有値は以下のように順序付けできます.
(1.7)
結合係数を準備します.ある正の整数 について結合係数 を導入します.これを表現する 個の結合係数ベクトルを定義しておきます.
(1.8)
[ 2. 主成分分析の概要 ]
主成分分析とは, の持つ情報を,情報の損失を最小限に抑えながら, の一次結合として与えられる互いに独立な 個の主成分 ,
(2.1)
を用いて表現する手法です.行列で表現すると以下となります.
(2.2)
は第 主成分と呼ばれ,結合係数 は以下の条件を満たすように決定します.
条件.
第1主成分 は のあらゆる1次式のなかで分散が最大となるものであり,第 主成分 の分散は のすべてと無相関な の1次式のなかで分散が最大となるものである.ただし( を大きくすると の分散はいくらでも大きくなってしまうので),
(2.3)
とする.
条件.について補足します.分散を最大にすることは以下の意味があります(文献[3]にわかりやすい図があります).
・射影したデータのバラツキが大きいほど,もとのデータの情報を多く含んでいると考えられる.
・もとのデータの情報の損失ができるだけ小さくなるような軸を探したい.
[ 3. 第 主成分得点の分散の導出 ]
(1.8)(2.1)(2.2)より, 番目のサンプルに対応する第 主成分の値,いいかえると第 主成分得点 を
(3.1)
とし,それらを 個のサンプルについてまとめた第 主成分得点ベクトルを(1.3)も用いて
(3.2)
とします.第 主成分得点 の平均 は(1.1)(1.2)(3.1)を用いて
(3.3)
であるので,第 主成分得点 の分散 は(1.4)(3.2)も用いて以下となります.
(3.4)
最後の は分散共分散行列 が半正定値であることによります.
[ 4. 第1主成分得点の分散を最大化する結合係数の導出 ]
いよいよ結合係数 を決めていきます.条件.より,制約(2.3)を満たし,(3.4)で とした が最大となるような を決めればよいことになります.そのためにレイリー商の性質を用います.以下の過去記事の定理4.2.2.(c)をそのまま用いることができます.(1.6)(1.7)も用います.
レイリー商についての定理を証明する - エンジニアを目指す浪人のブログ
具体的に式で書くと以下となります.
(4.1)
(4.2)
(4.3)
は に対する長さ1の固有ベクトルであることがわかります.(3.2)で としたとき と書くことにします.
[ 5. 第 主成分得点の分散を最大化する結合係数の導出 ]
次に,第2主成分の結合係数 を決めます.条件.を満たすように が と無相関となるためには,(3.3)(4.3)を用いて
(5.1)
でなければなりません.(1.7)より であるので
(5.2)
を得ます.したがって制約(2.3)(5.2)を満たし,(3.4)で とした が最大となるような を決めればよいことになります.そのために第1主成分のときと同様にレイリー商の性質を用います.先ほどの過去記事の定理4.2.2.(a)(b)を用いることができます.具体的に式で書くと以下となります.
(5.3)
(5.4)
(5.5)
は に対する長さ1の固有ベクトルであることがわかります.
以下同様に,第 主成分の結合係数 を決めることができます.条件.を満たすように が と無相関となるためには(5.1)と同様の計算により
(5.6)
を得ます.したがって制約(2.3)(5.6)を満たし,(3.4)の が最大となるような を決めればよいことになります.そのために第2主成分のときと同様に先ほどの過去記事の定理4.2.2.(a)(b)を用いることができます.
(5.7)
(5.8)
(5.9)
は に対する長さ1の固有ベクトルであることがわかります.
まとめると,条件.をみたす結合係数 は以下となります.
(5.10)
[ 6.考察 ]
(2.2)において とすることを用いて,( は正規直交基底なので)
(6.1)
と表現できます.これは主成分 は各サンプル を に射影したベクトルの長さであることを意味しています. であれば,(6.1)で 以降の項を打ち切り を以下のように近似することになります.
(6.2)
主成分分析とは,「 において測定データから計算される分散共分散行列 の固有ベクトル (固有値の大きい順)による直交座標系に線形変換し,そのうちの 次元のみを用いて(すなわち次元削減をおこない)測定データを近似すること」であることがわかります.
=================================================================================
以上,主成分分析の基礎をまとめました.
参考文献
[1] 京都大学 加納 学 先生のノート http://manabukano.brilliant-future.net/document/text-PCA.pdf
[2] 東京工業大学 渡辺澄夫先生のノート 第4回 主成分分析 http://www.ocw.titech.ac.jp/index.php?module=General&action=T0300&GakubuCD=4&GakkaCD=342200&KeiCD=&KougiCD=201602395&Nendo=2016&lang=JA&vid=05
[3] 統計科学研究所のページ http://www.statistics.co.jp/reference/software_R/statR_9_principal.pdf
[4] Cross Validated Stack Exchange http://stats.stackexchange.com/questions/153928/why-are-principal-component-scores-uncorrelated