身長・体重・胸囲・座高のように、たくさんの数値で表されたデータを、できるだけ情報を残したまま 2 つか 3 つの数値にまとめられないか、という素朴な疑問から始めます。ここでは「情報」を「個体どうしの散らばり」と決めると、いちばん散らばって見える向きを探す問題が、行列の固有値を求める問題にぴったり重なることを順に確かめます。読み終えると、データを何本の軸にまとめればどれだけ残るのかを、固有値から読めるようになります。
次元削減は「変数が多すぎて見えない・推定が不安定になる・計算が重い」という三つの困りごとへの対処です。主成分分析(principal component analysis, PCA)はそのうち線形 かつ教師なし の方法です。
PCA の設計原理はただ一つ、「射影したときの分散が最大になる方向を選ぶ」です。これを式に直すと、単位ベクトル u \boldsymbol{u} u に対する二次形式(成分について 2 次の式)u T S u \boldsymbol{u}^{\mathsf{T}} S \boldsymbol{u} u T S u (S S S は標本共分散行列)の最大化になります。
対称行列の二次形式を単位球面上で最大化する答えは、最大固有値と、それに属する固有ベクトルです。したがって第 1 主成分方向は S S S の最大固有値の固有ベクトルになります(系 3.3 )。
上位 k k k 本の主成分が張る部分空間は、データ点からの垂直距離の二乗和を最小にする k k k 次元アフィン部分空間(原点を通るとは限らない、平らな集合)でもあります。分散最大化と当てはめ誤差最小化は同じ問題の裏表です(定理 5.1 )。
寄与率 λ k / ∑ j λ j \lambda_k / \sum_j \lambda_j λ k / ∑ j λ j はその主成分が説明する全分散の割合で、k k k 次元まで採ったときに捨てられる誤差はちょうど λ k + 1 + ⋯ + λ p \lambda_{k+1} + \cdots + \lambda_p λ k + 1 + ⋯ + λ p です。
PCA は変数の単位の取り方に依存し、クラスの区別が保たれる保証もありません。使う前に標準化と目的の確認が必要です(例 7.1 、例 7.2 )。
この記事で使う事前知識
固有値・固有ベクトル : 行列 A A A をかけても向きが変わらないベクトルと、その伸び縮みの倍率のこと。→ 固有値と固有ベクトル
スペクトル定理 : 実対称行列は、互いに直交する固有ベクトルの基底をもつ、という定理。→ スペクトル定理
直交射影と正規直交基底 : ベクトルを部分空間へ垂直に落とした影と、長さ 1 で互いに直交する基底のこと。→ 内積空間とグラム・シュミット直交化
対角化 : 適切な基底をとると行列が対角行列で表せること。→ 対角化とジョルダン標準形
分散・共分散 : データの散らばりの大きさと、2 つの変数が一緒に動く度合いのこと。→ 確率変数と期待値
機械学習で扱うデータは、たいてい 1 個体あたり多数の数値の組として与えられます。28 × 28 28 \times 28 28 × 28 画素の手書き数字画像なら 784 個の数値、遺伝子発現データなら数万個、アンケートなら設問数だけの数値です。この「1 個体を表す数値の個数」を次元と呼び、以下では p p p と書きます。
次元が高いと、少なくとも三つの困りごとが起きます。
第一に、見えません 。人間が直接目で読める散布図は 2 次元、頑張って 3 次元までです。784 次元のデータについて「似ているものどうしが固まっているか」を確かめる方法が、そのままでは存在しません。
第二に、統計的に不利 になります。標本数 n n n に対して次元 p p p が大きいと、推定すべき量の個数が標本数に対して過大になり、モデルは訓練データの偶然の凹凸まで覚えてしまいます。共分散行列の推定はその典型で、p × p p \times p p × p の対称行列がもつ p ( p + 1 ) / 2 p(p+1)/2 p ( p + 1 ) /2 個の成分を n n n 個の標本から決めることになります。後で見るように、n − 1 < p n - 1 < p n − 1 < p のときは標本共分散行列の階数が p p p に届かず、必ず退化します(注意 6.4 )。
第三に、計算量 です。多くのアルゴリズムは次元に対して線形以上の計算量をもちます。共分散行列を作るだけでも O ( n p 2 ) O(np^2) O ( n p 2 ) 回の乗算が要ります。
一方で、実データの多くは「見かけの次元ほど自由度がない」という性質をもちます。身長・体重・胸囲・座高を測れば 4 次元のデータですが、これらは互いに強く相関しており、実質的には「体格の大きさ」というほぼ 1 本の軸で説明できてしまいます。手書き数字の画像でも、隣り合う画素の値はほとんど同じですから、784 個の数値が自由に動くわけではありません。見かけの次元と本質的な次元のこの差が、次元削減の付け入る隙です。
では「情報を落とさずに次元を減らす」とは何でしょうか。何を情報と呼ぶかを決めない限り、この問いは意味をもちません。PCA の答えは明快です — 情報とは**散らばり(分散)**である。
この立場を採る理由は、極端な場合を考えるとわかります。ある方向にデータを射影したとき、その値がすべての個体で同じ(分散が 0 0 0 )だったとしましょう。この座標は定数ですから、記録する必要がありません。捨てても個体を区別する能力は一切失われません。逆に、射影した値が大きくばらつく方向は、個体どうしを最もよく引き離す方向です。ならば「射影後の分散が大きい順に軸を採り、小さいものから捨てる」のが自然だろう、というのが PCA の設計原理です。
歴史的には二つの入口があります。Karl Pearson は 1901 年の論文で「空間内の点の集まりに最もよく当てはまる直線・平面」を、点から直線への垂直距離 の二乗和を最小にする問題として論じました。Harold Hotelling は 1933 年に、心理測定の文脈で分散最大化の定式化を与え、principal component の名を与えています。当てはめ誤差の最小化と分散の最大化 — 出発点は違いますが、答えは同じ固有値問題になります。この一致は偶然ではなく、ピタゴラスの定理から導かれる必然です(定理 5.1 )。
前章までで扱った線形回帰 や勾配降下法 は、目的変数 y y y という「正解」をもつ教師あり学習でした。PCA は y y y を使いません。入力データ x \boldsymbol{x} x 自身の構造だけを見る教師なし学習です。この違いは後で効いてきます(例 7.2 )。
定義 2.1 (中心化データ行列と標本共分散行列 ) ↗
x 1 , … , x n ∈ R p \boldsymbol{x}_1, \ldots, \boldsymbol{x}_n \in \mathbb{R}^p x 1 , … , x n ∈ R p (n ≥ 2 n \ge 2 n ≥ 2 )を観測データとする。標本平均(重心)を
x ˉ = 1 n ∑ i = 1 n x i \bar{\boldsymbol{x}} = \frac{1}{n}\sum_{i=1}^{n} \boldsymbol{x}_i x ˉ = n 1 i = 1 ∑ n x i とおき、中心化ベクトルを y i = x i − x ˉ \boldsymbol{y}_i = \boldsymbol{x}_i - \bar{\boldsymbol{x}} y i = x i − x ˉ と定める。y i T \boldsymbol{y}_i^{\mathsf{T}} y i T を第 i i i 行にもつ行列 X ∈ R n × p X \in \mathbb{R}^{n \times p} X ∈ R n × p を中心化データ行列 と呼ぶ。さらに
S = 1 n X T X = 1 n ∑ i = 1 n y i y i T ∈ R p × p S = \frac{1}{n} X^{\mathsf{T}} X = \frac{1}{n}\sum_{i=1}^{n} \boldsymbol{y}_i \boldsymbol{y}_i^{\mathsf{T}} \in \mathbb{R}^{p \times p} S = n 1 X T X = n 1 i = 1 ∑ n y i y i T ∈ R p × p を標本共分散行列 と呼ぶ。その ( j , l ) (j, l) ( j , l ) 成分は s j l = 1 n ∑ i = 1 n y i j y i l s_{jl} = \frac{1}{n}\sum_{i=1}^n y_{ij} y_{il} s j l = n 1 ∑ i = 1 n y ij y i l であり、s j j s_{jj} s j j は第 j j j 変数の標本分散、s j l s_{jl} s j l は第 j j j 変数と第 l l l 変数の標本共分散である。
定義の中で 1 n X T X \frac{1}{n} X^{\mathsf{T}} X n 1 X T X と 1 n ∑ i y i y i T \frac{1}{n}\sum_i \boldsymbol{y}_i \boldsymbol{y}_i^{\mathsf{T}} n 1 ∑ i y i y i T を同一視しました。これは行列積の定義から出ます。X T X^{\mathsf{T}} X T の第 i i i 列が y i \boldsymbol{y}_i y i なので、( X T X ) j l = ∑ i = 1 n X i j X i l = ∑ i = 1 n y i j y i l = ( ∑ i y i y i T ) j l (X^{\mathsf{T}} X)_{jl} = \sum_{i=1}^{n} X_{ij} X_{il} = \sum_{i=1}^{n} y_{ij} y_{il} = \left(\sum_i \boldsymbol{y}_i \boldsymbol{y}_i^{\mathsf{T}}\right)_{jl} ( X T X ) j l = ∑ i = 1 n X ij X i l = ∑ i = 1 n y ij y i l = ( ∑ i y i y i T ) j l となります。
PCA が見るのはただ一つの量、「ある方向へ射影したときの分散」です。これを定義します。
定義 2.3 (方向への射影と射影分散 ) ↗
u ∈ R p \boldsymbol{u} \in \mathbb{R}^p u ∈ R p を ∥ u ∥ = 1 \|\boldsymbol{u}\| = 1 ∥ u ∥ = 1 を満たすベクトルとする。第 i i i 個体の u \boldsymbol{u} u 方向の得点 を
z i ( u ) = ⟨ u , y i ⟩ = u T ( x i − x ˉ ) z_i(\boldsymbol{u}) = \langle \boldsymbol{u}, \boldsymbol{y}_i \rangle = \boldsymbol{u}^{\mathsf{T}}(\boldsymbol{x}_i - \bar{\boldsymbol{x}}) z i ( u ) = ⟨ u , y i ⟩ = u T ( x i − x ˉ ) と定め、その標本分散を u \boldsymbol{u} u 方向の射影分散 と呼ぶ。
得点の平均は 1 n ∑ i z i ( u ) = u T ( 1 n ∑ i y i ) = u T 0 = 0 \frac{1}{n}\sum_i z_i(\boldsymbol{u}) = \boldsymbol{u}^{\mathsf{T}}\left(\frac{1}{n}\sum_i \boldsymbol{y}_i\right) = \boldsymbol{u}^{\mathsf{T}}\boldsymbol{0} = 0 n 1 ∑ i z i ( u ) = u T ( n 1 ∑ i y i ) = u T 0 = 0 です(中心化しているので ∑ i y i = 0 \sum_i \boldsymbol{y}_i = \boldsymbol{0} ∑ i y i = 0 )。したがって射影分散は二乗平均そのもので、
1 n ∑ i = 1 n z i ( u ) 2 = 1 n ∑ i = 1 n u T y i y i T u = u T ( 1 n ∑ i = 1 n y i y i T ) u = u T S u \frac{1}{n}\sum_{i=1}^{n} z_i(\boldsymbol{u})^2
= \frac{1}{n}\sum_{i=1}^{n} \boldsymbol{u}^{\mathsf{T}} \boldsymbol{y}_i \, \boldsymbol{y}_i^{\mathsf{T}} \boldsymbol{u}
= \boldsymbol{u}^{\mathsf{T}} \left( \frac{1}{n}\sum_{i=1}^{n} \boldsymbol{y}_i \boldsymbol{y}_i^{\mathsf{T}} \right) \boldsymbol{u}
= \boldsymbol{u}^{\mathsf{T}} S \boldsymbol{u} n 1 i = 1 ∑ n z i ( u ) 2 = n 1 i = 1 ∑ n u T y i y i T u = u T ( n 1 i = 1 ∑ n y i y i T ) u = u T S u
と書けます。途中で使ったのは、スカラー z i = u T y i z_i = \boldsymbol{u}^{\mathsf{T}}\boldsymbol{y}_i z i = u T y i について z i 2 = z i z i T = ( u T y i ) ( y i T u ) z_i^2 = z_i z_i^{\mathsf{T}} = (\boldsymbol{u}^{\mathsf{T}}\boldsymbol{y}_i)(\boldsymbol{y}_i^{\mathsf{T}}\boldsymbol{u}) z i 2 = z i z i T = ( u T y i ) ( y i T u ) という書き換えと、u \boldsymbol{u} u が i i i に依存しないので和の外に出せることだけです。この式が記事全体の出発点です 。データの散らばりを方向 u \boldsymbol{u} u ごとに測る関数が、行列 S S S の二次形式として書けてしまう。これで問題は線形代数に移りました。
S S S がどんな行列なのかを押さえておきます。
補題 2.4 (標本共分散行列は対称かつ半正定値 ) ✓
定義 2.1 の S S S は S T = S S^{\mathsf{T}} = S S T = S を満たし、さらに任意の u ∈ R p \boldsymbol{u} \in \mathbb{R}^p u ∈ R p に対して u T S u ≥ 0 \boldsymbol{u}^{\mathsf{T}} S \boldsymbol{u} \ge 0 u T S u ≥ 0 である。
証明(補題 2.4) 対称性: 転置の性質 ( A B ) T = B T A T (AB)^{\mathsf{T}} = B^{\mathsf{T}}A^{\mathsf{T}} ( A B ) T = B T A T と ( A T ) T = A (A^{\mathsf{T}})^{\mathsf{T}} = A ( A T ) T = A から
S T = ( 1 n X T X ) T = 1 n X T ( X T ) T = 1 n X T X = S . S^{\mathsf{T}} = \left(\frac{1}{n}X^{\mathsf{T}}X\right)^{\mathsf{T}} = \frac{1}{n}X^{\mathsf{T}}(X^{\mathsf{T}})^{\mathsf{T}} = \frac{1}{n}X^{\mathsf{T}}X = S . S T = ( n 1 X T X ) T = n 1 X T ( X T ) T = n 1 X T X = S . 半正定値性: 任意の u \boldsymbol{u} u に対し
u T S u = 1 n u T X T X u = 1 n ( X u ) T ( X u ) = 1 n ∥ X u ∥ 2 ≥ 0. \boldsymbol{u}^{\mathsf{T}} S \boldsymbol{u} = \frac{1}{n}\boldsymbol{u}^{\mathsf{T}}X^{\mathsf{T}}X\boldsymbol{u} = \frac{1}{n}(X\boldsymbol{u})^{\mathsf{T}}(X\boldsymbol{u}) = \frac{1}{n}\|X\boldsymbol{u}\|^2 \ge 0 . u T S u = n 1 u T X T X u = n 1 ( X u ) T ( X u ) = n 1 ∥ X u ∥ 2 ≥ 0. ノルムの二乗は非負なので結論を得ます。なお ∥ u ∥ = 1 \|\boldsymbol{u}\| = 1 ∥ u ∥ = 1 のときこの量は射影分散に等しく、「分散は負にならない」という当たり前の事実の言い換えになっています。
∎
対称行列については、次の定理が使えます。これが PCA の理論的な土台です。
定理 2.5 (実対称行列のスペクトル定理 ) ✓
S ∈ R p × p S \in \mathbb{R}^{p \times p} S ∈ R p × p が S T = S S^{\mathsf{T}} = S S T = S を満たすとする。このとき R p \mathbb{R}^p R p の正規直交基底 v 1 , … , v p \boldsymbol{v}_1, \ldots, \boldsymbol{v}_p v 1 , … , v p と実数 λ 1 ≥ λ 2 ≥ ⋯ ≥ λ p \lambda_1 \ge \lambda_2 \ge \cdots \ge \lambda_p λ 1 ≥ λ 2 ≥ ⋯ ≥ λ p が存在して、すべての j j j について S v j = λ j v j S\boldsymbol{v}_j = \lambda_j \boldsymbol{v}_j S v j = λ j v j が成り立つ。行列で書けば、V = [ v 1 ⋯ v p ] V = [\boldsymbol{v}_1\ \cdots\ \boldsymbol{v}_p] V = [ v 1 ⋯ v p ] 、Λ = diag ( λ 1 , … , λ p ) \Lambda = \operatorname{diag}(\lambda_1, \ldots, \lambda_p) Λ = diag ( λ 1 , … , λ p ) として V T V = I p V^{\mathsf{T}}V = I_p V T V = I p かつ S = V Λ V T S = V \Lambda V^{\mathsf{T}} S = V Λ V T である。さらに S S S が半正定値ならば λ p ≥ 0 \lambda_p \ge 0 λ p ≥ 0 、すなわちすべての固有値は非負である。
証明(定理 2.5) 前半(正規直交固有基底の存在と固有値の実数性)は本記事では認めて使います。所在は 注意 2.6 に示します。ここでは後半だけ示します。S S S が半正定値のとき、v j \boldsymbol{v}_j v j は単位ベクトルなので
λ j = λ j ∥ v j ∥ 2 = λ j v j T v j = v j T ( λ j v j ) = v j T S v j ≥ 0 \lambda_j = \lambda_j \|\boldsymbol{v}_j\|^2 = \lambda_j \boldsymbol{v}_j^{\mathsf{T}}\boldsymbol{v}_j = \boldsymbol{v}_j^{\mathsf{T}}(\lambda_j \boldsymbol{v}_j) = \boldsymbol{v}_j^{\mathsf{T}} S \boldsymbol{v}_j \ge 0 λ j = λ j ∥ v j ∥ 2 = λ j v j T v j = v j T ( λ j v j ) = v j T S v j ≥ 0 となります。最後の不等号が半正定値性です。とくに 補題 2.4 より標本共分散行列の固有値はすべて非負です。
∎
PCA が解きたい問題は、§1 の設計原理をそのまま式にしたものです。
最大化 u T S u (条件 ∥ u ∥ = 1 のもとで) \text{最大化} \quad \boldsymbol{u}^{\mathsf{T}} S \boldsymbol{u} \quad \text{(条件 } \|\boldsymbol{u}\| = 1 \text{ のもとで)} 最大化 u T S u (条件 ∥ u ∥ = 1 のもとで)
なぜ ∥ u ∥ = 1 \|\boldsymbol{u}\| = 1 ∥ u ∥ = 1 という条件を付けるのでしょうか。付けないと問題が壊れるからです。u \boldsymbol{u} u を c c c 倍すると得点も c c c 倍になり、射影分散は ( c u ) T S ( c u ) = c 2 u T S u (c\boldsymbol{u})^{\mathsf{T}}S(c\boldsymbol{u}) = c^2 \boldsymbol{u}^{\mathsf{T}}S\boldsymbol{u} ( c u ) T S ( c u ) = c 2 u T S u と c 2 c^2 c 2 倍になります。S ≠ O S \ne O S = O なら c → ∞ c \to \infty c → ∞ で発散し、最大値が存在しません。私たちが知りたいのは「どの向き にデータが伸びているか」であって、物差しの長さではありません。長さを 1 1 1 に固定すれば、比較しているのは向きだけになります。
定理 3.1 (レイリー商の最大値 ) ✓
S ∈ R p × p S \in \mathbb{R}^{p\times p} S ∈ R p × p を実対称行列とし、定理 2.5 の記号を使う。このとき
max ∥ u ∥ = 1 u T S u = λ 1 \max_{\|\boldsymbol{u}\| = 1} \boldsymbol{u}^{\mathsf{T}} S \boldsymbol{u} = \lambda_1 ∥ u ∥ = 1 max u T S u = λ 1 が成り立ち、最大値は u = v 1 \boldsymbol{u} = \boldsymbol{v}_1 u = v 1 で達成される。さらに、最大値を達成する単位ベクトルの全体は、固有値 λ 1 \lambda_1 λ 1 の固有空間 ker ( S − λ 1 I ) \ker(S - \lambda_1 I) ker ( S − λ 1 I ) に含まれる単位ベクトルの全体と一致する。
証明の方針は次のとおりです。S S S の固有ベクトルを新しい座標軸に選ぶと、二次形式は「固有値を、重み(成分の二乗)つきで平均したもの」に書き直せます。重みの合計は 1 なので、平均が最大固有値を超えることはなく、全部の重みを最大固有値の軸に置いたときにちょうど等しくなります。
証明(定理 3.1) ステップ 1(成分表示). 定理 2.5 より v 1 , … , v p \boldsymbol{v}_1, \ldots, \boldsymbol{v}_p v 1 , … , v p は R p \mathbb{R}^p R p の正規直交基底なので、任意の u \boldsymbol{u} u は u = ∑ j = 1 p c j v j \boldsymbol{u} = \sum_{j=1}^p c_j \boldsymbol{v}_j u = ∑ j = 1 p c j v j (c j = ⟨ v j , u ⟩ c_j = \langle \boldsymbol{v}_j, \boldsymbol{u}\rangle c j = ⟨ v j , u ⟩ )と一意に書けます。正規直交性から
∥ u ∥ 2 = ⟨ ∑ j c j v j , ∑ l c l v l ⟩ = ∑ j , l c j c l ⟨ v j , v l ⟩ = ∑ j = 1 p c j 2 \|\boldsymbol{u}\|^2 = \left\langle \sum_j c_j \boldsymbol{v}_j, \sum_l c_l \boldsymbol{v}_l \right\rangle = \sum_{j,l} c_j c_l \langle \boldsymbol{v}_j, \boldsymbol{v}_l\rangle = \sum_{j=1}^{p} c_j^2 ∥ u ∥ 2 = ⟨ j ∑ c j v j , l ∑ c l v l ⟩ = j , l ∑ c j c l ⟨ v j , v l ⟩ = j = 1 ∑ p c j 2 なので、条件 ∥ u ∥ = 1 \|\boldsymbol{u}\| = 1 ∥ u ∥ = 1 は ∑ j c j 2 = 1 \sum_j c_j^2 = 1 ∑ j c j 2 = 1 と同値です。
ステップ 2(二次形式の計算). S u = ∑ j c j S v j = ∑ j c j λ j v j S\boldsymbol{u} = \sum_j c_j S\boldsymbol{v}_j = \sum_j c_j \lambda_j \boldsymbol{v}_j S u = ∑ j c j S v j = ∑ j c j λ j v j なので、同じく正規直交性から
u T S u = ⟨ ∑ l c l v l , ∑ j c j λ j v j ⟩ = ∑ j = 1 p λ j c j 2 . \boldsymbol{u}^{\mathsf{T}} S \boldsymbol{u} = \left\langle \sum_l c_l \boldsymbol{v}_l, \sum_j c_j \lambda_j \boldsymbol{v}_j \right\rangle = \sum_{j=1}^{p} \lambda_j c_j^2 . u T S u = ⟨ l ∑ c l v l , j ∑ c j λ j v j ⟩ = j = 1 ∑ p λ j c j 2 . つまり二次形式は、固有値を重み c j 2 c_j^2 c j 2 で平均したものです(重みの和はステップ 1 より 1 1 1 )。
ステップ 3(上からの評価). すべての j j j で λ j ≤ λ 1 \lambda_j \le \lambda_1 λ j ≤ λ 1 かつ c j 2 ≥ 0 c_j^2 \ge 0 c j 2 ≥ 0 なので λ j c j 2 ≤ λ 1 c j 2 \lambda_j c_j^2 \le \lambda_1 c_j^2 λ j c j 2 ≤ λ 1 c j 2 、したがって
u T S u = ∑ j λ j c j 2 ≤ λ 1 ∑ j c j 2 = λ 1 . \boldsymbol{u}^{\mathsf{T}} S \boldsymbol{u} = \sum_j \lambda_j c_j^2 \le \lambda_1 \sum_j c_j^2 = \lambda_1 . u T S u = j ∑ λ j c j 2 ≤ λ 1 j ∑ c j 2 = λ 1 . ステップ 4(達成). u = v 1 \boldsymbol{u} = \boldsymbol{v}_1 u = v 1 は単位ベクトルであり、v 1 T S v 1 = v 1 T ( λ 1 v 1 ) = λ 1 \boldsymbol{v}_1^{\mathsf{T}} S \boldsymbol{v}_1 = \boldsymbol{v}_1^{\mathsf{T}}(\lambda_1 \boldsymbol{v}_1) = \lambda_1 v 1 T S v 1 = v 1 T ( λ 1 v 1 ) = λ 1 。よって上限 λ 1 \lambda_1 λ 1 は実際に達成され、最大値です。
ステップ 5(等号成立の条件). ステップ 3 の不等式の差を取ると
λ 1 − u T S u = ∑ j = 1 p ( λ 1 − λ j ) c j 2 \lambda_1 - \boldsymbol{u}^{\mathsf{T}} S \boldsymbol{u} = \sum_{j=1}^{p} (\lambda_1 - \lambda_j) c_j^2 λ 1 − u T S u = j = 1 ∑ p ( λ 1 − λ j ) c j 2 であり、右辺は非負項の和です。したがって等号が成り立つのは、λ j < λ 1 \lambda_j < \lambda_1 λ j < λ 1 であるすべての j j j について c j = 0 c_j = 0 c j = 0 となるとき、かつそのときに限ります。これは u \boldsymbol{u} u が λ 1 \lambda_1 λ 1 に属する固有ベクトルたちの張る空間 ker ( S − λ 1 I ) = span { v j : λ j = λ 1 } \ker(S - \lambda_1 I) = \operatorname{span}\{\boldsymbol{v}_j : \lambda_j = \lambda_1\} ker ( S − λ 1 I ) = span { v j : λ j = λ 1 } に入ることと同値です。
∎
この定理をデータの言葉に翻訳すれば、第 1 主成分が得られます。
定義 3.2 (主成分方向と主成分得点 ) ↗
定理 2.5 の正規直交固有系 v 1 , … , v p \boldsymbol{v}_1, \ldots, \boldsymbol{v}_p v 1 , … , v p (固有値の降順)に対し、v k \boldsymbol{v}_k v k を第 k k k 主成分方向 と呼ぶ。第 i i i 個体の第 k k k 主成分得点 を
z i k = ⟨ v k , y i ⟩ = v k T ( x i − x ˉ ) z_{ik} = \langle \boldsymbol{v}_k, \boldsymbol{y}_i \rangle = \boldsymbol{v}_k^{\mathsf{T}}(\boldsymbol{x}_i - \bar{\boldsymbol{x}}) z ik = ⟨ v k , y i ⟩ = v k T ( x i − x ˉ ) と定める。第 k k k 主成分得点を並べた n n n 個の数の組を第 k k k 主成分と呼ぶこともある。
系 3.3 (第 1 主成分は最大固有値の固有ベクトル ) ✓
すべての単位ベクトル u \boldsymbol{u} u のうち、射影分散 1 n ∑ i z i ( u ) 2 \frac{1}{n}\sum_i z_i(\boldsymbol{u})^2 n 1 ∑ i z i ( u ) 2 を最大にするのは S S S の最大固有値 λ 1 \lambda_1 λ 1 に属する単位固有ベクトルであり、そのときの射影分散の値は λ 1 \lambda_1 λ 1 に等しい。
証明(系 3.3) §2 で示したとおり射影分散は u T S u \boldsymbol{u}^{\mathsf{T}} S \boldsymbol{u} u T S u に等しく、補題 2.4 より S S S は実対称なので 定理 3.1 がそのまま適用できます。最大値は λ 1 \lambda_1 λ 1 、達成するのは λ 1 \lambda_1 λ 1 の固有空間内の単位ベクトルです。
∎
例 3.6 (等方的なデータでは主成分方向が定まらない )
S = σ 2 I p S = \sigma^2 I_p S = σ 2 I p (σ > 0 \sigma > 0 σ > 0 )となるデータを考えます。どの方向を選んでも射影分散は u T ( σ 2 I ) u = σ 2 ∥ u ∥ 2 = σ 2 \boldsymbol{u}^{\mathsf{T}}(\sigma^2 I)\boldsymbol{u} = \sigma^2\|\boldsymbol{u}\|^2 = \sigma^2 u T ( σ 2 I ) u = σ 2 ∥ u ∥ 2 = σ 2 で同じです。固有値は σ 2 \sigma^2 σ 2 のみ(重複度 p p p )で、任意の正規直交基底が主成分系になります。k k k 次元に落とすと、どの部分空間を選んでも ( p − k ) σ 2 (p-k)\sigma^2 ( p − k ) σ 2 の分散を失います。次元削減で得をする余地がまったくない状況です。実データでも上位の固有値が接近していると、標本のわずかな揺らぎで主成分方向が大きく回転します。「第 2 主成分は λ 2 ≈ λ 3 \lambda_2 \approx \lambda_3 λ 2 ≈ λ 3 のとき解釈しない」というのは実務上の鉄則です。
第 1 主成分だけでは足りないとき、次の軸をどう選ぶか。分散が大きい方向をもう一度探すと、また v 1 \boldsymbol{v}_1 v 1 の近くが選ばれてしまい、同じ情報を二度記録することになります。そこで「すでに採った方向と直交する」という条件を課します。直交する方向の得点は、後で見るように互いに無相関になり、情報の重複が起きません。
定理 4.1 (逐次的な分散最大化と固有値の対応 ) ✓
定理 2.5 の記号のもとで、1 ≤ k ≤ p 1 \le k \le p 1 ≤ k ≤ p とする。集合
W k = { u ∈ R p : ∥ u ∥ = 1 , ⟨ u , v 1 ⟩ = ⋯ = ⟨ u , v k − 1 ⟩ = 0 } W_k = \{\boldsymbol{u} \in \mathbb{R}^p : \|\boldsymbol{u}\| = 1,\ \langle \boldsymbol{u}, \boldsymbol{v}_1\rangle = \cdots = \langle \boldsymbol{u}, \boldsymbol{v}_{k-1}\rangle = 0 \} W k = { u ∈ R p : ∥ u ∥ = 1 , ⟨ u , v 1 ⟩ = ⋯ = ⟨ u , v k − 1 ⟩ = 0 } (k = 1 k = 1 k = 1 のときは単位球面全体)の上で、u T S u \boldsymbol{u}^{\mathsf{T}}S\boldsymbol{u} u T S u の最大値は λ k \lambda_k λ k であり、u = v k \boldsymbol{u} = \boldsymbol{v}_k u = v k で達成される。
証明(定理 4.1) u ∈ W k \boldsymbol{u} \in W_k u ∈ W k を取り、定理 3.1 の証明のステップ 1 と同様に u = ∑ j = 1 p c j v j \boldsymbol{u} = \sum_{j=1}^p c_j \boldsymbol{v}_j u = ∑ j = 1 p c j v j 、c j = ⟨ v j , u ⟩ c_j = \langle \boldsymbol{v}_j, \boldsymbol{u}\rangle c j = ⟨ v j , u ⟩ と展開します。W k W_k W k の定義から c 1 = ⋯ = c k − 1 = 0 c_1 = \cdots = c_{k-1} = 0 c 1 = ⋯ = c k − 1 = 0 です。したがって ∑ j ≥ k c j 2 = ∥ u ∥ 2 = 1 \sum_{j \ge k} c_j^2 = \|\boldsymbol{u}\|^2 = 1 ∑ j ≥ k c j 2 = ∥ u ∥ 2 = 1 であり、ステップ 2 の計算から
u T S u = ∑ j = k p λ j c j 2 ≤ λ k ∑ j = k p c j 2 = λ k \boldsymbol{u}^{\mathsf{T}} S \boldsymbol{u} = \sum_{j = k}^{p} \lambda_j c_j^2 \le \lambda_k \sum_{j=k}^{p} c_j^2 = \lambda_k u T S u = j = k ∑ p λ j c j 2 ≤ λ k j = k ∑ p c j 2 = λ k を得ます。不等号では、j ≥ k j \ge k j ≥ k のとき固有値が降順に並んでいることから λ j ≤ λ k \lambda_j \le \lambda_k λ j ≤ λ k であることを使いました。
一方 v k \boldsymbol{v}_k v k は単位ベクトルで、j ≤ k − 1 j \le k-1 j ≤ k − 1 について ⟨ v k , v j ⟩ = 0 \langle \boldsymbol{v}_k, \boldsymbol{v}_j \rangle = 0 ⟨ v k , v j ⟩ = 0 (正規直交性)なので v k ∈ W k \boldsymbol{v}_k \in W_k v k ∈ W k であり、v k T S v k = λ k \boldsymbol{v}_k^{\mathsf{T}}S\boldsymbol{v}_k = \lambda_k v k T S v k = λ k 。よって上限は達成され、最大値です。
∎
つまり「分散が最大の方向を採る → それに直交する中で分散が最大の方向を採る → …」という素朴な逐次手続きが、固有値を大きい順に並べる操作とぴったり一致します。定義 3.2 で固有値の降順に番号を付けたのは、この一致を保つためです。
命題 4.2 (主成分得点の性質 ) ✓
定義 3.2 の主成分得点 z i k z_{ik} z ik について、次が成り立つ。
各 k k k について 1 n ∑ i = 1 n z i k = 0 \frac{1}{n}\sum_{i=1}^{n} z_{ik} = 0 n 1 ∑ i = 1 n z ik = 0 。
各 k , l k, l k , l について 1 n ∑ i = 1 n z i k z i l = λ k δ k l \frac{1}{n}\sum_{i=1}^{n} z_{ik} z_{il} = \lambda_k \delta_{kl} n 1 ∑ i = 1 n z ik z i l = λ k δ k l 。すなわち第 k k k 主成分得点の標本分散は λ k \lambda_k λ k であり、異なる主成分得点どうしの標本共分散は 0 0 0 である。
∑ k = 1 p λ k = tr S = ∑ j = 1 p s j j = 1 n ∑ i = 1 n ∥ y i ∥ 2 \displaystyle\sum_{k=1}^{p} \lambda_k = \operatorname{tr} S = \sum_{j=1}^{p} s_{jj} = \frac{1}{n}\sum_{i=1}^{n}\|\boldsymbol{y}_i\|^2 k = 1 ∑ p λ k = tr S = j = 1 ∑ p s j j = n 1 i = 1 ∑ n ∥ y i ∥ 2 。
証明(命題 4.2) 1. 内積の線形性から 1 n ∑ i z i k = ⟨ v k , 1 n ∑ i y i ⟩ = ⟨ v k , 0 ⟩ = 0 \frac{1}{n}\sum_i z_{ik} = \left\langle \boldsymbol{v}_k, \frac{1}{n}\sum_i \boldsymbol{y}_i \right\rangle = \langle \boldsymbol{v}_k, \boldsymbol{0}\rangle = 0 n 1 ∑ i z ik = ⟨ v k , n 1 ∑ i y i ⟩ = ⟨ v k , 0 ⟩ = 0 。ここで 定義 2.1 の中心化から ∑ i y i = 0 \sum_i \boldsymbol{y}_i = \boldsymbol{0} ∑ i y i = 0 を使いました。
2. z i k z i l = ( v k T y i ) ( y i T v l ) z_{ik} z_{il} = (\boldsymbol{v}_k^{\mathsf{T}}\boldsymbol{y}_i)(\boldsymbol{y}_i^{\mathsf{T}}\boldsymbol{v}_l) z ik z i l = ( v k T y i ) ( y i T v l ) と書けるので
1 n ∑ i z i k z i l = v k T ( 1 n ∑ i y i y i T ) v l = v k T S v l = λ l v k T v l = λ l δ k l , \frac{1}{n}\sum_i z_{ik} z_{il} = \boldsymbol{v}_k^{\mathsf{T}}\left(\frac{1}{n}\sum_i \boldsymbol{y}_i\boldsymbol{y}_i^{\mathsf{T}}\right)\boldsymbol{v}_l = \boldsymbol{v}_k^{\mathsf{T}} S \boldsymbol{v}_l = \lambda_l \boldsymbol{v}_k^{\mathsf{T}}\boldsymbol{v}_l = \lambda_l \delta_{kl}, n 1 i ∑ z ik z i l = v k T ( n 1 i ∑ y i y i T ) v l = v k T S v l = λ l v k T v l = λ l δ k l , 最後は正規直交性です。k = l k = l k = l なら λ k \lambda_k λ k 、k ≠ l k \ne l k = l なら 0 0 0 。1. より得点の平均が 0 0 0 なので、この量はそのまま標本共分散です。
3. まず tr ( y y T ) = ∑ j y j 2 = ∥ y ∥ 2 \operatorname{tr}(\boldsymbol{y}\boldsymbol{y}^{\mathsf{T}}) = \sum_j y_j^2 = \|\boldsymbol{y}\|^2 tr ( y y T ) = ∑ j y j 2 = ∥ y ∥ 2 とトレースの線形性から
tr S = tr ( 1 n ∑ i y i y i T ) = 1 n ∑ i ∥ y i ∥ 2 . \operatorname{tr} S = \operatorname{tr}\left(\frac{1}{n}\sum_i \boldsymbol{y}_i\boldsymbol{y}_i^{\mathsf{T}}\right) = \frac{1}{n}\sum_i \|\boldsymbol{y}_i\|^2 . tr S = tr ( n 1 i ∑ y i y i T ) = n 1 i ∑ ∥ y i ∥ 2 . また tr S = ∑ j s j j \operatorname{tr}S = \sum_j s_{jj} tr S = ∑ j s j j はトレースの定義そのものです。最後に 定理 2.5 の S = V Λ V T S = V\Lambda V^{\mathsf{T}} S = V Λ V T と tr ( A B ) = tr ( B A ) \operatorname{tr}(AB) = \operatorname{tr}(BA) tr ( A B ) = tr ( B A ) 、V T V = I V^{\mathsf{T}}V = I V T V = I から
tr S = tr ( V Λ V T ) = tr ( Λ V T V ) = tr Λ = ∑ k λ k . \operatorname{tr}S = \operatorname{tr}(V\Lambda V^{\mathsf{T}}) = \operatorname{tr}(\Lambda V^{\mathsf{T}}V) = \operatorname{tr}\Lambda = \sum_k \lambda_k . tr S = tr ( V Λ V T ) = tr ( Λ V T V ) = tr Λ = k ∑ λ k . ∎
は PCA のもう一つの顔です。もとの変数は互いに相関していますが、主成分得点に移ると相関が消えます 。V T V^{\mathsf{T}} V T による座標変換は、共分散行列を対角化する変換にほかなりません(対角化とジョルダン標準形 、定理 3.2[対角化とジョルダン標準形] )。3. は「全分散はどの座標系で測っても同じで、それが固有値の総和に等しい」という保存則で、次節の寄与率の分母になります。
Pearson の出発点は分散ではなく距離でした。ここでは、その定式化が同じ固有ベクトルに行き着くことを示します。V ⊆ R p V \subseteq \mathbb{R}^p V ⊆ R p を線形部分空間、P V P_V P V をそれへの直交射影とします。
定理 5.1 (最良近似アフィン部分空間 ) ✓
1 ≤ k ≤ p 1 \le k \le p 1 ≤ k ≤ p とする。k k k 次元線形部分空間 V ⊆ R p V \subseteq \mathbb{R}^p V ⊆ R p と点 c ∈ R p \boldsymbol{c} \in \mathbb{R}^p c ∈ R p が定めるアフィン部分空間 A = c + V A = \boldsymbol{c} + V A = c + V に対し、当てはめ誤差を
E ( c , V ) = 1 n ∑ i = 1 n dist ( x i , A ) 2 = 1 n ∑ i = 1 n ∥ ( I − P V ) ( x i − c ) ∥ 2 E(\boldsymbol{c}, V) = \frac{1}{n}\sum_{i=1}^{n} \operatorname{dist}(\boldsymbol{x}_i, A)^2 = \frac{1}{n}\sum_{i=1}^{n} \left\| (I - P_V)(\boldsymbol{x}_i - \boldsymbol{c}) \right\|^2 E ( c , V ) = n 1 i = 1 ∑ n dist ( x i , A ) 2 = n 1 i = 1 ∑ n ∥ ( I − P V ) ( x i − c ) ∥ 2 と定める。このとき
min c ∈ R p , dim V = k E ( c , V ) = λ k + 1 + λ k + 2 + ⋯ + λ p \min_{\boldsymbol{c} \in \mathbb{R}^p,\ \dim V = k} E(\boldsymbol{c}, V) = \lambda_{k+1} + \lambda_{k+2} + \cdots + \lambda_p c ∈ R p , d i m V = k min E ( c , V ) = λ k + 1 + λ k + 2 + ⋯ + λ p であり、最小値は c = x ˉ \boldsymbol{c} = \bar{\boldsymbol{x}} c = x ˉ 、V = span { v 1 , … , v k } V = \operatorname{span}\{\boldsymbol{v}_1, \ldots, \boldsymbol{v}_k\} V = span { v 1 , … , v k } で達成される(k = p k = p k = p のとき右辺は 0 0 0 と読む)。
この証明は 4 段階です。まず、直線や平面を重心に通すのが最良であることを示し(ステップ 1)、次にピタゴラスの定理で「誤差を小さくする」ことを「射影した長さの二乗和を大きくする」ことに言い換えます(ステップ 2。下の図のように、1 点の長さの二乗は、影の長さの二乗と、影から点までの距離の二乗に分かれます)。ステップ 3 では、その和が上位 k k k 個の固有値の和を超えないことを、各固有値にかかる重み w j w_j w j が 0 以上 1 以下で合計が k k k であることから示します。固有値の大きいほうから重みを詰めるのが最良、という見通しです。
原点 y P_V y 直線 V ‖y‖² ‖P_V y‖² ‖(I−P_V) y‖² ステップ 2 のピタゴラスの三角形。点 y(原点からの位置ベクトル)を直線 V に垂直に落とした影が P_V y です。長さの二乗は、影の部分と、影から点までの垂直な部分に分かれます。
証明(定理 5.1) ステップ 0(距離の式). A = c + V A = \boldsymbol{c} + V A = c + V 上の点は c + w \boldsymbol{c} + \boldsymbol{w} c + w (w ∈ V \boldsymbol{w} \in V w ∈ V )と書けます。∥ x − c − w ∥ \|\boldsymbol{x} - \boldsymbol{c} - \boldsymbol{w}\| ∥ x − c − w ∥ を w ∈ V \boldsymbol{w} \in V w ∈ V について最小にするのは直交射影 w = P V ( x − c ) \boldsymbol{w} = P_V(\boldsymbol{x} - \boldsymbol{c}) w = P V ( x − c ) であり(定理 7.2[内積空間とグラム・シュミット直交化] )、そのときの残差が ( I − P V ) ( x − c ) (I - P_V)(\boldsymbol{x}-\boldsymbol{c}) ( I − P V ) ( x − c ) です。よって定義式の二つの表現は一致します。
ステップ 1(重心が最適であること). x i − c = y i + ( x ˉ − c ) \boldsymbol{x}_i - \boldsymbol{c} = \boldsymbol{y}_i + (\bar{\boldsymbol{x}} - \boldsymbol{c}) x i − c = y i + ( x ˉ − c ) と分解し、d = ( I − P V ) ( x ˉ − c ) \boldsymbol{d} = (I-P_V)(\bar{\boldsymbol{x}} - \boldsymbol{c}) d = ( I − P V ) ( x ˉ − c ) とおくと ( I − P V ) ( x i − c ) = ( I − P V ) y i + d (I-P_V)(\boldsymbol{x}_i - \boldsymbol{c}) = (I-P_V)\boldsymbol{y}_i + \boldsymbol{d} ( I − P V ) ( x i − c ) = ( I − P V ) y i + d 。二乗して和を取ると
n E ( c , V ) = ∑ i ∥ ( I − P V ) y i ∥ 2 + 2 ⟨ ∑ i ( I − P V ) y i , d ⟩ + n ∥ d ∥ 2 . n E(\boldsymbol{c}, V) = \sum_i \|(I-P_V)\boldsymbol{y}_i\|^2 + 2\left\langle \sum_i (I-P_V)\boldsymbol{y}_i,\ \boldsymbol{d} \right\rangle + n\|\boldsymbol{d}\|^2 . n E ( c , V ) = i ∑ ∥ ( I − P V ) y i ∥ 2 + 2 ⟨ i ∑ ( I − P V ) y i , d ⟩ + n ∥ d ∥ 2 . 中央の項は、∑ i y i = 0 \sum_i \boldsymbol{y}_i = \boldsymbol{0} ∑ i y i = 0 と I − P V I - P_V I − P V の線形性から ∑ i ( I − P V ) y i = ( I − P V ) 0 = 0 \sum_i (I-P_V)\boldsymbol{y}_i = (I-P_V)\boldsymbol{0} = \boldsymbol{0} ∑ i ( I − P V ) y i = ( I − P V ) 0 = 0 となって消えます。残りは ∥ d ∥ 2 ≥ 0 \|\boldsymbol{d}\|^2 \ge 0 ∥ d ∥ 2 ≥ 0 なので、c = x ˉ \boldsymbol{c} = \bar{\boldsymbol{x}} c = x ˉ (このとき d = 0 \boldsymbol{d} = \boldsymbol{0} d = 0 )が最適です。以下 c = x ˉ \boldsymbol{c} = \bar{\boldsymbol{x}} c = x ˉ とし、E ( V ) = 1 n ∑ i ∥ ( I − P V ) y i ∥ 2 E(V) = \frac{1}{n}\sum_i \|(I-P_V)\boldsymbol{y}_i\|^2 E ( V ) = n 1 ∑ i ∥ ( I − P V ) y i ∥ 2 と書きます。データを中心化してよい理由がここにあります。
ステップ 2(ピタゴラス:誤差最小化=分散最大化). 直交射影の性質から P V y ⊥ ( I − P V ) y P_V \boldsymbol{y} \perp (I - P_V)\boldsymbol{y} P V y ⊥ ( I − P V ) y なので、
∥ y i ∥ 2 = ∥ P V y i ∥ 2 + ∥ ( I − P V ) y i ∥ 2 . \|\boldsymbol{y}_i\|^2 = \|P_V \boldsymbol{y}_i\|^2 + \|(I-P_V)\boldsymbol{y}_i\|^2 . ∥ y i ∥ 2 = ∥ P V y i ∥ 2 + ∥ ( I − P V ) y i ∥ 2 . i i i について平均を取り 命題 4.2 の 3. を使うと
E ( V ) = tr S − 1 n ∑ i ∥ P V y i ∥ 2 . E(V) = \operatorname{tr}S - \frac{1}{n}\sum_i \|P_V\boldsymbol{y}_i\|^2 . E ( V ) = tr S − n 1 i ∑ ∥ P V y i ∥ 2 . tr S \operatorname{tr}S tr S は V V V に依らない定数なので、E ( V ) E(V) E ( V ) の最小化は射影後の分散の和 1 n ∑ i ∥ P V y i ∥ 2 \frac{1}{n}\sum_i\|P_V\boldsymbol{y}_i\|^2 n 1 ∑ i ∥ P V y i ∥ 2 の最大化と同値 です。Pearson の問題と Hotelling の問題が一致するのは、このピタゴラスの定理 1 本によります。
ステップ 3(最大化). u 1 , … , u k \boldsymbol{u}_1, \ldots, \boldsymbol{u}_k u 1 , … , u k を V V V の正規直交基底とすると P V y = ∑ m = 1 k ⟨ u m , y ⟩ u m P_V\boldsymbol{y} = \sum_{m=1}^k \langle \boldsymbol{u}_m, \boldsymbol{y}\rangle \boldsymbol{u}_m P V y = ∑ m = 1 k ⟨ u m , y ⟩ u m 、したがって ∥ P V y ∥ 2 = ∑ m = 1 k ⟨ u m , y ⟩ 2 \|P_V\boldsymbol{y}\|^2 = \sum_{m=1}^k \langle \boldsymbol{u}_m,\boldsymbol{y}\rangle^2 ∥ P V y ∥ 2 = ∑ m = 1 k ⟨ u m , y ⟩ 2 です。§2 の射影分散の計算を各 u m \boldsymbol{u}_m u m に適用すると
1 n ∑ i ∥ P V y i ∥ 2 = ∑ m = 1 k u m T S u m . \frac{1}{n}\sum_i \|P_V\boldsymbol{y}_i\|^2 = \sum_{m=1}^{k} \boldsymbol{u}_m^{\mathsf{T}} S \boldsymbol{u}_m . n 1 i ∑ ∥ P V y i ∥ 2 = m = 1 ∑ k u m T S u m . これを λ 1 + ⋯ + λ k \lambda_1 + \cdots + \lambda_k λ 1 + ⋯ + λ k で上から抑えます。w j = ∑ m = 1 k ⟨ v j , u m ⟩ 2 w_j = \sum_{m=1}^{k}\langle \boldsymbol{v}_j, \boldsymbol{u}_m\rangle^2 w j = ∑ m = 1 k ⟨ v j , u m ⟩ 2 とおくと、定理 3.1 の証明ステップ 2 と同じ展開から ∑ m u m T S u m = ∑ j = 1 p λ j w j \sum_m \boldsymbol{u}_m^{\mathsf{T}}S\boldsymbol{u}_m = \sum_{j=1}^{p}\lambda_j w_j ∑ m u m T S u m = ∑ j = 1 p λ j w j です。重み w j w_j w j は二つの制約を満たします。
0 ≤ w j ≤ 1 0 \le w_j \le 1 0 ≤ w j ≤ 1 :w j = ∥ P V v j ∥ 2 w_j = \|P_V \boldsymbol{v}_j\|^2 w j = ∥ P V v j ∥ 2 であり、∥ P V v j ∥ ≤ ∥ v j ∥ = 1 \|P_V\boldsymbol{v}_j\| \le \|\boldsymbol{v}_j\| = 1 ∥ P V v j ∥ ≤ ∥ v j ∥ = 1 (ベッセルの不等式(注意 7.3)[内積空間とグラム・シュミット直交化] 、あるいはステップ 2 のピタゴラス)。
∑ j = 1 p w j = k \sum_{j=1}^p w_j = k ∑ j = 1 p w j = k :和の順序を変えると ∑ j w j = ∑ m = 1 k ∑ j = 1 p ⟨ v j , u m ⟩ 2 = ∑ m = 1 k ∥ u m ∥ 2 = k \sum_j w_j = \sum_{m=1}^{k}\sum_{j=1}^{p}\langle \boldsymbol{v}_j,\boldsymbol{u}_m\rangle^2 = \sum_{m=1}^k \|\boldsymbol{u}_m\|^2 = k ∑ j w j = ∑ m = 1 k ∑ j = 1 p ⟨ v j , u m ⟩ 2 = ∑ m = 1 k ∥ u m ∥ 2 = k (v j \boldsymbol{v}_j v j が正規直交基底であることによるパーセバルの等式)。
このとき
∑ j = 1 p λ j w j − ∑ j = 1 k λ j = ∑ j ≤ k λ j ( w j − 1 ) + ∑ j > k λ j w j ≤ ∑ j ≤ k λ k ( w j − 1 ) + ∑ j > k λ k w j = λ k ( ∑ j = 1 p w j − k ) = 0. \sum_{j=1}^{p}\lambda_j w_j - \sum_{j=1}^{k}\lambda_j
= \sum_{j\le k}\lambda_j (w_j - 1) + \sum_{j > k}\lambda_j w_j
\le \sum_{j\le k}\lambda_k (w_j - 1) + \sum_{j>k}\lambda_k w_j
= \lambda_k\left(\sum_{j=1}^p w_j - k\right) = 0 . j = 1 ∑ p λ j w j − j = 1 ∑ k λ j = j ≤ k ∑ λ j ( w j − 1 ) + j > k ∑ λ j w j ≤ j ≤ k ∑ λ k ( w j − 1 ) + j > k ∑ λ k w j = λ k ( j = 1 ∑ p w j − k ) = 0. 不等号の根拠は次のとおりです。j ≤ k j \le k j ≤ k では w j − 1 ≤ 0 w_j - 1 \le 0 w j − 1 ≤ 0 かつ λ j ≥ λ k \lambda_j \ge \lambda_k λ j ≥ λ k なので λ j ( w j − 1 ) ≤ λ k ( w j − 1 ) \lambda_j(w_j-1) \le \lambda_k(w_j-1) λ j ( w j − 1 ) ≤ λ k ( w j − 1 ) 。j > k j > k j > k では w j ≥ 0 w_j \ge 0 w j ≥ 0 かつ λ j ≤ λ k \lambda_j \le \lambda_k λ j ≤ λ k なので λ j w j ≤ λ k w j \lambda_j w_j \le \lambda_k w_j λ j w j ≤ λ k w j 。したがって ∑ m u m T S u m ≤ λ 1 + ⋯ + λ k \sum_m \boldsymbol{u}_m^{\mathsf{T}}S\boldsymbol{u}_m \le \lambda_1 + \cdots + \lambda_k ∑ m u m T S u m ≤ λ 1 + ⋯ + λ k です。
ステップ 4(達成と結論). V = span { v 1 , … , v k } V = \operatorname{span}\{\boldsymbol{v}_1,\ldots,\boldsymbol{v}_k\} V = span { v 1 , … , v k } 、u m = v m \boldsymbol{u}_m = \boldsymbol{v}_m u m = v m と取れば ∑ m v m T S v m = ∑ m ≤ k λ m \sum_m \boldsymbol{v}_m^{\mathsf{T}}S\boldsymbol{v}_m = \sum_{m\le k}\lambda_m ∑ m v m T S v m = ∑ m ≤ k λ m で等号が成立します。ステップ 2 に戻して
min V E ( V ) = tr S − ∑ j = 1 k λ j = ∑ j = 1 p λ j − ∑ j = 1 k λ j = ∑ j = k + 1 p λ j \min_V E(V) = \operatorname{tr}S - \sum_{j=1}^{k}\lambda_j = \sum_{j=1}^{p}\lambda_j - \sum_{j=1}^{k}\lambda_j = \sum_{j=k+1}^{p}\lambda_j V min E ( V ) = tr S − j = 1 ∑ k λ j = j = 1 ∑ p λ j − j = 1 ∑ k λ j = j = k + 1 ∑ p λ j を得ます(命題 4.2 の 3. を使いました)。
∎
定理 5.1 は、k k k 次元まで採ったときに捨てる誤差が λ k + 1 + ⋯ + λ p \lambda_{k+1} + \cdots + \lambda_p λ k + 1 + ⋯ + λ p ちょうどであることを教えてくれます。全分散が ∑ j λ j \sum_j \lambda_j ∑ j λ j (命題 4.2 )ですから、比を取れば「何割を残したか」が固有値だけで読めます。
定義 6.1 (寄与率と累積寄与率 ) ↗
tr S = ∑ j = 1 p λ j > 0 \operatorname{tr}S = \sum_{j=1}^p \lambda_j > 0 tr S = ∑ j = 1 p λ j > 0 とする。第 k k k 主成分の寄与率 を
r k = λ k λ 1 + ⋯ + λ p r_k = \frac{\lambda_k}{\lambda_1 + \cdots + \lambda_p} r k = λ 1 + ⋯ + λ p λ k と定め、上位 k k k 本までの累積寄与率 を
R k = ∑ m = 1 k r m = λ 1 + ⋯ + λ k λ 1 + ⋯ + λ p R_k = \sum_{m=1}^{k} r_m = \frac{\lambda_1 + \cdots + \lambda_k}{\lambda_1 + \cdots + \lambda_p} R k = m = 1 ∑ k r m = λ 1 + ⋯ + λ p λ 1 + ⋯ + λ k と定める。
0 ≤ r k ≤ 1 0 \le r_k \le 1 0 ≤ r k ≤ 1 かつ ∑ k r k = 1 \sum_k r_k = 1 ∑ k r k = 1 は定義と λ k ≥ 0 \lambda_k \ge 0 λ k ≥ 0 から直ちに従います。意味は次の等式に集約されます。定理 5.1 の最小誤差を E k ∗ E_k^{*} E k ∗ と書けば
E k ∗ tr S = λ k + 1 + ⋯ + λ p λ 1 + ⋯ + λ p = 1 − R k . \frac{E_k^{*}}{\operatorname{tr}S} = \frac{\lambda_{k+1}+\cdots+\lambda_p}{\lambda_1+\cdots+\lambda_p} = 1 - R_k . tr S E k ∗ = λ 1 + ⋯ + λ p λ k + 1 + ⋯ + λ p = 1 − R k .
つまり累積寄与率 R k R_k R k は、k k k 次元に落としたときに保たれる分散の割合であり、同時に 1 − R k 1 - R_k 1 − R k が相対的な平均二乗再構成誤差 です。「累積寄与率 90% で打ち切る」という操作は、「もとの散らばりの 10% ぶんの二乗誤差を許容して圧縮する」と言い換えられます。
例 6.2 (5 点の完全な計算 )
R 2 \mathbb{R}^2 R 2 の 5 点 ( 1 , 2 ) , ( 2 , 3 ) , ( 3 , 5 ) , ( 4 , 4 ) , ( 5 , 6 ) (1,2), (2,3), (3,5), (4,4), (5,6) ( 1 , 2 ) , ( 2 , 3 ) , ( 3 , 5 ) , ( 4 , 4 ) , ( 5 , 6 ) を PCA にかけます。
重心と中心化. x ˉ = 1 5 ( 1 + 2 + 3 + 4 + 5 , 2 + 3 + 5 + 4 + 6 ) = ( 3 , 4 ) \bar{\boldsymbol{x}} = \frac{1}{5}(1+2+3+4+5,\ 2+3+5+4+6) = (3, 4) x ˉ = 5 1 ( 1 + 2 + 3 + 4 + 5 , 2 + 3 + 5 + 4 + 6 ) = ( 3 , 4 ) 。よって中心化ベクトルは
y 1 = ( − 2 , − 2 ) , y 2 = ( − 1 , − 1 ) , y 3 = ( 0 , 1 ) , y 4 = ( 1 , 0 ) , y 5 = ( 2 , 2 ) . \boldsymbol{y}_1 = (-2,-2),\quad \boldsymbol{y}_2 = (-1,-1),\quad \boldsymbol{y}_3 = (0,1),\quad \boldsymbol{y}_4 = (1,0),\quad \boldsymbol{y}_5 = (2,2). y 1 = ( − 2 , − 2 ) , y 2 = ( − 1 , − 1 ) , y 3 = ( 0 , 1 ) , y 4 = ( 1 , 0 ) , y 5 = ( 2 , 2 ) . 検算として ∑ i y i = ( − 2 − 1 + 0 + 1 + 2 , − 2 − 1 + 1 + 0 + 2 ) = ( 0 , 0 ) \sum_i \boldsymbol{y}_i = (-2-1+0+1+2,\ -2-1+1+0+2) = (0,0) ∑ i y i = ( − 2 − 1 + 0 + 1 + 2 , − 2 − 1 + 1 + 0 + 2 ) = ( 0 , 0 ) 。
共分散行列. ∑ i y i 1 2 = 4 + 1 + 0 + 1 + 4 = 10 \sum_i y_{i1}^2 = 4+1+0+1+4 = 10 ∑ i y i 1 2 = 4 + 1 + 0 + 1 + 4 = 10 、∑ i y i 2 2 = 4 + 1 + 1 + 0 + 4 = 10 \sum_i y_{i2}^2 = 4+1+1+0+4 = 10 ∑ i y i 2 2 = 4 + 1 + 1 + 0 + 4 = 10 、∑ i y i 1 y i 2 = 4 + 1 + 0 + 0 + 4 = 9 \sum_i y_{i1}y_{i2} = 4+1+0+0+4 = 9 ∑ i y i 1 y i 2 = 4 + 1 + 0 + 0 + 4 = 9 なので
S = 1 5 ( 10 9 9 10 ) = ( 2 1.8 1.8 2 ) . S = \frac{1}{5}\begin{pmatrix} 10 & 9 \\ 9 & 10 \end{pmatrix} = \begin{pmatrix} 2 & 1.8 \\ 1.8 & 2 \end{pmatrix}. S = 5 1 ( 10 9 9 10 ) = ( 2 1.8 1.8 2 ) . 固有値と固有ベクトル. det ( S − λ I ) = ( 2 − λ ) 2 − 1.8 2 = 0 \det(S - \lambda I) = (2-\lambda)^2 - 1.8^2 = 0 det ( S − λ I ) = ( 2 − λ ) 2 − 1. 8 2 = 0 より 2 − λ = ± 1.8 2 - \lambda = \pm 1.8 2 − λ = ± 1.8 、すなわち λ 1 = 3.8 \lambda_1 = 3.8 λ 1 = 3.8 、λ 2 = 0.2 \lambda_2 = 0.2 λ 2 = 0.2 。λ 1 \lambda_1 λ 1 に対しては ( S − 3.8 I ) u = ( − 1.8 1.8 1.8 − 1.8 ) u = 0 (S - 3.8 I)\boldsymbol{u} = \begin{pmatrix} -1.8 & 1.8 \\ 1.8 & -1.8\end{pmatrix}\boldsymbol{u} = \boldsymbol{0} ( S − 3.8 I ) u = ( − 1.8 1.8 1.8 − 1.8 ) u = 0 から u 1 = u 2 u_1 = u_2 u 1 = u 2 、よって v 1 = 1 2 ( 1 , 1 ) T \boldsymbol{v}_1 = \frac{1}{\sqrt{2}}(1,1)^{\mathsf{T}} v 1 = 2 1 ( 1 , 1 ) T 。同様に λ 2 \lambda_2 λ 2 に対しては u 1 = − u 2 u_1 = -u_2 u 1 = − u 2 から v 2 = 1 2 ( 1 , − 1 ) T \boldsymbol{v}_2 = \frac{1}{\sqrt{2}}(1,-1)^{\mathsf{T}} v 2 = 2 1 ( 1 , − 1 ) T 。内積は 1 2 ( 1 − 1 ) = 0 \frac{1}{2}(1 - 1) = 0 2 1 ( 1 − 1 ) = 0 で直交しており、定理 2.5 と整合します。
主成分得点. z i 1 = y i 1 + y i 2 2 z_{i1} = \frac{y_{i1}+y_{i2}}{\sqrt{2}} z i 1 = 2 y i 1 + y i 2 、z i 2 = y i 1 − y i 2 2 z_{i2} = \frac{y_{i1}-y_{i2}}{\sqrt{2}} z i 2 = 2 y i 1 − y i 2 なので
( z i 1 ) i = 1 5 = 1 2 ( − 4 , − 2 , 1 , 1 , 4 ) , ( z i 2 ) i = 1 5 = 1 2 ( 0 , 0 , − 1 , 1 , 0 ) . (z_{i1})_{i=1}^{5} = \tfrac{1}{\sqrt2}(-4,\, -2,\, 1,\, 1,\, 4), \qquad
(z_{i2})_{i=1}^{5} = \tfrac{1}{\sqrt2}(0,\, 0,\, -1,\, 1,\, 0). ( z i 1 ) i = 1 5 = 2 1 ( − 4 , − 2 , 1 , 1 , 4 ) , ( z i 2 ) i = 1 5 = 2 1 ( 0 , 0 , − 1 , 1 , 0 ) . 分散を確かめます。1 5 ∑ i z i 1 2 = 1 5 ⋅ 16 + 4 + 1 + 1 + 16 2 = 38 10 = 3.8 = λ 1 \frac{1}{5}\sum_i z_{i1}^2 = \frac{1}{5}\cdot\frac{16+4+1+1+16}{2} = \frac{38}{10} = 3.8 = \lambda_1 5 1 ∑ i z i 1 2 = 5 1 ⋅ 2 16 + 4 + 1 + 1 + 16 = 10 38 = 3.8 = λ 1 、1 5 ∑ i z i 2 2 = 1 5 ⋅ 0 + 0 + 1 + 1 + 0 2 = 2 10 = 0.2 = λ 2 \frac{1}{5}\sum_i z_{i2}^2 = \frac{1}{5}\cdot\frac{0+0+1+1+0}{2} = \frac{2}{10} = 0.2 = \lambda_2 5 1 ∑ i z i 2 2 = 5 1 ⋅ 2 0 + 0 + 1 + 1 + 0 = 10 2 = 0.2 = λ 2 。共分散は 1 5 ⋅ 1 2 ( 0 + 0 + ( 1 ) ( − 1 ) + ( 1 ) ( 1 ) + 0 ) = 0 \frac{1}{5}\cdot\frac{1}{2}\big(0 + 0 + (1)(-1) + (1)(1) + 0\big) = 0 5 1 ⋅ 2 1 ( 0 + 0 + ( 1 ) ( − 1 ) + ( 1 ) ( 1 ) + 0 ) = 0 。命題 4.2 の 2. のとおりです。
寄与率. tr S = 4 = 3.8 + 0.2 \operatorname{tr}S = 4 = 3.8 + 0.2 tr S = 4 = 3.8 + 0.2 なので r 1 = 3.8 / 4 = 0.95 r_1 = 3.8/4 = 0.95 r 1 = 3.8/4 = 0.95 、r 2 = 0.05 r_2 = 0.05 r 2 = 0.05 。第 1 主成分だけで全分散の 95% を説明します。
再構成誤差. k = 1 k = 1 k = 1 に落とすと、y i \boldsymbol{y}_i y i の残差は z i 2 v 2 z_{i2}\boldsymbol{v}_2 z i 2 v 2 で、その二乗ノルムは z i 2 2 = 0 , 0 , 0.5 , 0.5 , 0 z_{i2}^2 = 0, 0, 0.5, 0.5, 0 z i 2 2 = 0 , 0 , 0.5 , 0.5 , 0 。平均は 1 5 ( 0 + 0 + 0.5 + 0.5 + 0 ) = 0.2 = λ 2 \frac{1}{5}(0+0+0.5+0.5+0) = 0.2 = \lambda_2 5 1 ( 0 + 0 + 0.5 + 0.5 + 0 ) = 0.2 = λ 2 で、定理 5.1 と一致します。復元値は x ^ i = x ˉ + z i 1 v 1 \hat{\boldsymbol{x}}_i = \bar{\boldsymbol{x}} + z_{i1}\boldsymbol{v}_1 x ^ i = x ˉ + z i 1 v 1 、たとえば i = 3 i=3 i = 3 なら z 31 = 1 / 2 z_{31} = 1/\sqrt2 z 31 = 1/ 2 より x ^ 3 = ( 3 , 4 ) + 1 2 ⋅ 1 2 ( 1 , 1 ) = ( 3.5 , 4.5 ) \hat{\boldsymbol{x}}_3 = (3,4) + \frac{1}{\sqrt2}\cdot\frac{1}{\sqrt2}(1,1) = (3.5, 4.5) x ^ 3 = ( 3 , 4 ) + 2 1 ⋅ 2 1 ( 1 , 1 ) = ( 3.5 , 4.5 ) です。
第 1 主成分(λ₁ = 3.8) 第 2 主成分(λ₂ = 0.2) y₁ y₂
5 点の完全な計算の例のデータ(中心化済み)と 2 本の主成分軸。太い軸が第 1 主成分方向、破線が第 2 主成分方向で、細い点線は第 1 主成分軸への垂線です。点 (0,1) と (1,0) は第 1 主成分軸上の同じ点に落ちます。この 2 点を区別しているのは第 2 主成分だけです。
例 6.3 (データが直線上に乗るとき )
すべての点が 1 本の直線上にある場合、すなわち単位ベクトル a \boldsymbol{a} a と実数 t 1 , … , t n t_1, \ldots, t_n t 1 , … , t n (∑ i t i = 0 \sum_i t_i = 0 ∑ i t i = 0 としてよい)によって y i = t i a \boldsymbol{y}_i = t_i \boldsymbol{a} y i = t i a と書ける場合を考えます。このとき
S = 1 n ∑ i ( t i a ) ( t i a ) T = ( 1 n ∑ i t i 2 ) a a T = s t 2 a a T S = \frac{1}{n}\sum_i (t_i\boldsymbol{a})(t_i\boldsymbol{a})^{\mathsf{T}} = \left(\frac{1}{n}\sum_i t_i^2\right)\boldsymbol{a}\boldsymbol{a}^{\mathsf{T}} = s_t^2\, \boldsymbol{a}\boldsymbol{a}^{\mathsf{T}} S = n 1 i ∑ ( t i a ) ( t i a ) T = ( n 1 i ∑ t i 2 ) a a T = s t 2 a a T です。この行列は a \boldsymbol{a} a を s t 2 a s_t^2\boldsymbol{a} s t 2 a に写し(a T a = 1 \boldsymbol{a}^{\mathsf{T}}\boldsymbol{a} = 1 a T a = 1 より)、a \boldsymbol{a} a に直交するベクトル w \boldsymbol{w} w を s t 2 a ( a T w ) = 0 s_t^2 \boldsymbol{a}(\boldsymbol{a}^{\mathsf{T}}\boldsymbol{w}) = \boldsymbol{0} s t 2 a ( a T w ) = 0 に写します。したがって固有値は λ 1 = s t 2 \lambda_1 = s_t^2 λ 1 = s t 2 (固有ベクトル a \boldsymbol{a} a )と 0 0 0 (重複度 p − 1 p-1 p − 1 )。寄与率は r 1 = 1 r_1 = 1 r 1 = 1 、k = 1 k=1 k = 1 での再構成誤差は λ 2 + ⋯ + λ p = 0 \lambda_2 + \cdots + \lambda_p = 0 λ 2 + ⋯ + λ p = 0 。PCA は、データが実際に乗っている直線をそのまま見つけ出します。逆に言えば、固有値 0 0 0 はデータに厳密な線形従属関係があることの検出器 です。
固有値分解: λ_1 ≥ ... ≥ λ_p ≥ 0
捨てる誤差 = λ_(k+1) + ... + λ_p
PCA の手順。固有値分解までは決定的な計算で、判断が入るのは k の決定だけです。
中心化を忘れない. 平均を引かずに 1 n ∑ i x i x i T \frac{1}{n}\sum_i \boldsymbol{x}_i\boldsymbol{x}_i^{\mathsf{T}} n 1 ∑ i x i x i T を固有値分解すると何が起きるでしょうか。x i = y i + x ˉ \boldsymbol{x}_i = \boldsymbol{y}_i + \bar{\boldsymbol{x}} x i = y i + x ˉ を代入して展開すると、交差項が ∑ i y i = 0 \sum_i \boldsymbol{y}_i = \boldsymbol{0} ∑ i y i = 0 で消えるので
1 n ∑ i x i x i T = S + x ˉ x ˉ T \frac{1}{n}\sum_i \boldsymbol{x}_i\boldsymbol{x}_i^{\mathsf{T}} = S + \bar{\boldsymbol{x}}\,\bar{\boldsymbol{x}}^{\mathsf{T}} n 1 i ∑ x i x i T = S + x ˉ x ˉ T
となります。余計に足された x ˉ x ˉ T \bar{\boldsymbol{x}}\bar{\boldsymbol{x}}^{\mathsf{T}} x ˉ x ˉ T は x ˉ \bar{\boldsymbol{x}} x ˉ 方向に固有値 ∥ x ˉ ∥ 2 \|\bar{\boldsymbol{x}}\|^2 ∥ x ˉ ∥ 2 をもつ階数 1 の行列です。原点から遠いデータでは ∥ x ˉ ∥ 2 \|\bar{\boldsymbol{x}}\|^2 ∥ x ˉ ∥ 2 が λ 1 \lambda_1 λ 1 より大きくなりがちで、そのとき「第 1 主成分」は散らばりの方向ではなく重心の方向を指してしまいます。定理 5.1 のステップ 1 が示すとおり、重心を通らせるのが当てはめの意味でも最適です。
スケールに依存する. 変数ごとに単位を取り替えると、共分散行列は S ~ = D S D \tilde{S} = D S D S ~ = D S D (D D D は正の対角行列)に変わりますが、固有ベクトルは D v j D\boldsymbol{v}_j D v j にはなりません。
例 7.1 (単位を変えると主成分が変わる )
S = ( 4 2 2 4 ) S = \begin{pmatrix} 4 & 2 \\ 2 & 4\end{pmatrix} S = ( 4 2 2 4 ) とします。固有値は 4 ± 2 4 \pm 2 4 ± 2 、すなわち λ 1 = 6 \lambda_1 = 6 λ 1 = 6 (固有ベクトル 1 2 ( 1 , 1 ) \frac{1}{\sqrt2}(1,1) 2 1 ( 1 , 1 ) )と λ 2 = 2 \lambda_2 = 2 λ 2 = 2 (1 2 ( 1 , − 1 ) \frac{1}{\sqrt2}(1,-1) 2 1 ( 1 , − 1 ) )で、第 1 主成分軸は 45 ∘ 45^\circ 4 5 ∘ の方向です。ここで第 2 変数の単位を 1 10 \frac{1}{10} 10 1 に細かくする(たとえば m を dm にする)と、D = diag ( 1 , 10 ) D = \operatorname{diag}(1,10) D = diag ( 1 , 10 ) として
S ~ = D S D = ( 4 20 20 400 ) . \tilde{S} = D S D = \begin{pmatrix} 4 & 20 \\ 20 & 400 \end{pmatrix}. S ~ = D S D = ( 4 20 20 400 ) . tr S ~ = 404 \operatorname{tr}\tilde S = 404 tr S ~ = 404 、det S ~ = 1600 − 400 = 1200 \det \tilde S = 1600 - 400 = 1200 det S ~ = 1600 − 400 = 1200 なので、固有値は λ = 404 ± 404 2 − 4 ⋅ 1200 2 = 404 ± 158416 2 \lambda = \frac{404 \pm \sqrt{404^2 - 4\cdot 1200}}{2} = \frac{404\pm\sqrt{158416}}{2} λ = 2 404 ± 40 4 2 − 4 ⋅ 1200 = 2 404 ± 158416 、数値では λ 1 ≈ 401.01 \lambda_1 \approx 401.01 λ 1 ≈ 401.01 、λ 2 ≈ 2.99 \lambda_2 \approx 2.99 λ 2 ≈ 2.99 。第 1 主成分方向は ( 4 − 401.01 ) u 1 + 20 u 2 = 0 (4 - 401.01)u_1 + 20u_2 = 0 ( 4 − 401.01 ) u 1 + 20 u 2 = 0 から u 2 ≈ 19.85 u 1 u_2 \approx 19.85\,u_1 u 2 ≈ 19.85 u 1 、すなわち第 2 座標軸から約 2.9 ∘ 2.9^\circ 2. 9 ∘ しか離れていません。もとの 45 ∘ 45^\circ 4 5 ∘ とはまったく別の方向です。寄与率も 0.75 0.75 0.75 から 0.993 0.993 0.993 へ跳ね上がります。
これは PCA の欠陥ではなく、分散という量が単位に依存する(次元をもつ)ことの当然の帰結です。身長 [cm] と年収 [円] のように単位が比較不能な変数が混ざるときは、各変数を標準偏差で割ってから PCA にかけます。これは相関行列の固有値問題を解くことと同じで、相関行列 PCA と呼ばれます。
教師なしであることを忘れない. PCA はラベルを見ません。分散が大きい方向が、知りたい区別に対応しているとは限らないのです。
例 7.2 (分散最大の方向が判別に役立たない例 )
R 2 \mathbb{R}^2 R 2 に 2 つのクラスがあり、クラス A は ( 0 , 1 ) (0, 1) ( 0 , 1 ) を中心に、クラス B は ( 0 , − 1 ) (0,-1) ( 0 , − 1 ) を中心に、どちらも第 1 座標方向に標準偏差 10 10 10 、第 2 座標方向に標準偏差 0.1 0.1 0.1 でばらついているとします。全データをまとめた共分散行列は、対称性から近似的に
S ≈ ( 100 0 0 1 + 0.01 ) S \approx \begin{pmatrix} 100 & 0 \\ 0 & 1 + 0.01 \end{pmatrix} S ≈ ( 100 0 0 1 + 0.01 ) です(第 2 成分の分散は、クラス中心の差による 1 1 1 とクラス内のばらつき 0.01 0.01 0.01 の和)。よって λ 1 = 100 \lambda_1 = 100 λ 1 = 100 、第 1 主成分方向は第 1 座標軸で、寄与率は 100 / 101.01 ≈ 0.99 100/101.01 \approx 0.99 100/101.01 ≈ 0.99 。ところが 2 つのクラスは第 1 座標では完全に重なっており、区別しているのは第 2 座標だけです。第 1 主成分だけを残すと、寄与率 99% を確保しながらクラスの情報を 100% 失います。
ラベルが使える場合は、クラス間分散とクラス内分散の比を最大化する線形判別分析(LDA)のような教師あり手法が適切です。PCA を前処理に使うなら、「分散の大きさ」と「タスクにとっての有用性」は別物だと意識してください。
線形であることを忘れない. PCA が探すのは部分空間、すなわち平らな集合です。データが曲がった曲面(渦巻き状の 2 次元曲面など)に沿って分布している場合、それを平面で近似することになり、うまく展開できません。非線形に拡張する道具としてはカーネル PCA や、ニューラルネットワーク を使ったオートエンコーダがあります。逆に、隠れ層の活性化が恒等写像で損失が二乗誤差の場合、オートエンコーダの大域最適解が張る部分空間は PCA のそれと一致することが知られています(Baldi–Hornik, 1989)。線形の世界では PCA が最適解であり、非線形性を入れて初めてその先へ進めるわけです。
確率モデルとして見ることもできる. ここまでは標本共分散行列という記述統計の量だけを扱いましたが、x \boldsymbol{x} x が期待値 μ \boldsymbol{\mu} μ 、共分散行列 Σ \Sigma Σ の確率ベクトルであるとして、Var ( u T x ) = u T Σ u \operatorname{Var}(\boldsymbol{u}^{\mathsf{T}}\boldsymbol{x}) = \boldsymbol{u}^{\mathsf{T}}\Sigma\boldsymbol{u} Var ( u T x ) = u T Σ u を最大化する問題としても同じ理論が成り立ちます(確率変数と期待値 、定義 5.1[確率変数と期待値] )。この視点を進めると、潜在変数モデルとしての確率的 PCA が得られます(確率論とベイズ統計の役割 )。
演習 8.1 標準
2 変数データの標本共分散行列が S = ( 5 2 2 2 ) S = \begin{pmatrix} 5 & 2 \\ 2 & 2\end{pmatrix} S = ( 5 2 2 2 ) であるとする。(1) 固有値を求めよ。(2) 正規化した主成分方向を求め、直交していることを確かめよ。(3) 第 1 主成分の寄与率を求めよ。(4) 第 1 主成分だけを残したときの平均二乗再構成誤差を求めよ。
解答 (1) 特性多項式は
det ( S − λ I ) = ( 5 − λ ) ( 2 − λ ) − 2 ⋅ 2 = λ 2 − 7 λ + 6 = ( λ − 6 ) ( λ − 1 ) \det(S - \lambda I) = (5-\lambda)(2-\lambda) - 2\cdot 2 = \lambda^2 - 7\lambda + 6 = (\lambda - 6)(\lambda - 1) det ( S − λ I ) = ( 5 − λ ) ( 2 − λ ) − 2 ⋅ 2 = λ 2 − 7 λ + 6 = ( λ − 6 ) ( λ − 1 ) なので λ 1 = 6 \lambda_1 = 6 λ 1 = 6 、λ 2 = 1 \lambda_2 = 1 λ 2 = 1 。検算:λ 1 + λ 2 = 7 = tr S \lambda_1 + \lambda_2 = 7 = \operatorname{tr}S λ 1 + λ 2 = 7 = tr S 、λ 1 λ 2 = 6 = det S \lambda_1\lambda_2 = 6 = \det S λ 1 λ 2 = 6 = det S 。
(2) λ 1 = 6 \lambda_1 = 6 λ 1 = 6 について S − 6 I = ( − 1 2 2 − 4 ) S - 6I = \begin{pmatrix} -1 & 2 \\ 2 & -4 \end{pmatrix} S − 6 I = ( − 1 2 2 − 4 ) 。第 1 行から − u 1 + 2 u 2 = 0 -u_1 + 2u_2 = 0 − u 1 + 2 u 2 = 0 、すなわち u 1 = 2 u 2 u_1 = 2u_2 u 1 = 2 u 2 (第 2 行 2 u 1 − 4 u 2 = 0 2u_1 - 4u_2 = 0 2 u 1 − 4 u 2 = 0 は同じ条件です)。長さを 1 1 1 にして v 1 = 1 5 ( 2 , 1 ) T \boldsymbol{v}_1 = \frac{1}{\sqrt5}(2,1)^{\mathsf{T}} v 1 = 5 1 ( 2 , 1 ) T 。
λ 2 = 1 \lambda_2 = 1 λ 2 = 1 について S − I = ( 4 2 2 1 ) S - I = \begin{pmatrix} 4 & 2 \\ 2 & 1\end{pmatrix} S − I = ( 4 2 2 1 ) 。第 1 行から 4 u 1 + 2 u 2 = 0 4u_1 + 2u_2 = 0 4 u 1 + 2 u 2 = 0 、すなわち u 2 = − 2 u 1 u_2 = -2u_1 u 2 = − 2 u 1 。よって v 2 = 1 5 ( 1 , − 2 ) T \boldsymbol{v}_2 = \frac{1}{\sqrt5}(1,-2)^{\mathsf{T}} v 2 = 5 1 ( 1 , − 2 ) T 。
内積は 1 5 ( 2 ⋅ 1 + 1 ⋅ ( − 2 ) ) = 0 \frac{1}{5}(2\cdot 1 + 1\cdot(-2)) = 0 5 1 ( 2 ⋅ 1 + 1 ⋅ ( − 2 )) = 0 で直交しており、定理 2.5 と整合します。
(3) tr S = 7 \operatorname{tr}S = 7 tr S = 7 なので r 1 = 6 / 7 ≈ 0.857 r_1 = 6/7 \approx 0.857 r 1 = 6/7 ≈ 0.857 。
(4) 定理 5.1 より、捨てられる誤差は残りの固有値の和 λ 2 = 1 \lambda_2 = 1 λ 2 = 1 。全分散 7 7 7 の 1 / 7 ≈ 14.3 % 1/7 \approx 14.3\% 1/7 ≈ 14.3% で、1 − r 1 1 - r_1 1 − r 1 に一致します。
演習 8.2 標準
2 変数を標準化した後の相関行列 R = ( 1 ρ ρ 1 ) R = \begin{pmatrix} 1 & \rho \\ \rho & 1 \end{pmatrix} R = ( 1 ρ ρ 1 ) (− 1 < ρ < 1 -1 < \rho < 1 − 1 < ρ < 1 )を考える。固有値と正規化した固有ベクトルを ρ \rho ρ の式で求め、第 1 主成分の寄与率を書け。さらに ρ → 0 \rho \to 0 ρ → 0 と ρ → 1 \rho \to 1 ρ → 1 の極限で何が起きるかを述べよ。
解答 det ( R − λ I ) = ( 1 − λ ) 2 − ρ 2 = 0 \det(R - \lambda I) = (1-\lambda)^2 - \rho^2 = 0 det ( R − λ I ) = ( 1 − λ ) 2 − ρ 2 = 0 から 1 − λ = ± ρ 1 - \lambda = \pm\rho 1 − λ = ± ρ 、よって固有値は 1 + ρ 1+\rho 1 + ρ と 1 − ρ 1-\rho 1 − ρ 。
ρ ≠ 0 \rho \ne 0 ρ = 0 とすると、固有値 1 + ρ 1+\rho 1 + ρ については R − ( 1 + ρ ) I = ( − ρ ρ ρ − ρ ) R - (1+\rho)I = \begin{pmatrix} -\rho & \rho \\ \rho & -\rho\end{pmatrix} R − ( 1 + ρ ) I = ( − ρ ρ ρ − ρ ) より u 1 = u 2 u_1 = u_2 u 1 = u 2 、固有ベクトルは 1 2 ( 1 , 1 ) T \frac{1}{\sqrt2}(1,1)^{\mathsf{T}} 2 1 ( 1 , 1 ) T 。固有値 1 − ρ 1-\rho 1 − ρ については同様に u 1 = − u 2 u_1 = -u_2 u 1 = − u 2 で 1 2 ( 1 , − 1 ) T \frac{1}{\sqrt2}(1,-1)^{\mathsf{T}} 2 1 ( 1 , − 1 ) T 。
大小関係は ρ \rho ρ の符号で決まります。ρ > 0 \rho > 0 ρ > 0 なら λ 1 = 1 + ρ \lambda_1 = 1+\rho λ 1 = 1 + ρ (方向 1 2 ( 1 , 1 ) \frac{1}{\sqrt2}(1,1) 2 1 ( 1 , 1 ) )、ρ < 0 \rho<0 ρ < 0 なら λ 1 = 1 − ρ \lambda_1 = 1-\rho λ 1 = 1 − ρ (方向 1 2 ( 1 , − 1 ) \frac{1}{\sqrt2}(1,-1) 2 1 ( 1 , − 1 ) )。いずれの場合も λ 1 = 1 + ∣ ρ ∣ \lambda_1 = 1 + |\rho| λ 1 = 1 + ∣ ρ ∣ 、tr R = 2 \operatorname{tr}R = 2 tr R = 2 なので
r 1 = 1 + ∣ ρ ∣ 2 . r_1 = \frac{1 + |\rho|}{2}. r 1 = 2 1 + ∣ ρ ∣ . ρ → 0 \rho \to 0 ρ → 0 :r 1 → 1 / 2 r_1 \to 1/2 r 1 → 1/2 。実際 ρ = 0 \rho = 0 ρ = 0 では R = I 2 R = I_2 R = I 2 となり 例 3.6 の状況で、主成分方向が定まりません。2 変数が無相関なら、1 次元に落とすと必ず分散の半分を失います。次元削減の利得がない、というのが正しい結論です。
ρ → 1 \rho \to 1 ρ → 1 :r 1 → 1 r_1 \to 1 r 1 → 1 。2 変数がほぼ同じ情報をもち、1 2 ( 1 , 1 ) \frac{1}{\sqrt2}(1,1) 2 1 ( 1 , 1 ) 方向の 1 次元でほぼ完全に表せます。捨てる誤差は λ 2 = 1 − ρ → 0 \lambda_2 = 1 - \rho \to 0 λ 2 = 1 − ρ → 0 。
なお、相関行列は各変数の分散を 1 1 1 に揃えた後の共分散行列なので、tr R = p \operatorname{tr}R = p tr R = p (ここでは 2 2 2 )が常に成り立ちます。カイザー基準「λ > 1 \lambda > 1 λ > 1 の主成分だけ採る」は、「平均的な 1 変数分(tr R / p = 1 \operatorname{tr}R/p = 1 tr R / p = 1 )より多く説明する主成分を残す」という意味です。
演習 8.3 難
Q ∈ R p × p Q \in \mathbb{R}^{p\times p} Q ∈ R p × p を直交行列(Q T Q = I Q^{\mathsf{T}}Q = I Q T Q = I )、b ∈ R p \boldsymbol{b} \in \mathbb{R}^p b ∈ R p を定ベクトルとし、x ~ i = Q x i + b \tilde{\boldsymbol{x}}_i = Q\boldsymbol{x}_i + \boldsymbol{b} x ~ i = Q x i + b とおく。(1) 新しいデータの標本共分散行列が S ~ = Q S Q T \tilde{S} = QSQ^{\mathsf{T}} S ~ = QS Q T となることを示せ。(2) S ~ \tilde S S ~ の固有値は S S S の固有値と一致し、対応する正規直交固有ベクトルが Q v j Q\boldsymbol{v}_j Q v j で与えられることを示せ。(3) PCA の寄与率と再構成誤差が回転・鏡映・平行移動で不変であることを結論せよ。(4) 一方 D = diag ( 1 , 10 ) D = \operatorname{diag}(1,10) D = diag ( 1 , 10 ) 、x ~ i = D x i \tilde{\boldsymbol{x}}_i = D\boldsymbol{x}_i x ~ i = D x i の場合には、S = ( 4 2 2 4 ) S = \begin{pmatrix}4&2\\2&4\end{pmatrix} S = ( 4 2 2 4 ) に対して D v 1 D\boldsymbol{v}_1 D v 1 が S ~ = D S D \tilde S = DSD S ~ = D S D の固有ベクトルにならないことを確かめよ。
解答 (1) 新しい重心は平均の線形性から 1 n ∑ i ( Q x i + b ) = Q x ˉ + b \frac{1}{n}\sum_i (Q\boldsymbol{x}_i + \boldsymbol{b}) = Q\bar{\boldsymbol{x}} + \boldsymbol{b} n 1 ∑ i ( Q x i + b ) = Q x ˉ + b 。よって中心化ベクトルは
y ~ i = ( Q x i + b ) − ( Q x ˉ + b ) = Q ( x i − x ˉ ) = Q y i \tilde{\boldsymbol{y}}_i = (Q\boldsymbol{x}_i + \boldsymbol{b}) - (Q\bar{\boldsymbol{x}} + \boldsymbol{b}) = Q(\boldsymbol{x}_i - \bar{\boldsymbol{x}}) = Q\boldsymbol{y}_i y ~ i = ( Q x i + b ) − ( Q x ˉ + b ) = Q ( x i − x ˉ ) = Q y i で、平行移動 b \boldsymbol{b} b は消えます。したがって
S ~ = 1 n ∑ i ( Q y i ) ( Q y i ) T = Q ( 1 n ∑ i y i y i T ) Q T = Q S Q T . \tilde S = \frac{1}{n}\sum_i (Q\boldsymbol{y}_i)(Q\boldsymbol{y}_i)^{\mathsf{T}} = Q\left(\frac{1}{n}\sum_i \boldsymbol{y}_i\boldsymbol{y}_i^{\mathsf{T}}\right)Q^{\mathsf{T}} = QSQ^{\mathsf{T}}. S ~ = n 1 i ∑ ( Q y i ) ( Q y i ) T = Q ( n 1 i ∑ y i y i T ) Q T = QS Q T . (2) S v j = λ j v j S\boldsymbol{v}_j = \lambda_j\boldsymbol{v}_j S v j = λ j v j の両辺に左から Q Q Q を掛け、途中に I = Q T Q I = Q^{\mathsf{T}}Q I = Q T Q を挿入します。
S ~ ( Q v j ) = Q S Q T Q v j = Q S v j = λ j ( Q v j ) . \tilde S (Q\boldsymbol{v}_j) = QSQ^{\mathsf{T}}Q\boldsymbol{v}_j = QS\boldsymbol{v}_j = \lambda_j (Q\boldsymbol{v}_j). S ~ ( Q v j ) = QS Q T Q v j = QS v j = λ j ( Q v j ) . また ⟨ Q v j , Q v l ⟩ = v j T Q T Q v l = v j T v l = δ j l \langle Q\boldsymbol{v}_j, Q\boldsymbol{v}_l\rangle = \boldsymbol{v}_j^{\mathsf{T}}Q^{\mathsf{T}}Q\boldsymbol{v}_l = \boldsymbol{v}_j^{\mathsf{T}}\boldsymbol{v}_l = \delta_{jl} ⟨ Q v j , Q v l ⟩ = v j T Q T Q v l = v j T v l = δ j l なので { Q v j } \{Q\boldsymbol{v}_j\} { Q v j } は正規直交系、とくに p p p 個の一次独立なベクトルです。よってこれが S ~ \tilde S S ~ の正規直交固有基底を与え、固有値の組(重複度込み)は S S S のそれと一致します。
(3) 寄与率は固有値の比だけで決まるので不変です。再構成誤差も 定理 5.1 より λ k + 1 + ⋯ + λ p \lambda_{k+1}+\cdots+\lambda_p λ k + 1 + ⋯ + λ p で、これも不変。主成分方向だけがデータと一緒に Q Q Q で回ります。幾何的には、PCA が座標系ではなく点の配置そのものを見ていることを意味します。
(4) S = ( 4 2 2 4 ) S = \begin{pmatrix}4&2\\2&4\end{pmatrix} S = ( 4 2 2 4 ) の固有ベクトルは v 1 = 1 2 ( 1 , 1 ) T \boldsymbol{v}_1 = \frac{1}{\sqrt2}(1,1)^{\mathsf{T}} v 1 = 2 1 ( 1 , 1 ) T (λ 1 = 6 \lambda_1 = 6 λ 1 = 6 )です。D v 1 D\boldsymbol{v}_1 D v 1 は ( 1 , 10 ) T (1,10)^{\mathsf{T}} ( 1 , 10 ) T の定数倍。一方 S ~ = D S D = ( 4 20 20 400 ) \tilde S = DSD = \begin{pmatrix} 4 & 20 \\ 20 & 400\end{pmatrix} S ~ = D S D = ( 4 20 20 400 ) なので
S ~ ( 1 10 ) = ( 4 + 200 20 + 4000 ) = ( 204 4020 ) . \tilde S \begin{pmatrix} 1 \\ 10\end{pmatrix} = \begin{pmatrix} 4 + 200 \\ 20 + 4000 \end{pmatrix} = \begin{pmatrix} 204 \\ 4020 \end{pmatrix}. S ~ ( 1 10 ) = ( 4 + 200 20 + 4000 ) = ( 204 4020 ) . もし ( 1 , 10 ) T (1,10)^{\mathsf{T}} ( 1 , 10 ) T が固有ベクトルなら、像も第 2 成分が第 1 成分の 10 10 10 倍、すなわち ( 204 , 2040 ) T (204, 2040)^{\mathsf{T}} ( 204 , 2040 ) T でなければなりません。4020 ≠ 2040 4020 \ne 2040 4020 = 2040 なので固有ベクトルではありません。例 7.1 で見たとおり、実際の第 1 主成分方向は u 2 / u 1 ≈ 19.85 u_2/u_1 \approx 19.85 u 2 / u 1 ≈ 19.85 の方向です。
結論として、PCA は直交変換(等長変換)に対しては同変ですが、一般の可逆線形変換に対してはそうではありません。だからこそ変数のスケーリングが本質的な前処理になります。
K. Pearson, “On Lines and Planes of Closest Fit to Systems of Points in Space”, Philosophical Magazine 2 (1901), 559–572. PCA を「点集合への最良当てはめ直線・平面」として導入した原論文。
H. Hotelling, “Analysis of a Complex of Statistical Variables into Principal Components”, Journal of Educational Psychology 24 (1933), 417–441, 498–520. 分散最大化による定式化と principal component の命名。
I. T. Jolliffe, Principal Component Analysis , 2nd ed., Springer, 2002. PCA の標準的なモノグラフ。第 1〜3 章に本記事の内容と、寄与率・主成分の解釈に関する詳細な議論があります。
C. M. Bishop, Pattern Recognition and Machine Learning , Springer, 2006 — 第 12 章「Continuous Latent Variables」。分散最大化と誤差最小化の両方の定式化、および確率的 PCA。
G. H. Golub and C. F. Van Loan, Matrix Computations , 4th ed., Johns Hopkins University Press, 2013 — 特異値分解とその数値計算を扱う章。
P. Baldi and K. Hornik, “Neural networks and principal component analysis: Learning from examples without local minima”, Neural Networks 2 (1989), 53–58. 線形オートエンコーダの大域最適解が PCA の部分空間と一致することを示した論文。
共分散行列を作らずに済ませる. 実務の PCA は、S S S を作ってから固有値分解するのではなく、中心化データ行列 X X X の特異値分解(SVD)を直接計算するのが標準です。理由は次の命題と、その後の数値的な注意にあります。
命題 8.4 (SVD と PCA の対応 ) ✓
X ∈ R n × p X \in \mathbb{R}^{n\times p} X ∈ R n × p を 定義 2.1 の中心化データ行列、r = rank X r = \operatorname{rank}X r = rank X とし、その簡約特異値分解を
X = U Σ V T , U ∈ R n × r , Σ = diag ( σ 1 ≥ ⋯ ≥ σ r > 0 ) , V ∈ R p × r X = U \Sigma V^{\mathsf{T}}, \qquad U \in \mathbb{R}^{n\times r},\ \ \Sigma = \operatorname{diag}(\sigma_1 \ge \cdots \ge \sigma_r > 0),\ \ V \in \mathbb{R}^{p \times r} X = U Σ V T , U ∈ R n × r , Σ = diag ( σ 1 ≥ ⋯ ≥ σ r > 0 ) , V ∈ R p × r (U T U = V T V = I r U^{\mathsf{T}}U = V^{\mathsf{T}}V = I_r U T U = V T V = I r )とする。このとき V V V の第 j j j 列は S = 1 n X T X S = \frac{1}{n}X^{\mathsf{T}}X S = n 1 X T X の固有ベクトルであり、対応する固有値は λ j = σ j 2 / n \lambda_j = \sigma_j^2/n λ j = σ j 2 / n (1 ≤ j ≤ r 1 \le j \le r 1 ≤ j ≤ r )である。残る p − r p - r p − r 個の固有値は 0 0 0 である。さらに第 j j j 主成分得点は z i j = σ j u i j z_{ij} = \sigma_j u_{ij} z ij = σ j u ij で与えられる。
証明(命題 8.4) U T U = I r U^{\mathsf{T}}U = I_r U T U = I r を使って
S = 1 n X T X = 1 n V Σ U T U Σ V T = 1 n V Σ 2 V T = ∑ j = 1 r σ j 2 n v j v j T S = \frac{1}{n}X^{\mathsf{T}}X = \frac{1}{n}V\Sigma U^{\mathsf{T}} U \Sigma V^{\mathsf{T}} = \frac{1}{n} V\Sigma^2 V^{\mathsf{T}} = \sum_{j=1}^{r}\frac{\sigma_j^2}{n}\, \boldsymbol{v}_j\boldsymbol{v}_j^{\mathsf{T}} S = n 1 X T X = n 1 V Σ U T U Σ V T = n 1 V Σ 2 V T = j = 1 ∑ r n σ j 2 v j v j T (v j \boldsymbol{v}_j v j は V V V の第 j j j 列)。両辺に v l \boldsymbol{v}_l v l を掛けると、V V V の列の正規直交性から S v l = σ l 2 n v l S\boldsymbol{v}_l = \frac{\sigma_l^2}{n}\boldsymbol{v}_l S v l = n σ l 2 v l を得ます。一方 w ∈ R p \boldsymbol{w} \in \mathbb{R}^p w ∈ R p が V V V の全列と直交すれば S w = 0 S\boldsymbol{w} = \boldsymbol{0} S w = 0 なので、V V V の列直交補空間(次元 p − r p-r p − r )はすべて固有値 0 0 0 の固有空間に含まれます。以上で p p p 個の固有値が出そろいました。
得点については z i j = ⟨ v j , y i ⟩ z_{ij} = \langle \boldsymbol{v}_j, \boldsymbol{y}_i\rangle z ij = ⟨ v j , y i ⟩ が行列 X V XV X V の ( i , j ) (i,j) ( i , j ) 成分であり、X V = U Σ V T V = U Σ XV = U\Sigma V^{\mathsf{T}}V = U\Sigma X V = U Σ V T V = U Σ なので z i j = σ j u i j z_{ij} = \sigma_j u_{ij} z ij = σ j u ij です。
∎
なぜ SVD のほうがよいのか. S = 1 n X T X S = \frac{1}{n}X^{\mathsf{T}}X S = n 1 X T X を明示的に作ると、X X X の特異値が二乗されるため条件数も二乗されます。σ r / σ 1 \sigma_r/\sigma_1 σ r / σ 1 が計算機の丸め誤差の水準に近いとき、X T X X^{\mathsf{T}}X X T X の段階で小さい固有値の情報が失われます。X X X に直接 SVD をかければこの二乗を経由しません。計算量の面でも、p ≫ n p \gg n p ≫ n なら p × p p\times p p × p 行列を作らずに済みます。
NumPy での確認. 例 6.2 の数値を両方の方法で再現します。
X_raw = np. array ( [[ 1 ., 2 . ] , [ 2 ., 3 . ] , [ 3 ., 5 . ] , [ 4 ., 4 . ] , [ 5 ., 6 . ]] )
X = X_raw - X_raw. mean ( axis = 0 ) # 中心化
# 方法 1: 共分散行列の固有値分解(eigh は実対称行列用、固有値は昇順)
lam, V = np.linalg. eigh ( S )
lam, V = lam[:: - 1 ], V[:, :: - 1 ] # 降順に並べ替える
U, sigma, Vt = np.linalg. svd ( X , full_matrices = False )
print ( lam_svd ) # [3.8 0.2]
print ( lam / lam. sum ()) # 寄与率 [0.95 0.05]
print ( V [ :, 0 ]) # 第 1 主成分方向(符号は不定)
print ( X @ V [ :, : 1 ]) # 第 1 主成分得点
eigh が固有値を昇順で返すので並べ替えが要ります。出力される固有ベクトルの符号は環境によって反転しうる点は 注意 3.5 のとおりで、得点の符号がまとめて変わるだけなので寄与率も再構成誤差も影響を受けません。