3.5 導出入力方向を使った手法(主成分回帰と部分最小二乗法)

説明変数が多すぎる問題に対して、「新しい変数を作り出す」というアプローチを学びます。

元の変数の線形結合から、少数の「意味のある方向」を抽出する主成分回帰(PCR)と部分最小二乗法(PLS)を、その幾何学的な意味とともに理解していきます。

変数が多すぎるとき、どうする?

ある患者の病気のリスクを予測したいとします。 血液検査の100項目すべてを使って予測モデルを作る。これは良いアイデアでしょうか?

実は、これが問題を引き起こすのです。

100個の入力変数(説明変数とも呼びます)があり、しかもそれらの多くは互いに相関している。 このとき、最小二乗法で回帰係数を推定しようとすると、困った問題が起きます。 係数が不安定になり、予測が信頼できなくなるのです。

前の章で学んだRidge回帰Lassoは、「係数を縮小する」ことでこの問題に対処しました。

でも、まったく別のアプローチがあります。 100個の変数をそのまま使うのではなく、新しい変数を作り出すのです。

具体的には、元の変数を組み合わせて、少数の「代表的な方向」を見つけます。 100個の変数を、たった5個の新しい変数に置き換える。 そしてその5個を使って回帰する。

これが「導出入力方向」を使った手法の基本的なアイデアです。

多次元データから少数の方向を抽出する次元削減の概念

問題は、どうやって「良い方向」を見つけるか。 ここに、2つの異なる哲学が登場します。

主成分回帰(PCR)- データの「広がり」を見る

最初のアプローチは「主成分回帰」(Principal Components Regression, PCR)です。

基本的なアイデアはシンプル。 データが最も広がっている方向を見つけ、その方向を使って回帰する。

なぜ「広がり」が重要なのでしょうか?

データ点が大きく広がっている方向には、多くの情報が含まれています。 逆に、ほとんど広がっていない方向は、ノイズにすぎないかもしれません。

主成分とは、データの分散が最大になる方向です。 第1主成分は最も分散が大きい方向。 第2主成分は、第1主成分と直交する(垂直な)方向のうち、最も分散が大きい方向。 以下同様に続きます。

2Dデータから主成分を抽出する様子

p個の変数があれば、最大p個の主成分が得られます。 でもPCRでは、最初のM個(M < p)だけを使います。

つまり、情報が少ない方向を切り捨てて、本質的な方向だけで回帰するのです。

しかし、ここで気づいたかもしれません。 この手法、予測したい値y(応答変数と呼びます)のことをまったく見ていませんね...

PCRの数式 - 新しい変数で回帰

主成分回帰の数式を見てみましょう。

まず、元のデータ行列Xを特異値分解(SVD)します。 これは行列を「方向」と「大きさ」に分解する技法です。

$$X = UDV^T$$

この式の意味を理解しましょう:

新しい変数(主成分スコア)は次のように計算されます:

$$z_m = Xv_m$$

zmは、元の変数の線形結合で作られた新しい変数です。 これを使って回帰します。

$$\hat{y}^{pcr}_{(M)} = \bar{y}\mathbf{1} + \sum_{m=1}^{M}\hat{\theta}_m z_m$$

ここで:

重要なポイントは、M = p のとき、通常の最小二乗法と同じ結果になることです。 M < p のとき、情報量の少ない方向を切り捨てることで、より安定した予測が得られます。

主成分を使った回帰のプロセス

元の変数の係数に戻すことも可能です:

$$\hat{\beta}^{pcr}_{(M)} = \sum_{m=1}^{M}\hat{\theta}_m v_m$$

部分最小二乗法(PLS)- 応答変数を「見ながら」方向を決める

Section 2の最後で予告したように、PCRには気になる点があります。

主成分回帰は「データの広がり」だけを見て方向を決めました。 でも、私たちの目的は応答変数y(予測したい値)を予測することです。 yとの関係を無視して方向を選んでいいのでしょうか?

部分最小二乗法(Partial Least Squares, PLS)は、この疑問に答える手法です。

PLSは、分散が大きいかつyとの相関が高い方向を選びます。

言い換えると、PCRは「入力だけを見て」方向を決め、 PLSは「入力と出力の両方を見て」方向を決めるのです。

PCRとPLSで選ばれる方向の違い

これにより、予測に本当に役立つ方向を優先的に抽出できます。

