主成分分析(PCA)は、直交変換を用いて、相関している可能性のある変数の観測値の集合を、主成分と呼ばれる線形無相関な変数の値の集合に変換する統計的手続きである。この変換は、第一主成分が可能な限り大きな分散を持つ(すなわち、データ内の変動を可能な限り多く説明する)ように定義され、各後続成分は、先行成分と直交するという制約の下で可能な限り高い分散を持つように定義される。PCAは、機械学習とデータサイエンスにおける最も基本的な手法の一つであり、探索的データ分析、次元削減、特徴抽出に使用される。
この手法は、1901年にカール・ピアソンによって導入され、後に1933年にハロルド・ホテリングによって独立に発展させられた。また、カルフネン・レーベ変換や特異値分解(SVD)とも密接に関連している。PCAは、他のアルゴリズムの前に適用されて、特徴の数を減らし、次元の呪いを緩和し、計算効率を向上させることが多い。これは線形手法であり、基礎となる構造が線形部分空間上にあることを仮定するため、高度に非線形なデータに対しては限界がある。
数学的定式化
n個の観測値とp個の変数を持つデータ行列Xが与えられたとき、PCAは、射影されたデータの分散を最大化するp個の直交ベクトル(主成分負荷量)の集合を求める。第一主成分は最大分散の方向であり、第二主成分は第一主成分と直交し、次に高い分散を捉え、以下同様に続く。数学的には、主成分はデータの共分散行列の固有ベクトルであり、対応する固有値は各成分によって説明される分散の量を示す。
計算は通常、データの中心化(各変数の平均を引く)と、必要に応じてスケーリング(標準偏差で割る)を行い、変数が比較可能であることを確保することを含む。その後、共分散行列が計算され、その固有ベクトルと固有値が求められる。あるいは、PCAは中心化されたデータ行列に対するSVDを用いて実行でき、これは特に変数の数が多い場合に数値的に安定している。
次元削減と説明される分散
PCAの主な用途の一つは次元削減である。最初のk個の主成分(kがpよりはるかに小さい場合)のみを選択することで、データをより少ない次元で表現しつつ、分散の大部分を保持できる。各成分によって説明される分散の割合は、その固有値を全固有値の合計で割った値で与えられる。一般的なヒューリスティックは、累積説明分散が95%などの閾値に達するようにkを選択することである。
この削減は、特徴の数が数千または数百万になる可能性があるゲノミクスや画像処理などの高次元設定で特に有用である。PCAは、データを2次元または3次元で可視化し、隠れた構造を明らかにし、低分散の成分(しばしばノイズに関連する)を破棄することでノイズを低減するのに役立つ。
機械学習における応用
PCAは、機械学習パイプラインの前処理ステップとして広く使用されている。これは、線形回帰やロジスティック回帰など、相関する特徴に敏感なアルゴリズムの性能を向上させることができる。また、パラメータの数を減らすことで過学習を低減するのにも役立つ。深層学習では、PCAはニューラルネットワークにデータを供給する前に特徴抽出のために使用されることがあるが、現代のネットワークは高次元入力を直接処理することが多い。
コンピュータビジョンでは、PCAは顔認識(固有顔)に使用され、各顔画像が低次元部分空間に射影される。自然言語処理では、PCAは単語埋め込みの次元を減らすために適用できる。金融では、PCAは資産収益を駆動する主要な要因を特定するために使用される。バイオインフォマティクスでは、PCAは遺伝子発現データと集団遺伝学を分析するための標準的なツールである。
他の手法との関係
PCAは因子分析と密接に関連しているが、因子分析が変数間の相関を説明する潜在因子の存在を仮定するのに対し、PCAは基礎となるモデルを仮定しない純粋に記述的な手法である点で異なる。PCAはまた、ペアワイズ距離を保存することを目的とする多次元尺度法(MDS)や、可視化によく使用される非線形手法であるt分布型確率的近傍埋め込み(t-SNE)とも関連している。
人工知能の文脈では、PCAは、非線形の低次元表現を学習するニューラルネットワークであるオートエンコーダと比較されることが多い。PCAは線形で閉形式の解を持つが、オートエンコーダは非線形構造を捉えることができるが、反復最適化を必要とする。大規模データに対しては、近似主成分を効率的に計算するためのランダム化PCAアルゴリズムが開発されている。
実用的な考慮事項と限界
PCAは、データが中心化されており、主成分が直交していることを仮定する。これは変数のスケーリングに敏感であり、特に変数が異なる単位で測定される場合には、データの標準化(zスコア正規化)が推奨されることが多い。PCAは外れ値にも敏感であり、外れ値が最大分散の方向に不釣り合いに影響を与える可能性がある。この問題に対処するために、ロバストPCAの変種が開発されている。
もう一つの限界は、PCAが線形手法であるため、非線形関係を捉えられない可能性があることである。そのような場合には、カーネルPCAや他の非線形次元削減手法がより適切かもしれない。さらに、主成分は常に解釈可能であるとは限らず、元の全変数の線形結合であるため、ドメイン固有の用語で説明するのが難しい場合がある。
ソフトウェアと実装
PCAは、ほとんどの統計および機械学習ライブラリに実装されている。Pythonでは、scikit-learnライブラリがSVDを使用するPCAクラスを提供している。Rでは、prcomp関数とprincomp関数が一般的に使用される。MATLABとJuliaにもPCA用の組み込み関数がある。非常に大規模なデータセットに対しては、Apache SparkのMLlibなどのツールが分散PCA実装を提供している。
歴史的背景と主要な貢献者
英国の数学者で統計学者であるカール・ピアソンは、1901年に「空間内の点のシステムへの最適適合線と平面について」という論文でPCAを導入した。アメリカの統計学者であるハロルド・ホテリングは、1933年にこの手法を形式化し、「主成分」という用語を作り出した。この手法は以来、多変量統計とデータ分析の基礎となっている。
1980年代と1990年代には、PCAは顔認識のための固有顔の開発により、コンピュータビジョンの分野で注目を集めた。最近では、PCAは現代の機械学習ワークフローに統合され、実質的にすべての入門データサイエンスコースで教えられている。これは依然として活発な研究分野であり、スパースPCA、ロバストPCA、確率的PCAなどの拡張がある。
結論
主成分分析は、可能な限り多くの分散を保持しながらデータの次元を削減するための強力で多用途なツールである。その単純さ、数学的な優雅さ、そして広範な適用可能性により、あらゆるデータサイエンティストや機械学習実践者のツールキットにおいて不可欠な手法となっている。線形性や特定の限界にもかかわらず、PCAは、人工知能から金融、生物学に至るまで、多くの領域でデータ探索、前処理、可視化に広く使用され続けている。