Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Explainable Boosting Machine / GA2M

Explainable Boosting Machine (EBM) はtree-basedの一般化加法モデル(generalized additive model: GAM)を改良したもので、特徴は

  • GAM由来の解釈性の高さ

  • GAMより高精度:交互作用項を含む & shape function/base learnerがGBDT

  • 交互作用項の推定を高速化する工夫がとられている

なおEBM(Nori et al., 2019)はGA2^2M(Lou et al., 2013)の実装を並列可能にして高速化したもの。

モデル

一般化線形モデル(Generalized Linear Model: GLM)

g(E[y])=β0+βixig(E[y]) = \beta_0 + \sum \beta_i x_i

線形回帰モデルなどを一般化した一般化線形モデルは各特徴量からの寄与度βi\beta_i が明示的で、解釈性が高い。しかし線形モデルゆえにモデルの柔軟性が低く、非線形な構造のデータへの説明性に難がある。

一般化加法モデル(generalized additive model: GAM, Hastie & Tibshirani 1986

そこで線形回帰モデルを一般化したGAMが提案された。

g(E[y])=β0+fi(xi)g(E[y])= \beta_0 + \sum f_i(x_i)

しかしGAMには交互作用項がないため、2変数間の交互作用を捉えられない(例えば不動産価格推定で、「緯度x経度」という交互作用は立地を表すのに有効だが、GAMだと考慮できない)。

Generalized Additive Model plus Interactions (GA2^2M, Lou et al., 2013)

そこで、GAMに交互作用項を追加した

g(E[y])=β0+fi(xi)+fi,j(xi,xj)g(E[y])=\beta_0+\sum f_i(x_i)+\sum f_{i, j}(x_i, x_j)

というモデルを Generalized Additive Model plus Interactions (GA2^2M) という。

GA2^2MやEBMは伝統的なGAMからの進化点として

  1. 特徴関数(feature function)fif_iにbaggingや勾配ブースティングを使用する

  2. 予測に有用な交互作用項 fi,j(xi,xj)f_{i,j}(x_i,x_j) の検知をする、「FAST」というアルゴリズムを備える

という特徴がある。

GA2MGA^2Mのアルゴリズム

GAMの主要なアルゴリズムには

  1. backfitting

  2. gradient boosting

がある。GA2MGA^2Mではgradient boostingを採用し、勾配(残差など)を近似するように学習させる

記号の意味(notation)

以下で使う記号をまとめておく

  • nn:特徴量の次元数

  • u{1,,n}u \subseteq \{ 1, \dots, n \}:特徴量のインデックスの集合

    • x=(x1,,xn)\boldsymbol{x} = (x_1, \dots, x_n):特徴量ベクトル

    • xu\boldsymbol{x}_uuuに含まれるインデックスの特徴量だけの特徴量ベクトル

  • U\mathcal{U}:すべての特徴量とそのペアのインデックス集合

    • U1={{i}1in}\mathcal{U}^1=\{\{i\} \mid 1 \leq i \leq n\}

    • U2={{i,j}1i<jn}\mathcal{U}^2=\{\{i, j\} \mid 1 \leq i<j \leq n\}

    • U=U1U2\mathcal{U}=\mathcal{U}^1 \cup \mathcal{U}^2

  • Hu\mathcal{H}_u:ルベーグ可測な関数fu(xu)f_u(x_u)のヒルベルト空間

    • H1=uU1Hu\mathcal{H}^1=\sum_{u \in \mathcal{U}^1} \mathcal{H}_u: 単変量成分に対して加法形 F(x)=uU1fu(xu)F(\boldsymbol{x})=\sum_{u \in \mathcal{U}^1} f_u\left(x_u\right) をもつ関数のヒルベルト空間

    • なお、これらの成分 fuf_ushape functions と呼ぶ。

Two-stage Construction

GA2^2M全体の構築は2段階に行う。

交互作用項モデルf(xi,xj)\sum f(x_i, x_j)はすべての組み合わせを入れるのではなく、予測性能の高い交互作用項のみで行う。予測性能の評価は計算量が高くなりがちで難しい問題なので、FAST(提案手法)で高速な近似計算を行う。

交互作用検出アルゴリズム

2次の交互作用項は、その組み合わせ数の多さから計算量が非常に大きくなる。

また、有効な交互作用項の検出・選別方法については先行研究がいくつかあるが、一度モデルをfittingさせる必要があるものが多く、計算量や精度の課題がある。

先行研究

手法概要問題点
ANOVA全ペアワイズ交互作用項を含む加法モデルをフィット後、分散分析で有意性を検定フルモデルの計算コストが膨大
偏依存関数(PDF)Friedman & Popescu提案の統計量 Hij2H^2_{ij} で交互作用強度を測定低密度領域で偽の交互作用を検出する可能性
GUIDEカイ二乗検定による交互作用検出FASTより検出力が低い
Grove制約モデルと非制約モデルのRMSE差で交互作用強度を定量化計算コストが極めて高い(数日単位)

合成データによる実験では Grove と ANOVA が最も正確で、提案手法 のFAST はそれにほぼ匹敵する検出精度だった

FAST(提案手法)

概要 / naive fast

交互作用項 fij(xi,xj)f_{ij}(x_i,x_j) を(GBDT等で)完全に推定するのは計算コストが高い。そのため、 きわめてシンプルなtreeモデルTijT_{ij}で交互作用項の効果を概算する。

  1. まず、2つの変数xi,xjx_i,x_jのそれぞれの軸に平行なcutoff点 ci,cjc_i, c_jをつくり、xi,xjx_i, x_jの2次元の特徴空間を4象限に区切る。

  2. 各象限内のデータ点の平均をとって予測値とする

  3. すべての可能な(ci,cj)(c_i, c_j)の点について残差平方和 RSSRSSが最小化される最適なTijT_{ij}を選択する

Construction Predictors

このtreeの学習・評価をそのまま行うと、すべての切断点(ci,cj)(c_i, c_j)について木TijT_{ij}を構築する必要があり、計算量が高い。そこで、

  1. 特徴量をヒストグラムにして探索を効率化

  2. ヒストグラムのもとで各点(ci,cj)(c_i, c_j)に対する情報を事前に計算しておき、各木TijT_{ij}の構築を高速化

する。

変数xix_iがとりうる値のソート済み集合を dom(xi)=v1,...,vdidom(x_i) = {v_1,...,v_{d_i}} とする。ここでdi=dom(xi)d_i = |dom(x_i)|

xi=vx_i=vのときの目的変数の総和をHit(v)H_i^t(v)を、重み(あるいはサンプル数)の総和をHiw(v)H_i^w(v)とおく。直感的には、これらは回帰木におけるヒストグラムである。同様に Hijt(u,v)H_{ij}^t(u,v)およびHijw(u,v)H_{ij}^w(u,v) を、(xi,xj)=(u,v)(x_i,x_j)=(u,v) のときの目的変数の総和および重みの総和として定義する。

また、累積ヒストグラムを CHit(v)C H_i^t(v)CHiw(v)CH_i^w(v)とおく。

  • CHit(v)=uvHit(u)C H_i^t(v)=\sum_{u \leq v} H_i^t(u)

  • CHiw(v)=uvHiw(u)C H_i^w(v)=\sum_{u \leq v} H_i^w(u)

さらに、次のように定義する。

  • CHit(v)=u>vHit(u)=CHit(vidi)CHit(v)\overline{C H_i^t}(v)=\sum_{u>v} H_i^t(u) = CH_i^t(v_i^{d_i})-CH_i^t(v)

  • CHiw(v)=u>vHiw(u)=CHiw(vidi)CHiw(v)\overline{C H_i^w}(v)=\sum_{u>v} H_i^w(u) = CH_i^w(v_i^{d_i})-CH_i^w(v)

cutoff (ci,cj)(c_i, c_j) で区切った4象限 a,b,c,da,b,c,dを計算する。

赤い領域aaがわかれば、他の象限も周辺累積ヒストグラムCHCHを使って簡単に計算できる。aaは動的計画法を用いて高速に計算できる。

切断点 (ci,cj)(c_i, c_j) における目的変数の総和のlookup tableを Lt(ci,cj)=[a,b,c,d]L^t(c_i, c_j)=[a, b, c, d] とする。同様に重みの総和のlookup tableを Lw(ci,cj)=[a,b,c,d]L^w\left(c_i, c_j\right)=[a, b, c, d] とする。

Lookup Tableの作り方を詳しく述べたのがAlgorithm 2である。
切断点(p,q)(p, q)における値をa[p][q]a[p][q]とする。この1行目a[1][q]a[1][q]を先に計算してから他の行を計算する。

一度Lt,LwL^t, L^wが求まれば、任意の切断点(ci,cj)(c_i, c_j)について木TijT_{ij}が計算できる。例えば木TijT_{ij}で最も左の葉ノード(4象限{a,b,c,d}\{a,b,c,d\}のうちaa)の値はLt(ci,cj).a /Lw(ci,cj).a L^t(c_i, c_j).a \ / L^w(c_i, c_j).a で求められる。LookupTableからの値の取得と1回の計算程度なので計算量は O(1)O(1) となる

Calculating RSS

TijT_{ij} に対する RSSRSS の計算は非常に効率的に行える。

まず、RSSRSS の定義を考える。Tij.rT_{ij}.r を領域 rr における予測値とする(ただし r{a,b,c,d}r \in \{a, b, c, d\})。

RSS=k=1N(ykTij(xk))2=(k=1Nyk2    2rTij.rLt.r  +  r(Tij.r)2Lw.r)\begin{aligned} RSS &= \sum_{k=1}^{N} \left(y_k - T_{ij}(x_k)\right)^2\\ &= \left( \sum_{k=1}^{N} y_k^2 \;-\; 2 \sum_{r} T_{ij}.r \, L^{t}.r \;+\; \sum_{r} (T_{ij}.r)^2 \, L^{w}.r \right) \end{aligned}

RSSRSS の絶対値ではなく相対的な大小関係にのみ関心があるため、実際の実装においては、以下の部分だけを考えればよい:

r(Tij.r)2Lw.r    2rTij.rLt.r\sum_{r} (T_{ij}.r)^2 L^{w}.r \;-\; 2 \sum_{r} T_{ij}.r \, L^{t}.r

このことから、TijT_{ij} に対する RSSRSS の計算量は O(1)O(1) であることが容易に分かる。

FASTの計算量
  • 時間計算量は1つのペア (xi,xj)(x_i, x_j) あたり O(didj+N)O(d_i d_j + N)

    • 各ペア (xi,xj)(x_i, x_j) に対して、ヒストグラムおよび累積ヒストグラムを計算するにはデータ全体を走査する必要があるため、その計算量は O(N)O(N)

    • またLookup Table の構築には O(didj+N)O(d_i d_j + N) の時間計算量が必要なため

  • 空間計算量は O(didj)O(d_i d_j)

    • 各ペアごとに di×djd_i \times d_j の行列を保持する必要があるため

特徴量の離散化(binning)

連続値特徴量の場合、didjd_i d_j は非常に大きくなる可能性がある。しかし、特徴量を bb 個の等頻度ビン(equi-frequency bins)に離散化することで、計算量はペアあたり O(b2+N)O(b^2 + N) に削減できる。GA2Mでは b=256b = 256 としている。

このような離散化は通常、回帰木の性能を損なわないことが先行研究で知られている。また実験により FAST は幅広い bb の値に対して感度が低いことがわかっている。

各項の重み / Feature Importance

解釈性を高めるために、仮説空間 H\mathcal{H} における最適なモデルを学習した後、すべての項(1次元および2次元の成分)の重要度をランキングし、各項に重みをつける。

本研究では、項 uu に対して、fuf_u(ただし E[fu]=0E[f_u] = 0)の標準偏差である

E[fu2]\sqrt{E[f_u^2]}

を重みとして用いる。

これは線形モデルにおける重みの自然な一般化である。というのも、fi(xi)=wixif_i(x_i) = w_i x_i の場合、特徴量が正規化されて E[xi2]=1E[x_i^2] = 1 を満たすとき、E[fi2]\sqrt{E[f_i^2]}wi|w_i| に一致するためである。

予測性能

提案論文での実験では回帰問題・分類問題それぞれ複数のデータセットに対し、 Random Forestと同程度の予測性能 を示した。

実装

InterpretMLパッケージに実装されている

Explainable Boosting Machine — InterpretML documentation

import pandas as pd
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score, mean_absolute_error
from interpret.glassbox import ExplainableBoostingRegressor
from interpret import show

# 1) データロード
data = fetch_california_housing(as_frame=True)
X: pd.DataFrame = data.data
y: pd.Series = data.target  # Median house value

# 2) train/test split
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# 3) EBM(回帰)
ebm = ExplainableBoostingRegressor(
    random_state=42,
    # interactions=10,   # 交互作用を入れたいなら(解釈はやや複雑に)
    # max_bins=256,      # 連続特徴のビン数(大きいほど柔軟だが過学習注意)
)

# 4) fit & 評価
ebm.fit(X_train, y_train)

pred = ebm.predict(X_test)
print(f"R^2: {r2_score(y_test, pred):.3f}")
print(f"MAE: {mean_absolute_error(y_test, pred):.3f}")

# 5) Explain(global / local)
global_exp = ebm.explain_global(name="EBM global (California Housing)")
local_exp = ebm.explain_local(X_test.iloc[:5], y_test.iloc[:5], name="EBM local (first 5)")

# Notebook環境なら可視化(ブラウザ/埋め込み表示)
show(global_exp)
show(local_exp)
R^2: 0.841
MAE: 0.307
Loading...
Loading...

信頼区間 / 予測区間の推定

[2601.18857v1] Statistical Inference for Explainable Boosting Machines はEBMの信頼区間や予測区間を行う方法を提案。