主成分回帰(PCR)入門から実務まで:PCAによる次元削減と安定した回帰モデルの作り方

主成分回帰(Principal Component Regression: PCR)とは

主成分回帰(PCR)は、多変量回帰の一手法で、説明変数の次元削減に主成分分析(PCA)を用いてから、その得られた主成分得点に対して線形回帰を行う方法です。多重共線性が強い場合や説明変数の数が多く標本数が限られる場合に安定した予測モデルを得るために用いられます。PCRは「教師なし」の次元圧縮(PCA)と「教師あり」の回帰を組み合わせた簡潔で直観的なアプローチです。

なぜPCRを使うのか:背景と必要性

  • 多重共線性の緩和:説明変数間に強い相関があると、最小二乗法の係数推定は不安定になり分散が大きくなります。PCAで相関のある変数群を直交な主成分に変換することでこの問題を緩和できます。
  • 次元削減:説明変数の数が多い場合、過学習や計算負荷の問題が生じます。少数の主成分に絞ることでデータを簡潔に表現し、汎化性能を高めることが期待されます。
  • 視覚化・解釈:高次元データを低次元空間に写像することで、構造の把握や変数群の理解がしやすくなります(ただし、主成分自体の解釈は難しいことも多い)。

数学的定式化(簡潔な導出)

簡単に記号を定義します。説明変数行列を X(n×p)、目的変数ベクトルを y(n×1)とします。通常、各説明変数は平均中心化(および分散標準化)してから処理します。

1)PCA:Xの共分散行列(標準化後は相関行列)を固有分解すると、固有ベクトルの列からなる直交行列 W と固有値の対角行列 Λ が得られます。

Cov(X) = W Λ Wᵀ

主成分得点(スコア)は Z = X W(または特異値分解を用いて Z = U Σ)で与えられます。ここで、Z の各列は互いに直交します。

2)回帰:得られた主成分得点 Z のうち上位 k 個(説明分散が大きいもの)だけを選び、それらを説明変数として y に対して線形回帰を行います。

y = Z_k γ + ε

回帰係数 γ を求めた後、元の説明変数空間への係数は次のように変換できます。

β = W_k γ

ここで W_k は選択した k 個の主成分に対応する固有ベクトルの行列です。

具体的なアルゴリズム手順

  • データ前処理:説明変数 X の平均中心化(通常は標準化:平均0、分散1)を行う。
  • PCA 実行:X に対して PCA(固有分解や SVD)を行い、主成分得点 Z と主成分負荷量 W を得る。
  • 主成分の選択:上位 k 個の主成分を選ぶ(選択方法は後述)。
  • 回帰モデルの学習:Z_k を説明変数として y に対して線形回帰(最小二乗)を行い係数 γ を求める。
  • (必要に応じて)元の空間に戻す:β = W_k γ を使って元の変数ごとの係数を算出する。
  • 評価:交差検証などで予測性能を確認する。

主成分数 k の選び方と交差検証

k の選択は PCR の最も重要なポイントの一つです。主成分は説明変数の分散を最大化する方向を示しますが、目的変数 y に対する説明力を必ずしも最大化するわけではありません(PCA は教師なし手法だからです)。そのため、単に寄与率(累積寄与率)で決めるだけでは不十分な場合があります。

一般的な方法:

  • 累積寄与率(例:80%以上)で決定する。しかしこれは y を無視する方法。
  • 交差検証(k-fold CV)で複数の k を試し、予測誤差(MSE, RMSE)で最適な k を選ぶ。実務ではこれが推奨されます。
  • 情報量基準(AIC, BIC 等)を使うことも可能ですが、PCR 特有の扱いに注意が必要です。

標準化(スケーリング)の重要性

PCA は変数の分散に依存するため、変数スケールが異なる場合は標準化(平均0、分散1)が事実上必須です。標準化しないと分散の大きい変数が主成分に不当に大きな影響を与え、結果として回帰性能が悪化する可能性があります。

PCR の長所と短所

  • 長所
    • 多重共線性に対してロバストで、回帰係数の分散を小さくできる。
    • 次元削減により過学習を抑制し、予測精度を改善することがある。
    • 計算が比較的簡単で理解しやすい(PCA + 回帰の組合せ)。
  • 短所
    • PCA が教師なしであるため、分散の大きい方向が必ずしも y を予測する最良の方向とは限らない。重要な予測情報が低分散方向に含まれていると見落とす。
    • 主成分は元の変数の線形結合であり、解釈性が低い場合がある。
    • 正則化(リッジ・ラッソ)や部分最小二乗法(PLS)と比べると、予測性能で劣ることがある。

PCR と他手法との比較(PLS・リッジ・ラッソ)

  • PLS(部分最小二乗法):PLS は目的変数 y を用いて説明変数を同時に変換する「教師あり」の次元削減法です。したがって、PCR よりも少ない成分数で高い予測性能を示すことが多いですが、過剰適合のリスクや解釈性の問題は残ります。
  • リッジ回帰・ラッソ回帰:これらは直接説明変数に対する正則化(L2 や L1)を行い、PCR と同様に多重共線性や次元過多を扱います。リッジは係数を縮小し安定化させ、ラッソは変数選択効果もあります。PCR は変数空間を変換してから回帰する点で異なります。
  • 実務では、データの性質や目的(予測精度重視か解釈重視か)に応じて PCR, PLS, リッジ, ラッソ を比較検討することが推奨されます。

実装上の注意点と簡単な scikit-learn の流れ(概念説明)

Python の scikit-learn では、PCA と LinearRegression を組み合わせて PCR を実装します。典型的な流れは以下の通りです。

  • 1. データを train/test に分割。
  • 2. 説明変数を標準化(StandardScaler)して平均0・分散1にする。
  • 3. 標準化後の X に対して PCA を適用し、複数の k を試す。
  • 4. 各 k について、主成分得点を用いてクロスバリデーションで線形回帰を評価し、最適 k を選ぶ。
  • 5. 最終モデルを学習し、テストデータで評価する。

注意点:PCA や標準化は学習データの情報だけでフィッティングし、検証・テストには学習時に得た変換を適用する(データリークを防ぐ)こと。

解釈と係数の戻し方

PCR で得た係数 γ(主成分空間)は、元の変数空間の係数 β = W_k γ に変換できます。これにより各元の説明変数が目的変数に与える線形効果を確認できます。ただし、主成分が複数の元変数を混合するため、その解釈はしばしば直感的でないことに注意してください。また、元の変数を標準化している場合は、戻した係数を解釈する際に標準偏差や中心化の処理を考慮する必要があります。

実務的なアドバイスと落とし穴

  • 目的が純粋に予測ならば、PCR と PLS、リッジ、ラッソ等を交差検証で比較すること。
  • PCR は重要な y 関連情報を捨てやすいので、必ずクロスバリデーションで性能比較を行うこと。
  • 変数のスケーリングは必須。カテゴリ変数の扱いは適切にダミー変換するなど注意すること。
  • 主成分の寄与率だけで k を決めるのは避け、予測性能を基準に選ぶのが実務的。
  • モデルの説明性が重要な場合、主成分よりも係数の直接解釈ができる方法(ラッソ等)を検討すること。

まとめ

主成分回帰(PCR)は、PCA を用いて説明変数の次元を削減し、その上で線形回帰を行うことで多重共線性や次元過多を扱う古典的な手法です。単純で計算が容易な一方、PCA が教師なしであるために予測に重要な情報を見落とす可能性があります。したがって、PCR を採用する際は主成分数の選定を慎重に行い、PLS や正則化法と比較して選択することが重要です。

参考文献