主成分分析(PCA)は、線形次元削減手法の一つであり、相関する可能性のある変数からなるデータセットを、主成分と呼ばれるより少数の無相関変数へ変換する。この手法は、データ内の最大分散の方向を特定し、元の観測値をこれらの方向に射影することで、可能な限り多くの情報を保持した低次元表現を生成する。PCAは、機械学習における探索的データ解析、特徴量エンジニアリング、前処理において最も広く使用されるツールの一つであり、遺伝学から金融に至るまでの分野での基礎的概念としても機能する。
この手法は、1901年にカール・ピアソンによって初めて導入され、後に1933年にハロルド・ホテリングによって独立に発展させられた。数学的には、中心化されたデータ行列に対する特異値分解(SVD)と等価であり、計算効率が高く数値的に安定している。PCAはラベル付きデータを必要とせず、教師なし手法であり、最大分散の方向が最も情報量が多いという仮定に基づいており、これは多くの実世界のデータセットで成立する。
数学的定式化
n個の観測値とp個の変数を持つデータ行列Xが与えられたとき、PCAは各変数を平均ゼロに中心化することから始まる。中心化されたデータの共分散行列が計算され、その固有ベクトルと固有値が求められる。固有値の降順に並べられた固有ベクトルが主成分軸を定義し、固有値は各成分によって説明される分散の量を示す。最初の主成分は可能な限り最大の分散を捕捉し、2番目の主成分は最初の主成分に直交するという制約の下で次に大きい分散を捕捉し、以下同様に続く。
データを最初のk個の主成分に射影すると、k次元表現が得られる。最初のk個の成分によって説明される総分散の割合は、それらの固有値の合計を全固有値の合計で割ったものである。この量は、スクリープロットや95%の分散保持などの閾値を使用して、kの選択を導く。
機械学習における応用
機械学習パイプラインでは、PCAはモデルを訓練する前に特徴量の数を減らすために頻繁に使用される。高次元データセットは次元の呪いに悩まされ、過学習や計算コストの増加につながる可能性がある。データを低次元部分空間に射影することで、PCAはモデルの汎化を改善し、訓練を高速化できる。これは、生の画素強度が高度に相関する画像処理や、数千の遺伝子の発現レベルが同時に測定されるゲノミクスなどの分野で特に一般的である。
PCAはまた、可視化ツールとしても機能する。データを最初の2つまたは3つの主成分に射影することで、研究者は高次元データを2次元または3次元でプロットし、クラスター、外れ値、その他の構造を明らかにできる。これは、ニューラルネットワーク分類器などのより複雑な手法を適用する前の探索的分析でよく使用される。
もう一つの応用はノイズ低減である。最小の固有値を持つ成分を破棄することで、PCAは主にノイズを含むと想定される方向をフィルタリングし、信号が支配的な部分空間を保持する。この原理は、1990年代にPCAが有名に適用された顔認識のための固有顔などの技術の基礎となっている。
他の手法との関係
PCAは因子分析と密接に関連しているが、その目的は異なる。PCAはデータの分散を説明することを目指すのに対し、因子分析は潜在因子を用いて共分散構造をモデル化する。PCAはまた、非類似度がユークリッド距離である場合の多次元尺度構成法(MDS)の特別な場合でもある。深層学習の文脈では、PCAはニューラルネットワーク入力の前処理ステップとして使用されることがあるが、現代の手法は学習された表現に依存することが多い。
カーネルPCAは、主成分を計算する前にカーネル関数を適用することで非線形多様体に手法を拡張し、非線形構造の捕捉を可能にする。スパースPCAやロバストPCAは、それぞれスパース性を課すか外れ値を処理する変種である。これらの拡張は、信号処理やコンピュータビジョンで利用されている。
限界と考慮事項
PCAは線形性を仮定しており、変数間の線形関係のみを捕捉できることを意味する。非線形多様体上にあるデータの場合、PCAは誤解を招く結果を生む可能性があり、可視化にはt-SNEやUMAPなどの手法が好まれることが多い。PCAはまた、変数のスケーリングに敏感であり、標準化なしでは、より大きな分散を持つ変数が成分を支配する。したがって、PCAを適用する前に各変数を単位分散に標準化することが一般的な慣行である。
主成分の解釈可能性は難しい場合があり、各成分はすべての元の変数の線形結合である。これにより、一部の応用では成分に物理的意味を割り当てることが困難になる。さらに、PCAは教師なし手法であり、クラスラベルを考慮しないため、分類に重要であるが分散が低い方向を破棄する可能性がある。
歴史的および現代的な文脈
PCAは、気象学(経験的直交関数として)や生態学など、さまざまな分野で独立に再発見されてきた。その数学的基盤は20世紀初頭に築かれ、1950年代のコンピュータの登場により、大規模データセットへの実用的な適用が可能になった。今日、PCAはデータサイエンティストのツールキットにおける標準的なツールであり、scikit-learn、R、MATLABを含むすべての主要な統計および機械学習ライブラリに実装されている。
大規模な人工知能の時代においても、PCAは深層学習モデルにおけるホワイトニングや、大規模言語モデルパイプラインにおける埋め込みの圧縮などのタスクに依然として使用されている。その単純さ、解釈可能性、計算効率により、より複雑な非線形手法が利用可能であるにもかかわらず、その継続的な関連性が保証されている。