不動産データを使ったMeta-Learnerによる因果効果推定の比較(S / T / X-Learner)
Meta-Learnerによる因果効果推定の比較(S / T / X-Learner)
はじめに
因果推論の文脈でよく登場する手法に Meta-Learner があります。
代表的なものとして S-Learner, T-Learner, X-Learner が知られています。
本記事では、賃貸住宅における宅配ボックス設置が賃料に与える効果 を題材に、
これら3つの手法を Python で実装し、その推定分布を比較しました。
「不動産」に限らず、マーケティング施策や医療介入など、処置(Treatment)がある場面で効果推定をしたい
という一般的なケースに応用できる内容です。
分析対象データ
今回の検証では、サンプルとして 東京都世田谷区の単身者向け物件(1R・1K) に絞りました。
- 処置変数(Treatment):宅配ボックスの有無
- アウトカム(Outcome):賃料
- 特徴量(Features):面積、階数、総戸数、駅徒歩分数、間取り、最寄駅IDなど
「単身者向け住宅に宅配ボックスを導入したとき、賃料はどの程度上昇するか?」を推定するイメージです。
各手法の概要
ここでは、各手法の特徴を簡潔にまとめます。
🔴 S-Learner(Single Learner)
概要
1つのモデルに「特徴量X + 処置変数T」を入力し、アウトカムYを予測します。
効果推定時には、同じサンプルに対して T=0 と T=1 を入力し、その予測値の差を個別処置効果(ITE)とします。
メリット
- 実装がシンプルで理解しやすい
- すべてのデータを使って学習するため、データ数が少なくても比較的安定した結果が得られる
デメリット
- 処置の効果が他の要因(面積や築年数など)の影響に埋もれてしまい、実際より小さく見積もられる傾向がある
- 「宅配ボックスがある物件」と「ない物件」の違いを十分に区別できない可能性がある
🔵 T-Learner(Two Learner)
概要
処置群(T=1)と対照群(T=0)で 別々のモデル を学習します。
各サンプルに対して、両方のモデルで予測を行い、その差をITEとします。
メリット
- 「宅配ボックスがある物件」と「ない物件」それぞれの特徴を独立に学習できる
- S-Learnerと比べて、処置効果が過小評価されにくい
デメリット
- どちらかのグループのデータが少ないと、そちらのモデルの精度が落ちる
- 「宅配ボックスを設置する物件の傾向」(例:新築や高級物件に多いなど)を考慮できないため、効果が実際より大きく・小さく見積もられるリスクがある
- 結果のばらつきが大きくなりやすい
🟢 X-Learner
概要
T-Learnerを基礎としつつ、さらに以下のステップを追加します:
- T-Learnerと同様に
と\mu_0(X) を学習\mu_1(X) -
擬似的な効果 D を計算:
- 処置群:
D_1 = Y_1 - \mu_0(X_1) - 対照群:
D_0 = \mu_1(X_0) - Y_0
- 処置群:
-
とD_1 をそれぞれ新たなターゲットとして学習:D_0 ,\tau_1(X) \tau_0(X) -
傾向スコア
による重み付けで最終的な効果を推定:g(X)
メリット
- S-LearnerとT-Learnerの長所を組み合わせた手法
- データ数の偏り(宅配ボックスあり/なしの物件数の差)があっても、重み付けによって安定した推定ができる
- 理論的には、過小評価と偏った推定の両方を軽減できる
デメリット
- 予測→学習→予測を複数回繰り返すため、途中の予測誤差が積み重なって最終結果に影響する可能性がある
- 実装が複雑で、調整が必要なパラメータが多い
- 結果のばらつきがやや大きくなる傾向がある
実装(抜粋)
from econml.metalearners import SLearner, TLearner, XLearner
from lightgbm import LGBMRegressor, LGBMClassifier
# アウトカム, 処置, 特徴量
Y = df["rent"].values
T = df["delivery_box"].values
X = df[
[
"築年数",
"専有面積",
"階数",
"駅徒歩分数",
# ...などなど
]
].values
# --- S-Learner ---
s_learner = SLearner(overall_model=LGBMRegressor(**reg_params)) #適切なパラメータを設定
s_learner.fit(Y, T, X)
ite_S = s_learner.effect(X)
# --- T-Learner ---
t_learner = TLearner(models=LGBMRegressor(**reg_params))
t_learner.fit(Y, T, X)
ite_T = t_learner.effect(X)
# --- X-Learner ---
x_learner = XLearner(models=LGBMRegressor(**reg_params),
propensity_model=LGBMClassifier(**clf_params))
x_learner.fit(Y, T, X)
ite_X = x_learner.effect(X)
分布の比較
3手法で推定した設備効果(ITE: Individual Treatment Effect)の分布を可視化しました。
ヒストグラムの縦軸は件数、赤線が中央値、緑線が±1標準偏差を表します。
-
S-Learner
- 分布がなめらかで極端に外れた値が少なく、最も中央に集まった形
- 中央値は約9千円
- 評価:結果のばらつきが小さく安定している。ただし、実際の効果より小さめに推定される傾向があることに注意が必要
-
T-Learner
- 分布が広く平らで、ばらつきが最も大きい
- 中央値は1万円超で、3手法の中で最も高い
- 評価:効果の過小評価は避けられているが、「どんな物件に宅配ボックスが設置されやすいか」の偏りを考慮できないため、実際より大きく・小さく見積もられているリスクがある
-
X-Learner
- S-LearnerとT-Learnerの中間的な分布
- 中央値は9千円台
- 評価:理論的には両方の弱点をカバーできる手法だが、予測を何度も繰り返すため、途中の誤差が積み重なって結果のばらつきが大きくなる可能性がある
所感と今後の改善
手法の選択について
- 今回の検証(世田谷区 × シングル向け物件)では、S-Learnerが最も安定した結果を示しましたが、実際の効果より小さく見積もられている可能性があります
- T-Learner は結果のばらつきが大きく、「宅配ボックスあり/なし」の物件数の偏りが影響している可能性があります
- X-Learner は理論的には優れていますが、計算が複雑で予測誤差が積み重なりやすい点に注意が必要です
モデルの改善余地
今回の分析では、シンプルな機械学習モデルと限られた情報で検証を行いました。以下のような改善により、より正確な推定が可能と考えられます:
- 説明変数の追加:駅の利便性、周辺環境(スーパーやコンビニの近さ)などを追加
- モデルの調整:より細かいパラメータ調整で予測精度を向上
- 複数回の検証:データを分割して何度も検証し、結果の安定性を確認
- 設置傾向の分析:どんな物件に宅配ボックスが設置されやすいかをより正確に把握
現状の結果は、基本的な変数での初期検証であり、実際のビジネス判断に使うにはさらなる検証が必要です。
まとめ
- Meta-Learner(S/T/X)の3手法を機械学習ライブラリで実装
- 宅配ボックス設置による賃料への影響を推定(世田谷区 × 単身者向け物件)
- 各手法には「効果の過小評価」「偏った推定」「予測誤差の積み重なり」といった異なる特徴があり、状況に応じた使い分けが重要
- 今回は基本的なモデルでの検証であり、実際のビジネス判断に使うにはさらなる改善が必要
おわりに
この記事は「賃貸不動産における設備の賃料影響」という題材でMeta-Learnerの概要について扱いました。広告施策の効果測定、医療における治療効果の分析、教育プログラムの評価など、何らかの施策や介入の効果を知りたい様々な場面で応用の可能性があります。
効果を推定する手法を選ぶ際は、それぞれの手法の長所と短所を理解し、手元のデータの特徴や分析の目的に合わせて適切な方法を選ぶことが重要です。
採用情報
弊社ではWebフルスタックエンジニア、AIエンジニアなどを積極的に採用しています。ご興味のある方はぜひWantedlyをご覧ください。
Discussion