第12回 PLS①:共分散最大化による予測と次元削減¶
本日の到達目標¶
- PLSの目的関数(共分散最大化)を数式で説明できる
- PCAと重回帰の中間的な位置づけとして PLS を理解できる
- 多重共線性のある説明変数群での重回帰の不安定性と、PLSによる対処を説明できる
- 発展:共分散を最大化する方向が \(\mathbf{w} \propto \mathbf{X}^T\mathbf{y}\) になることを導き、PCA が向く方向と違う理由を説明できる
1. 重回帰が不安定になる状況の整理¶
1.1 多重共線性の再確認(第7回の復習)¶
時間窓特徴量を多数作ると必然的に共線性が生じる:
| 変数ペア | 相関 |
|---|---|
| MA7日 & MA14日 | ~0.95 |
| MA14日 & MA30日 | ~0.90 |
| ラグ1 & ラグ2 | ~0.88 |
OLS の不安定性:\((\mathbf{X}^T\mathbf{X})^{-1}\) がほぼ特異行列になり、係数の分散が爆発する
1.2 PCAによる代替(第8・9回)とその限界¶
PCA後の重回帰(PCR:Principal Component Regression): - 共線性問題は解決できる(主成分は直交) - 欠点:PCAは \(y\)(目的変数)を考慮せずに \(X\) の分散を最大化する
2. PLS の目的関数:共分散最大化¶
2.1 目的関数の定義¶
PLS(Partial Least Squares):\(X\) の線形結合 \(\mathbf{t} = \mathbf{X}\mathbf{w}\) と \(y\) の線形結合 \(u = \mathbf{y}\mathbf{q}\) の共分散を最大化する方向を求める。
制約:\(\|\mathbf{w}\| = 1\)、\(\|\mathbf{q}\| = 1\)(単純化した形)
直観:\(X\) の線形結合 \(\mathbf{t}\)(Xスコア)が \(y\) と最も強く共変動する方向を求める
導出①:共分散を最大にする方向は \(\mathbf{X}^T\mathbf{y}\) そのものである
NIPALS のステップ2に \(\mathbf{w} = \mathbf{X}^T\mathbf{u}/\|\mathbf{X}^T\mathbf{u}\|\) という式が唐突に出てきますが、これは最大化問題を解いた結果です。
\(\mathbf{y}\) が1列の場合(\(q = 1\))で考えます。\(\mathbf{X}\)、\(\mathbf{y}\) は中心化済みとすると、最大化したいのは
ここで \(\mathbf{a} = \mathbf{X}^T\mathbf{y}\) とおくと、最大化するのは単なる内積 \(\mathbf{w}^T\mathbf{a}\) です。\(\mathbf{a}\) は動かせない既知のベクトル、\(\mathbf{w}\) は長さ1の向きだけが自由です。
コーシー・シュワルツの不等式より
等号が成り立つのは \(\mathbf{w}\) が \(\mathbf{a}\) と同じ向きのときだけです。したがって
内積を最大にするには、相手と同じ方向を向けばよい。 それだけのことです。\(\mathbf{X}^T\mathbf{y}\) の第 \(j\) 成分は \(x_j\) と \(y\) の共分散に比例するので、\(y\) と強く共変動する変数ほど重みが大きい重みベクトルになっています。
\(\mathbf{y}\) が複数列のとき \(\mathbf{q}\) も同時に決める必要があり、一度では解けません。そこで \(\mathbf{w}\) と \(\mathbf{q}\) を交互に更新するのが NIPALS の反復です。
使った数学:内積、コーシー・シュワルツの不等式。
2.2 3手法の目的関数の比較¶
| 手法 | 目的関数 | 使うのは |
|---|---|---|
| 重回帰(OLS) | \(RSS = \|\mathbf{y} - \mathbf{X}\boldsymbol{\beta}\|^2\) を最小化 | \(\mathbf{y}\) と \(\mathbf{X}\) |
| PCA | \(\text{Var}(\mathbf{X}\mathbf{w})\) を最大化 | \(\mathbf{X}\) のみ |
| PLS | \(\text{Cov}(\mathbf{X}\mathbf{w},\ \mathbf{y}\mathbf{q})\) を最大化 | \(\mathbf{X}\) と \(\mathbf{y}\) の両方 |
導出②:分散が大きい方向と、\(y\) に効く方向は別物である
「PCA は \(y\) を無視する」という指摘は、方向ベクトルを並べると一目で分かります。
- PCA:\(\mathbf{X}^T\mathbf{X}\) の最大固有ベクトル(第8回の導出②)。式に \(\mathbf{y}\) が入っていません。
- PLS:\(\mathbf{X}^T\mathbf{y}\) 方向(導出①)。\(\mathbf{y}\) が入っています。
この2つは一致する必然性がありません。分散が大きいことと、\(y\) の予測に役立つことは、別の性質だからです。
数値で確かめる:\(n = 100\) の人工データを作りました。第1変数の散らばりを第2変数の3倍にし、目的変数は \(y = 2x_2 + \varepsilon\)(\(\varepsilon\) は小さな雑音)として、\(y\) は散らばりの小さい方の変数だけから作りました。
| 第1成分の方向 | スコアと \(y\) の相関 | |
|---|---|---|
| PCA | \((0.9987,\ 0.0519)\) | \(-0.1668\) |
| PLS | \((0.4149,\ 0.9099)\) | \(0.6621\) |
PCA の第1主成分は、散らばりの大きい第1変数をほぼ100%向いています。ところが \(y\) と関係しているのは第2変数なので、その主成分スコアは \(y\) とほとんど相関しません。PLS は第2変数を重く見る方向を選び、\(y\) との相関を確保しています。
PCR(PCA後の重回帰)の弱点がこれです。 上位の主成分を選ぶ基準が \(\mathbf{X}\) の分散なので、\(y\) と無関係な方向が先に選ばれ、予測に使える成分が後回しになることがあります。第8回で「寄与率80%で打ち切る」と学びましたが、その80%は\(\mathbf{X}\) の情報の80%であって、\(y\) の予測力の80%ではありません。
なお第14回で見るように、PLS は \(\mathbf{X}^T\mathbf{y}\mathbf{y}^T\mathbf{X}\) の固有ベクトルを求める問題とも書けます。\(\mathbf{y}\) で重み付けした共分散行列に対する PCA、と読むこともできます。
使った数学:共分散の定義、方向ベクトルの比較。
【カードに記入・3分】:PCR(PCA後の重回帰)と PLS を比較して、\(y\) の予測に有利なのはどちらか、その理由とともに説明してください。
3. PLSアルゴリズム(NIPALS法)¶
3.1 第1成分の抽出¶
NIPALS(Nonlinear Iterative Partial Least Squares)の概略:
- \(\mathbf{u}\) を初期化(例:\(\mathbf{y}\) の最初の列)
- \(\mathbf{w} = \mathbf{X}^T \mathbf{u} / \|\mathbf{X}^T \mathbf{u}\|\)(X-ウェイト:\(\mathbf{X}\) と \(\mathbf{u}\) の共分散を最大化する方向)
- \(\mathbf{t} = \mathbf{X}\mathbf{w}\)(X-スコア)
- \(\mathbf{q} = \mathbf{y}^T \mathbf{t} / \|\mathbf{y}^T \mathbf{t}\|\)(Y-ウェイト)
- \(\mathbf{u} = \mathbf{y}\mathbf{q}\)(Y-スコア)
- ステップ2に戻り収束まで繰り返す
3.2 デフレーション(次成分の抽出)¶
第1成分が抽出されたら、\(\mathbf{X}\) と \(\mathbf{y}\) からその影響を取り除く(デフレーション):
デフレーション後の \(\mathbf{X}_2\) に対して同じ操作を繰り返し、第2成分、第3成分を抽出。
導出③:デフレーションは「回帰の残差を取る」操作である
デフレーションの式 \(\mathbf{p} = \mathbf{X}^T\mathbf{t}/\mathbf{t}^T\mathbf{t}\) を見ると、第6回で出てきた形をしています。これは \(\mathbf{X}\) の各列を \(\mathbf{t}\) に単回帰したときの係数です(第6回の導出②の \(\hat{\beta}_j = \mathbf{r}_j^T\mathbf{y}/\mathbf{r}_j^T\mathbf{r}_j\) と同じ形)。
したがって \(\mathbf{t}\mathbf{p}^T\) は「\(\mathbf{t}\) で説明できる部分」、\(\mathbf{X}_2 = \mathbf{X}_1 - \mathbf{t}\mathbf{p}^T\) はその残りです。
この \(\mathbf{X}_2\) が \(\mathbf{t}\) と直交することを確かめます。
きれいに消えます。次の成分 \(\mathbf{t}_2 = \mathbf{X}_2\mathbf{w}_2\) は \(\mathbf{X}_2\) の列の組み合わせなので、必ず \(\mathbf{t}\) と直交します。
ここが PLS が共線性に強い理由です。 成分同士が直交していれば、成分を説明変数とする回帰では \((\mathbf{T}^T\mathbf{T})\) が対角行列になり、第7回で問題になった「逆行列がほぼ特異」という状況が起きません。元の変数がどれだけ似ていても、取り出した成分は重ならないよう作られています。
やっていることは第6回の導出②とまったく同じ、「すでに説明した分を引いて、残りだけを次に回す」という操作です。重回帰では他の変数の影響を除くために使い、PLS では成分を直交させるために使っています。
使った数学:直交射影と残差(第6回と同じ考え方)。
3.3 PLS のパラメータ¶
成分数 \(A\):抽出する PLS 成分の数(k-means での \(k\) に相当) - 少なすぎると説明力不足(underfitting) - 多すぎると過適合(overfitting) - 交差検証で選ぶ(第13回で詳述)
4. 重回帰・PCA・PLS の比較¶
4.1 予測の観点¶
| 手法 | 共線性への対処 | \(y\) を考慮した次元削減 | 解釈のしやすさ |
|---|---|---|---|
| 重回帰(OLS) | ✗(VIF問題) | — | 高い(係数直接解釈) |
| 主成分回帰(PCR) | ✓ | ✗ | 中(主成分の意味付けが必要) |
| PLS | ✓ | ✓ | 中(VIPスコアで変数重要度を把握) |
| Ridge/Lasso | ✓ | ✗ | 中〜低(正則化の強さに依存) |
4.2 どのような場面でPLSを選ぶか¶
- \(p > n\)(変数数が観測数より多い)
- 説明変数間に強い多重共線性がある
- 予測精度と解釈可能性(VIPスコア)の両方が欲しい
- 化学計量学、食品科学、スペクトル分析 等
5. 時間窓特徴量との関係¶
典型的な状況:
時間窓特徴量(X):
MA7日, MA14日, MA30日 ← 高い相関
ラグ1, ラグ2, ラグ3 ← 高い相関
頻度7日, 頻度30日 ← 相関あり
目的変数(y): 次週の売上
→ OLS: VIF 爆発 → 係数推定が不安定
→ PCA: X の分散を最大化 → y との関係が希薄な成分が先に来る可能性
→ PLS: X と y の共分散を最大化 → 予測に直接関係する成分が先に来る
6. 基盤リンクの整理¶
| 基盤概念 | 本回での役割 | 具体的な使い方 |
|---|---|---|
| 列指向 | 高次元X(時間窓特徴量等)を列単位で扱いながら成分計算 | NIPALSの各ステップで必要な列を読み出す |
| 整合性 | 学習/検証の切り方を固定し比較 | 成分数 A の選択のための CV 設計 |
| DAG | 前処理→PLS→検証の流れを固定 | 成分数を変えた実験をDAGで管理 |
| 近似 | 成分数探索を軽量検証で素早く回す | 第13回の交差検証で詳述 |
7. 本日のまとめ¶
- PLSの目的関数は「XスコアとYスコアの共分散最大化」
- PCA(\(X\) の分散最大化)と重回帰(\(y\) への当てはまり最小化)の中間的位置づけ
- NIPALSアルゴリズムで順次成分を抽出し、デフレーションで残差を取り出す
- 時間窓特徴量のような共線性の高い説明変数群では PLS が重回帰より安定する
次回予告¶
第13回では PLS②:VIPスコアによる変数重要度の評価と交差検証による予測性能の検証。
解釈可能性と汎化性能のバランスをどう取るかを学ぶ。
事後課題¶
以下の問いに答えること(A4 半枚):
- PLS の「共分散最大化」と PCA の「分散最大化」の違いを図または数式を使って説明してください。特に「\(y\) を考慮するかどうか」という点に注目してください。
- \(p \gg n\)(例:変数1000個・観測100個)のとき、OLS が直接使えない理由を行列の観点から説明してください。PLSはなぜこの場合でも使えるのでしょうか。