3.5 導出入力方向を使った手法(主成分回帰と部分最小二乗法)
説明変数が多すぎる問題に対して、「新しい変数を作り出す」というアプローチを学びます。
元の変数の線形結合から、少数の「意味のある方向」を抽出する主成分回帰(PCR)と部分最小二乗法(PLS)を、その幾何学的な意味とともに理解していきます。
変数が多すぎるとき、どうする?
ある患者の病気のリスクを予測したいとします。 血液検査の100項目すべてを使って予測モデルを作る。これは良いアイデアでしょうか?
実は、これが問題を引き起こすのです。
100個の入力変数(説明変数とも呼びます)があり、しかもそれらの多くは互いに相関している。 このとき、最小二乗法で回帰係数を推定しようとすると、困った問題が起きます。 係数が不安定になり、予測が信頼できなくなるのです。
前の章で学んだRidge回帰やLassoは、「係数を縮小する」ことでこの問題に対処しました。
でも、まったく別のアプローチがあります。 100個の変数をそのまま使うのではなく、新しい変数を作り出すのです。
具体的には、元の変数を組み合わせて、少数の「代表的な方向」を見つけます。 100個の変数を、たった5個の新しい変数に置き換える。 そしてその5個を使って回帰する。
これが「導出入力方向」を使った手法の基本的なアイデアです。

問題は、どうやって「良い方向」を見つけるか。 ここに、2つの異なる哲学が登場します。
主成分回帰(PCR)- データの「広がり」を見る
最初のアプローチは「主成分回帰」(Principal Components Regression, PCR)です。
基本的なアイデアはシンプル。 データが最も広がっている方向を見つけ、その方向を使って回帰する。
なぜ「広がり」が重要なのでしょうか?
データ点が大きく広がっている方向には、多くの情報が含まれています。 逆に、ほとんど広がっていない方向は、ノイズにすぎないかもしれません。
主成分とは、データの分散が最大になる方向です。 第1主成分は最も分散が大きい方向。 第2主成分は、第1主成分と直交する(垂直な)方向のうち、最も分散が大きい方向。 以下同様に続きます。

p個の変数があれば、最大p個の主成分が得られます。 でもPCRでは、最初のM個(M < p)だけを使います。
つまり、情報が少ない方向を切り捨てて、本質的な方向だけで回帰するのです。
しかし、ここで気づいたかもしれません。 この手法、予測したい値y(応答変数と呼びます)のことをまったく見ていませんね...
PCRの数式 - 新しい変数で回帰
主成分回帰の数式を見てみましょう。
まず、元のデータ行列Xを特異値分解(SVD)します。 これは行列を「方向」と「大きさ」に分解する技法です。
この式の意味を理解しましょう:
- V:主成分の「方向」を並べた行列。列ベクトル v₁, v₂, ..., vₚ が各主成分の向きを表します
- D:各方向の「重要度」を表す対角行列。大きな値ほど、その方向にデータが広がっています
- U:データ点を新しい座標系で見たときの位置を表します
新しい変数(主成分スコア)は次のように計算されます:
zmは、元の変数の線形結合で作られた新しい変数です。 これを使って回帰します。
ここで:
- M:使用する主成分の数。これは私たちが事前に決める値で、「ハイパーパラメータ」と呼ばれます(交差検証で最適な値を選びます)
- θ̂m:m番目の主成分に対する回帰係数
- zm:m番目の主成分スコア
重要なポイントは、M = p のとき、通常の最小二乗法と同じ結果になることです。 M < p のとき、情報量の少ない方向を切り捨てることで、より安定した予測が得られます。

