コンテンツにスキップ

第09回: PLS 回帰と VIP スコア

資料のダウンロード

ファイル 内容
exercise.py ハンズオン演習スクリプト

ヒントの使い方

python exercise.py --hint 1            # 方向性ヒント
python exercise.py --hint 1 --level 2  # より具体的なヒント
python exercise.py --hint 1 --level 3  # コード例
python exercise.py --check             # 提出前の自己チェック

演習問題への取り組み方

  1. 下の講義ノートを読む(事前学習・2時間目安)
  2. exercise.py を実行してグラフを確認する
  3. 演習問題(5問)に取り組む
  4. python exercise.py --check で確認する
  5. exercise.py を提出する(締切は授業後1週間)

詰まったとき

# ヒントを見る
python exercise.py --hint N --level 1

# AIに質問する
python ../../ask.py "質問内容"

解決しない場合は Q&A ページの投稿フォームを使ってください。


講義ノート

1. PLS回帰とは何か

PLS(Partial Least Squares)回帰は、説明変数 X と目的変数 y の共分散を最大化する潜在変数(成分) を逐次的に抽出することで回帰モデルを構築する手法です。

通常の重回帰分析では、説明変数が多くなったり互いに相関(多重共線性)があったりすると、係数推定が不安定になります。たとえば今回のデータでは「騒音レベル」と「混雑度」が正に相関しており、両方をそのまま重回帰に投入すると係数の解釈が難しくなります。PLS回帰はこの問題を、X の情報を圧縮した潜在変数スコア T を介して回帰することで回避します。

潜在変数の構築

PLS の第1成分は、次の条件を満たす重みベクトル w を求めます。

Cov(Xw, y) を最大化する

すなわち、X の中から「y をもっともよく予測できる方向」を1本抽出します。この方向を 第1潜在変数(成分1) と呼びます。その後、第1成分の影響を X と y から除いた残差に同じ操作を繰り返し、第2成分、第3成分と抽出します。

X = T P' + E    (X = 得点 × 負荷量 + 残差)
y = T q' + f    (y = 得点 × 係数   + 残差)
  • T(X得点行列): 各サンプルの潜在変数値(何次元に圧縮したか)
  • P(X負荷量行列): 潜在変数が X のどの方向を捉えているか
  • w(X重みベクトル): 各特徴量がその潜在変数にどれだけ寄与するか

2. PCAとPLSの違い

観点 PCA PLS回帰
学習の種類 教師なし(y を使わない) 教師あり(y との関係を利用)
最大化する量 X の分散 X と y の共分散
目的 X の構造を要約する y を予測するために X を圧縮する
特徴量重要度 負荷量で解釈 VIPスコアで解釈

PCA の成分は「X のばらつきが大きい方向」を捉えますが、その方向が必ずしも y の予測に役立つとは限りません。たとえば「住所の文字数」が X の中で最も分散が大きくても、感情スコアとは無関係かもしれません。PLS は最初から「y に効く方向」を探すため、予測目的では PCA より少ない成分数で十分な精度が得られることが多いです。


3. VIPスコアの定義と解釈

VIP(Variable Importance in Projection)スコアは、「各特徴量がPLSモデル全体にどれだけ貢献しているか」を1つの数値で表す指標です。

計算式

\[\text{VIP}_j = \sqrt{\frac{p \cdot \sum_{k=1}^{K} \left( w_{kj}^2 \cdot R^2_k \right)}{R^2_{\text{total}}}}\]
  • \(p\):特徴量の総数
  • \(w_{kj}\):第 \(k\) 成分における特徴量 \(j\) の正規化済みX重み
  • \(R^2_k\):第 \(k\) 成分が y の分散を説明する割合
  • \(R^2_{\text{total}}\):全成分の \(R^2\) の合計

この式が意味するのは、「y をよく説明する成分(\(R^2_k\) が大きい)に、強く関与している特徴量(\(w_{kj}^2\) が大きい)ほど VIP が高くなる」ということです。VIPスコアは全特徴量の二乗平均が 1 になるよう設計されているため、VIP > 1 の特徴量を「重要」と判断する のが一般的な経験則です。

解釈の目安

VIPスコア 解釈
> 1.0 重要な特徴量(モデルに明確に寄与)
0.8 〜 1.0 中程度の寄与
< 0.8 寄与が小さい(除外を検討)

本講義データでの期待結果

幸福感スコア(happiness_score)を目的変数とした場合、データ生成の仕組みから次のような順位が期待されます。

  • 緑化率(green_ratio): 強い正の効果 → VIP 高
  • 騒音レベル(noise_level): 負の効果 → VIP 高
  • 混雑度(crowd_density): 負の効果 → VIP 中〜高
  • 気温(temperature): 小さな効果 → VIP 中
  • PM2.5: 間接的効果 → VIP 低〜中

この順位が実際の計算結果と一致するか確認するのが演習の出発点です。


4. モデルの成分数の選び方

成分数 K をいくつにするかは、PLS回帰で最も重要なハイパーパラメータです。

  • K が少なすぎる: y の変動を捉えきれず、精度が低い(過小適合)
  • K が多すぎる: ノイズまで学習してしまい、汎化性能が下がる(過学習)

実用的には、交差検証(cross-validation)で各成分数の予測誤差を比較し、RMSE が最小になる K を選びます。また「Scree Plot」のように成分を増やしても R² の改善がほぼなくなる「肘」の点を目安にする方法もあります。第10回では交差検証を詳しく扱います。


5. まとめと次回への接続

今回のポイントを整理します。

  1. PLS回帰は多重共線性がある多変量データに有効で、X と y の共分散を最大化する潜在変数を抽出する。
  2. VIPスコアは各特徴量のモデル全体への寄与度を数値化し、「VIP > 1 が重要」という解釈指針がある。
  3. PCAとの本質的違いは「教師なし(分散最大化)vs 教師あり(共分散最大化)」にある。

次回(第10回)は、PLS-DA(PLS判別分析) を使って「穏やかな場所 vs 活発な場所」を分類し、交差検証でモデルの汎化性能を評価します。過学習の可視化と混同行列・ROC曲線を扱います。


参考文献・リソース

  • Wold, S., Sjöström, M., & Eriksson, L. (2001). PLS-regression: a basic tool of chemometrics. Chemometrics and Intelligent Laboratory Systems, 58(2), 109–130.
  • scikit-learn ドキュメント: sklearn.cross_decomposition.PLSRegression
    https://scikit-learn.org/stable/modules/generated/sklearn.cross_decomposition.PLSRegression.html
  • Chong, I.-G., & Jun, C.-H. (2005). Performance of some variable selection methods when multicollinearity is present. Chemometrics and Intelligent Laboratory Systems, 78(1–2), 103–112.