主成分分析(PCA)
Principal Component Analysis (PCA)
概要
主成分分析(PCA:Principal Component Analysis)とは、高次元データの情報をできるだけ保持しながら、より低い次元に圧縮する教師なし学習の次元削減手法です。データの分散が最大になる方向(主成分)を順に見つけ出し、その方向にデータを射影することで次元を削減します。
PCAは、データの可視化(高次元データを2次元や3次元に圧縮してプロットする)、ノイズ除去、特徴量の圧縮、多重共線性の解消など、幅広い目的で活用されています。また、「次元の呪い」と呼ばれる高次元データ特有の問題に対する対処法としても重要です。G検定では、PCAの基本原理、固有値・固有ベクトルとの関係、寄与率の概念が出題されます。
詳細解説
分散最大化の原理
PCAの基本的な考え方は、データの情報量を「分散」で測り、分散が最も大きい方向を見つけることです。分散が大きい方向には、データの変動(情報)が多く含まれていると考えられます。
第1主成分は、データの分散が最大になる方向です。第2主成分は、第1主成分と直交する(垂直な)方向のうち、分散が最大になる方向です。このようにして、順次直交する主成分を求めていきます。すべての主成分は互いに直交(無相関)しているため、冗長な情報が排除されます。
固有値と固有ベクトル
PCAの数学的な実体は、データの共分散行列の固有値分解(または特異値分解)です。
- 固有ベクトル(Eigenvector):主成分の方向を表します。第1固有ベクトルが第1主成分の方向、第2固有ベクトルが第2主成分の方向に対応します。
- 固有値(Eigenvalue):各主成分の方向にデータがどれだけ広がっているか(分散の大きさ)を表します。固有値が大きいほど、その主成分に含まれる情報量が多いことを意味します。
PCAでは、固有値が大きい順に主成分を選択し、上位数個の主成分だけを残すことで次元を削減します。
寄与率と累積寄与率
寄与率は、各主成分がデータ全体の分散をどれだけ説明しているかの割合です。第i主成分の寄与率は、第i固有値を全固有値の合計で割った値として計算されます。
寄与率 = λi / Σλ
累積寄与率は、上位から順に寄与率を足し合わせた値です。例えば、第1主成分の寄与率が60%、第2主成分の寄与率が25%であれば、2つの主成分の累積寄与率は85%となります。これは、元のデータの情報の85%が2つの主成分で説明できることを意味します。
次元削減の際は、累積寄与率が80%〜95%程度になるように主成分の数を決めることが一般的です。
次元の呪い(Curse of Dimensionality)
次元の呪いとは、データの次元数(特徴量の数)が増加するにつれて、様々な問題が発生する現象です。次元が高くなると以下のような問題が生じます。
- データのスパース化:高次元空間ではデータ点が疎になり、統計的に意味のある分析が困難になる
- 距離の無意味化:高次元空間では、全てのデータ点間の距離がほぼ同じになる傾向がある
- 計算コストの増大:次元数の増加に伴い、計算量とメモリ使用量が急増する
- 過学習のリスク:特徴量が多すぎると、ノイズもパターンとして学習してしまう
PCAによる次元削減は、次元の呪いに対する有効な対処法の一つです。不要な次元を削除し、重要な情報だけを保持することで、これらの問題を軽減できます。
PCAの手順
- データを標準化する(平均0、分散1に変換)
- 共分散行列を計算する
- 共分散行列の固有値と固有ベクトルを求める
- 固有値の大きい順に固有ベクトルを並べる
- 上位k個の固有ベクトルを選択し、データを射影する
PCAの制約と注意点
PCAは線形の次元削減手法であるため、データが非線形構造を持つ場合には情報が失われる可能性があります。非線形な次元削減にはカーネルPCA、t-SNE、UMAPなどの手法が使われます。また、PCAは分散の大きい方向を重視するため、前処理としてデータの標準化(スケーリング)が重要です。標準化を行わないと、スケールの大きい特徴量の影響が過大に反映されてしまいます。
歴史・背景
主成分分析は、1901年にイギリスの統計学者カール・ピアソンが最小二乗法の観点から提案したのが最初です。その後、1933年にアメリカの経済統計学者ハロルド・ホテリングが、固有値分解に基づく現代的な形式に定式化しました。
PCAは当初、統計学における多変量データ分析の手法として発展しましたが、コンピュータの普及に伴い、パターン認識、画像処理、信号処理などの分野でも広く活用されるようになりました。特に顔認識の分野では、1991年にTurkとPentlandが提案した固有顔(Eigenfaces)がPCAを画像認識に応用した代表的な成功例として知られています。現在では、機械学習の前処理や探索的データ分析において、最も基本的な次元削減手法として定着しています。
具体的な事例
- データ可視化:高次元データを2次元に圧縮してプロットし、データの全体像やクラスタ構造を視覚的に把握します。
- 顔認識(固有顔法):顔画像のピクセルデータ(高次元)をPCAで低次元に圧縮し、効率的な顔認識を実現します。
- ノイズ除去:寄与率の低い主成分(ノイズ成分)を除去し、データをクリーンにします。
- 金融データ分析:多数の金融指標を少数の主成分に集約し、市場の動向を分析します。
- 機械学習の前処理:高次元の特徴量を圧縮してから分類器に入力することで、計算コストの削減と過学習の抑制を図ります。
- ゲノムデータ分析:遺伝子発現データ(数万次元)をPCAで圧縮し、集団の遺伝的構造を可視化します。
G検定での出題ポイント
- PCAは教師なし学習の次元削減手法であることを理解する
- 分散が最大の方向を主成分として抽出する原理を押さえる
- 固有値は分散の大きさ、固有ベクトルは主成分の方向を表すことを理解する
- 寄与率と累積寄与率の意味を説明できること
- 次元の呪いの概念とPCAによる対処法を把握する
- PCAは「分散最大化」の方向を主成分として順に抽出する次元削減手法
- 固有値=主成分の分散の大きさ、固有ベクトル=主成分の方向
- 寄与率はその主成分が全体の分散をどれだけ説明するかの割合
- 累積寄与率が80〜95%になるように次元数を決めるのが一般的
- PCAは線形手法。非線形の次元削減にはt-SNEやカーネルPCAを使う