元の変数の係数に戻すことも可能です:
部分最小二乗法(PLS)- 応答変数を「見ながら」方向を決める
Section 2の最後で予告したように、PCRには気になる点があります。
主成分回帰は「データの広がり」だけを見て方向を決めました。 でも、私たちの目的は応答変数y(予測したい値)を予測することです。 yとの関係を無視して方向を選んでいいのでしょうか?
部分最小二乗法(Partial Least Squares, PLS)は、この疑問に答える手法です。
PLSは、分散が大きいかつyとの相関が高い方向を選びます。
言い換えると、PCRは「入力だけを見て」方向を決め、 PLSは「入力と出力の両方を見て」方向を決めるのです。

これにより、予測に本当に役立つ方向を優先的に抽出できます。
PLSのアルゴリズム
PLSのアルゴリズムを見てみましょう。
ステップ1:最初に、各入力変数とyの単変量相関を計算します。
これは各変数がyをどれだけ予測できるかの「スコア」です。
ステップ2:このスコアで重み付けした線形結合を作ります。
z₁は、yと関係が強い変数ほど大きな重みを持つ「スーパー変数」です。
ステップ3:z₁でyを回帰し、残差を計算します。
ステップ4:残った情報に対して同じ操作を繰り返し、z₂, z₃, ...を作ります。

ポイントは、各ステップでyの情報を使っていること。PCRがデータの構造だけを見るのに対し、PLSは常に「予測したいもの」を意識しています。
PCRとPLSの最適化問題としての理解
PCRとPLSの違いを、最適化問題として理解してみましょう。
PCRは次の問題を解いています:
「Xαの分散を最大化せよ」という問題です。 これは純粋にデータの構造だけを見ています。
一方、PLSは:
「分散」と「yとの相関の二乗」の積を最大化せよ。 つまり、両方のバランスを取っているのです。

直感的には:
- PCR:「データが広がっている方向を使え」
- PLS:「データが広がっていて、かつyと関係がある方向を使え」
どちらが良いかはデータ次第です。 yと関係が薄い方向に大きな分散がある場合、PLSの方が効率的です。 逆に、高分散方向がyと関係している場合、両者は似た結果になります。
Ridge回帰との関係
ここで興味深い関係があります。
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やPLSは、次元削減という解釈可能なモデルを提供するという利点があります。
「5個の主成分で予測できる」という説明は、「100個の変数すべてを縮小した」より直感的かもしれません。
実践での使い分け
PCRとPLS、そしてRidge回帰やLasso。 どれを使えばよいのでしょうか?
ここに実践的なガイドラインがあります。
PCRを使う場面:
- 入力変数間の相関構造を理解したい
- 次元削減自体が目的(可視化など)
- 高分散方向が予測に有効そうなとき
PLSを使う場面:
- 入力と出力の関係を重視したい
- 高分散方向が予測に直結しないとき
- 少数の方向で効率的に予測したいとき
Ridge/Lassoを使う場面:
- 純粋に予測精度を重視するとき
- モデルの解釈より性能が重要なとき
- Lasso:変数選択が必要なとき

多くの実証研究では、Ridge回帰が最も安定した予測精度を示します。 ただし、PCRやPLSとの差はわずかです。
重要なのは、「どの手法を使うか」より「なぜその手法を選んだか」を説明できること。 目的に合った選択が、最良の選択です。
まとめ
この章で学んだことを振り返りましょう。
導出入力方向の基本アイデア:
- 多すぎる変数を、少数の「代表的な方向」に置き換える
- 元の変数の線形結合で新しい変数を作る
- その新しい変数で回帰する
主成分回帰(PCR):
- データの分散が最大の方向を使う
- 入力だけを見て方向を決める
- 高分散=重要情報という仮定
部分最小二乗法(PLS):
- 分散と応答との相関の両方を考慮
- 入力と出力の両方を見て方向を決める
- 予測に役立つ方向を優先
Ridge回帰との関係:
- Ridge:すべての方向を滑らかに縮小
- PCR:一部の方向を完全に採用/棄却
選択の指針:
- 予測精度重視 → Ridge/Lasso
- 解釈可能性重視 → PCR/PLS
- 入力構造を理解したい → PCR
- 出力との関係を重視 → PLS

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