PLSのアルゴリズム

PLSのアルゴリズムを見てみましょう。

ステップ1:最初に、各入力変数とyの単変量相関を計算します。

$$\hat{\phi}_{1j} = \langle x_j, y \rangle$$

これは各変数がyをどれだけ予測できるかの「スコア」です。

ステップ2:このスコアで重み付けした線形結合を作ります。

$$z_1 = \sum_{j=1}^{p} \hat{\phi}_{1j} x_j$$

z₁は、yと関係が強い変数ほど大きな重みを持つ「スーパー変数」です。

ステップ3:z₁でyを回帰し、残差を計算します。

ステップ4:残った情報に対して同じ操作を繰り返し、z₂, z₃, ...を作ります。

PLSの反復的なアルゴリズムの流れ

ポイントは、各ステップでyの情報を使っていること。PCRがデータの構造だけを見るのに対し、PLSは常に「予測したいもの」を意識しています。

PCRとPLSの最適化問題としての理解

PCRPLSの違いを、最適化問題として理解してみましょう。

PCRは次の問題を解いています:

$$\max_{\alpha} \text{Var}(X\alpha) \quad \text{subject to} \quad \|\alpha\| = 1$$

「Xαの分散を最大化せよ」という問題です。 これは純粋にデータの構造だけを見ています。

一方、PLSは:

$$\max_{\alpha} \text{Corr}^2(y, X\alpha) \cdot \text{Var}(X\alpha) \quad \text{subject to} \quad \|\alpha\| = 1$$

「分散」と「yとの相関の二乗」の積を最大化せよ。 つまり、両方のバランスを取っているのです。

PCRとPLSの最適化目標の違い

直感的には:

どちらが良いかはデータ次第です。 yと関係が薄い方向に大きな分散がある場合、PLSの方が効率的です。 逆に、高分散方向がyと関係している場合、両者は似た結果になります。

Ridge回帰との関係

ここで興味深い関係があります。

PCRRidge回帰を比較してみましょう。

Ridge回帰は、すべての主成分方向を使いますが、低分散方向の係数をより強く縮小します。 これは「滑らかな」縮小です。

一方、PCRは高分散方向のM個だけを使い、残りは完全に捨てます。 これは「離散的な」選択です。

直感的には、分散が小さい方向(djが小さい)ほど縮小が強くなります。

RidgeとPCRを数式で比較すると:

$\text{Ridge: } \text{各方向の縮小係数} = \frac{d_j^2}{d_j^2 + \lambda} \quad \text{(0と1の間で滑らかに変化)}$
$\text{PCR: } \text{各方向の縮小係数} = \begin{cases} 1 & (j \leq M) \\ 0 & (j > M) \end{cases} \quad \text{(0か1のどちらか)}$

Ridgeの縮小係数は滑らかに0から1の間を取るのに対し、PCRは「使う(1)」か「使わない(0)」かの二択です。

Ridgeの滑らかな縮小とPCRの離散的選択の対比

実践的には、Ridge回帰の方がわずかに予測精度が高いことが多いです。 でもPCRやPLSは、次元削減という解釈可能なモデルを提供するという利点があります。

「5個の主成分で予測できる」という説明は、「100個の変数すべてを縮小した」より直感的かもしれません。

実践での使い分け

PCRPLS、そしてRidge回帰Lasso。 どれを使えばよいのでしょうか?

ここに実践的なガイドラインがあります。

PCRを使う場面:

PLSを使う場面:

Ridge/Lassoを使う場面:

各手法の特徴を並べた比較

多くの実証研究では、Ridge回帰が最も安定した予測精度を示します。 ただし、PCRやPLSとの差はわずかです。

重要なのは、「どの手法を使うか」より「なぜその手法を選んだか」を説明できること。 目的に合った選択が、最良の選択です。

まとめ

この章で学んだことを振り返りましょう。

導出入力方向の基本アイデア:

主成分回帰(PCR):

部分最小二乗法(PLS):

Ridge回帰との関係:

選択の指針:

高次元から低次元への変換と回帰のまとめ

次元削減という発想は、データを扱う多くの場面で登場します。 例えば、高解像度の画像をサムネイルに圧縮するとき、本質を残しつつ情報を減らしていますね。 これと同じ発想で、「少数の本質的な方向を見つける」というアイデアは、機械学習のあらゆる場面で活躍しています。