主成分分析(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の手順

  1. データを標準化する(平均0、分散1に変換)
  2. 共分散行列を計算する
  3. 共分散行列の固有値と固有ベクトルを求める
  4. 固有値の大きい順に固有ベクトルを並べる
  5. 上位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を使う