Tunny Icon
TunnyDocs

The next-gen Grasshopper optimization tool.

Ridge

概要

Ridge 回帰は、線形モデルに L2 正則化を加えた手法で、各パラメータの係数を使って感度を評価します。 入力列を標準化してから係数を求めることで、単位もレンジも異なるパラメータどうしで係数の大きさをそのまま比べられます。 Tunny Dashboard の Importance チャートでは、目的関数ごとに学習した Ridge の係数の絶対値 βj|\beta_j| を重要度スコアとして表示します。

  • 係数の符号:目的関数を増やす方向か、減らす方向か
  • 係数の絶対値:影響の強さ(感度)

Ridge は法方程式を 1 度解くだけで係数が求まるため、Spearman と同じく軽量です。 たとえばパラメータが 20 個あっても、解くのは 20 × 20 の連立方程式 1 つで済みます。 そのため、RF-ANOVA / SHAP / Sobol といった重い手法を回す前の一次スクリーニングに向いています。

数式

標準化済み入力行列を XRn×pX \in \mathbb{R}^{n \times p}、目的変数を yRny \in \mathbb{R}^{n} とします。 まず yy を中心化して yc=yyˉy_c = y - \bar y を作ります。

Ridge の係数は次式で求めます:

β=(XTX+αI)1XTyc\beta = (X^T X + \alpha I)^{-1} X^T y_c

  • α\alpha:正則化強度(Tunny Dashboard では 1.0)
  • II:単位行列

予測値(中心化空間):

y^c=Xβ\hat y_c = X\beta

決定係数:

R2=1i(yc,iy^c,i)2iyc,i2R^2 = 1 - \frac{\sum_i (y_{c,i} - \hat y_{c,i})^2}{\sum_i y_{c,i}^2}

数値安定のため R2R^2 は下限 0 にクリップしています。

前処理とホールドアウト評価

前処理と評価の規約は、RF-ANOVA / MDI / SHAP / PFI と統一されています。 以前は Ridge だけが学習データ上の in-sample R² を報告していたため、ほかの手法の R² バッジと並べたときに過大評価になっていました。 現在は学習に使っていない評価データの上でのみ R² を計算することで、手法をまたいで R² を見比べられるようにしています。

flowchart TD
    data["実際のトライアルデータ<br/>(X ∈ R^{N×P}, y ∈ R^N)"] --> step1["Step 1: NaN/Inf を含む行を除外<br/>(x または y のいずれかが非有限な行は<br/>学習・評価どちらにも使わない)"]
    step1 --> step2["Step 2: 80/20 ホールドアウト分割<br/>(Fisher-Yates シャッフル後に分割、シード 42/43)"]
    step1 -- "有効行 < 2" --> zero["全パラメータの重要度 0、<br/>R² = 0.0 を返す"]
    step2 -- "有効行 ≥ 4" --> split1["先頭 80% を訓練データ、<br/>残り 20% を評価データ"]
    step2 -- "有効行 < 4" --> split2["全データを訓練・評価両方に使う<br/>(フォールバック)"]
    split1 --> step3["Step 3: 標準化・中心化は TRAIN データの<br/>平均・標準偏差のみで行う<br/>(EVAL データも同じ TRAIN 由来の<br/>統計量で変換してから評価する)"]
    split2 --> step3
    step3 --> step4["Step 4: 法方程式<br/>(X_train^T X_train + αI)β = X_train^T y_{c,train}<br/>を解く"]
    step4 --> step5["Step 5: R² は EVAL データ上でのみ計算する<br/>(学習に使っていないデータで評価)"]

Ridge は法方程式を閉形式で解くため計算コストが軽く、RF-ANOVA / MDI / SHAP / PFI のような行数上限(2,000 行など)は設けていません。 行を間引かずに全トライアルを使えるので、ダウンサンプリングの当たり外れで結果が変わる心配がありません。

計算フロー(要約)

  1. パラメータ列を取得し、NaN/Inf を含む行を除外します
  2. 80/20 でシャッフル分割します(データが少なすぎる場合は全データを訓練と評価の両方に使います)
  3. TRAIN データの平均と標準偏差で標準化し、TRAIN の yy 平均で中心化します(EVAL にも同じ統計量を適用)
  4. 法方程式 (XtrainTXtrain+αI)β=XtrainTyc,train(X_{\text{train}}^TX_{\text{train}} + \alpha I)\beta = X_{\text{train}}^Ty_{c,\text{train}} を解きます
  5. R2R^2 は EVAL データ上で計算し、 β\beta とともに返します
  6. UI では β|\beta| を棒グラフにして表示します

重要度表示の定義

Importance チャートの Ridge 重要度は次で定義されます:

scorej=βj\mathrm{score}_j = |\beta_j|

したがって、Ridge は「線形近似したときに、そのパラメータがどれだけ効くか」を示す指標です。

R² の解釈

  • R20.8R^2 \ge 0.8: 線形近似として十分に良好
  • 0.5R2<0.80.5 \le R^2 < 0.8: 参考には使えるが、非線形の可能性あり
  • R2<0.5R^2 < 0.5: 線形モデルでは説明不足。RF-ANOVA / SHAP / Sobol の併用を推奨

R² が低いときは、係数の大小を比べる前に、線形近似そのものが成り立っているかを疑ってください。 当てはまっていないモデルの係数を並べても、それは「直線で無理に近似したときの傾き」を比べているにすぎないためです。

強みと限界

強み:

  • 高速(行数上限を設けずに全トライアルを使える)
  • L2 正則化により多重共線性にある程度強い
  • 係数の符号と大きさで説明しやすい

限界:

  • 非線形、しきい値、強い交互作用を直接は表現できない
  • 係数の大きさが表すのは、あくまで線形近似の範囲での感度
  • 相関の強い説明変数間では係数の分配が不安定になる場合がある

限界の 3 つめは、実務でもっともつまずきやすいところです。 たとえば全長を固定したうえで、パネルの幅と枚数の両方をパラメータにしたとします。 このとき片方が決まればもう片方もほぼ決まるため、2 つの列はほとんど同じ情報を持つことになります。 このとき係数は両者に分配されるため、どちらか一方だけが重要に見えたり、両方が中位に沈んだりすることがあります。 係数の順位が試行のたびに入れ替わって落ち着かないときは、Spearman と見比べて相関の強い組がないか確認してください。

使いどころの目安

  • まず軽量に重要パラメータを絞り込みたいとき
  • 近似的に線形関係が支配的と考えられるとき
  • Spearman だけでは方向や寄与の線形解釈が不足するとき

実務では、Ridge で一次スクリーニングし、非線形が疑われる場合に RF-ANOVA / SHAP / Sobol へ進む運用が扱いやすいです。 Ridge の係数はあくまで線形近似の傾きなので、順位そのものより「符号が設計の直感と合っているか」を先に確かめるほうが、次に何を調べるべきかを決めやすくなります。

参考文献