Tunny Icon
TunnyDocs

The next-gen Grasshopper optimization tool.

MDI

概要

MDI(Mean Decrease Impurity、不純度平均減少量)は、Random Forest の学習過程で記録される分岐の品質からパラメータ重要度を算出する手法です。 各パラメータが分岐に使われるたびに、そのノードでの不純度減少量(MSE 削減量)を加算し、全木にわたって平均します。

値は合計が 1 になるよう正規化されます。

RF-ANOVA(fANOVA)との違い

比較軸 MDI RF-ANOVA
測定タイミング 学習中(木構築時に記録) 学習後(葉ボックス上の分散分解)
計算コスト 木 1 本あたり O(N·P·D) 木構築 + 木ごとの分散分解(葉数に依存)
バイアス 高カーディナリティ特徴量に過大評価傾向あり 交互作用を単一パラメータの主効果には帰属しない
解釈 "学習時にどれだけ役立ったか" "目的関数の分散のうち、このパラメータの主効果で説明できる割合"

数式

ノード不純度減少量

ノード tt での不純度減少量 ΔI(t)\Delta I(t) を次で定義します:

ΔI(t)=MSE(yt)[nLntMSE(yL)+nRntMSE(yR)]\Delta I(t) = \mathrm{MSE}(y_t) - \left[\frac{n_L}{n_t}\mathrm{MSE}(y_L) + \frac{n_R}{n_t}\mathrm{MSE}(y_R)\right]

ここで:

  • yty_t:ノード tt のサンプルの目的値
  • yL,yRy_L, y_R:左・右の子ノードに分かれたサンプルの目的値
  • nt,nL,nRn_t, n_L, n_R:それぞれのサンプル数( nt=nL+nRn_t = n_L + n_R
  • MSE(y)=1ni(yiyˉ)2\mathrm{MSE}(y) = \frac{1}{n}\sum_i (y_i - \bar{y})^2

木あたりの MDI

bb におけるパラメータ jj の MDI は、そのパラメータを使ったすべての分岐ノードに対して、サンプル割合で重み付けした ΔI\Delta I の総和です:

MDIb(j)=tb分岐特徴量=jntnrootΔI(t)\mathrm{MDI}b(j) = \sum{\substack{t \in \text{木} b \ \text{分岐特徴量}=j}} \frac{n_t}{n_{\mathrm{root}}} \cdot \Delta I(t)

  • nrootn_{\mathrm{root}}:木 bb のルートノードのサンプル数(ブートストラップサンプルのサイズ)

Random Forest での平均・正規化

TT 本の木にわたって平均し、合計が 1 になるよう正規化します:

MDI(j)=1Tb=1TMDIb(j)\mathrm{MDI}(j) = \frac{1}{T}\sum_{b=1}^{T} \mathrm{MDI}_b(j)

MDI~(j)=MDI(j)jMDI(j)\widetilde{\mathrm{MDI}}(j) = \frac{\mathrm{MDI}(j)}{\sum_{j'} \mathrm{MDI}(j')}


計算の流れ

  1. 前処理。 NaN/Inf を含む行は除外します。行数が 1,000 を超える場合はランダムサンプリングで 1,000 行に削減します。
  2. ホールドアウト分割。 シャッフル後、80% を訓練データ、20% を評価データとします(N < 4 の場合は全データを訓練と評価の両方に使います)。
  3. Random Forest の学習。 訓練データで 64 本の回帰木からなる Random Forest を学習します(行と特徴量のサブサンプリング率はいずれも 0.8)。
  4. MDI(gain)重要度の算出。 学習済みモデルから、各分岐の不純度減少量の総和(gain ベース重要度)を取得し、合計が 1 になるよう正規化します。
  5. R² の計算。 重要度の算出に使ったのと同じモデルで評価データを予測し、決定係数 R² を求めます。

重要度と R² は同一のモデルから算出されるため、R² は「その重要度を出したモデルがどれだけ目的関数を説明できているか」を表す信頼度指標として使えます。

ハイパーパラメータ

パラメータ RF-ANOVA との比較
木の本数 64 ✓ RF-ANOVA も 64 本
最大深さ 10 ✓ 同じ
最小リーフサンプル 2 ✓ 同じ
乱数シード 42 ✓ 同じ
最大行数 1,000 RF-ANOVA は 2,000

R² の解釈

MDI の R² は、重要度を算出したのと同じランダムフォレストの、ホールドアウトデータ上の決定係数を表します:

R2=1i(yiy^i)2i(yiyˉ)2R^2 = 1 - \frac{\sum_i (y_i - \hat{y}_i)^2}{\sum_i (y_i - \bar{y})^2}

  • R20.8R^2 \geq 0.8(緑): モデルの当てはまりが良好です。重要度の信頼性が高いです
  • 0.5R2<0.80.5 \leq R^2 < 0.8(黄): やや低めです。参考程度として扱います
  • R2<0.5R^2 < 0.5(赤): モデルが目的関数を説明できていません。重要度の信頼性が低いです

注意事項と既知のバイアス

高カーディナリティ特徴量への過大評価

MDI は連続値パラメータや取りうる値が多いカテゴリ特徴量に対して、分岐候補が多いぶん重要度を過大評価する傾向があります(Breiman ら, 2001 が指摘)。 取りうる値が少ないパラメータと比較するときは注意が必要です。

代替手法

  • 過大評価が懸念される場合は RF-ANOVA(fANOVA)を使います。RF-ANOVA は葉ボックス上の分散分解によって主効果を測定するため、カーディナリティバイアスが少ないです。
  • Sobol 指標は大域的感度を分散分解で定量化しますが、計算コストが高いです。

計算コストの目安

試行数 N MDI 計算時間の目安
50〜200 < 200ms
1,000 < 500ms
2,000+ < 1,000ms(1,000 行にダウンサンプリング)

MDI は Random Forest を 1 回学習するだけで、重要度(gain)と R² の両方を同じモデルから取得します。 計算コストを考慮して最大行数を 1,000 に抑えています。


参考文献