データ分析
2026/03/17
池田 悠真

BigQuery MLで作るUplift Modeling

むやみなクーポン配布で利益を削っていませんか?因果推論「Uplift Modeling」を用いて「クーポンを配るべき顧客」だけを特定し、期待利益(ROI)を最大化する手法を実践解説します。BigQuery MLの制約をハックする「物理的リサンプリングによる疑似IPW」の実装テクニックも必見です。

データパイプラインと特徴量エンジニアリング

モデルの予測精度はデータの前処理で決まると言っても過言ではありません。今回のアーキテクチャでは、生データから段階的にデータマートを構築するスタースキーマ構造を採用します。


1.STG層(Staging): マスタデータとトランザクションのクレンジング


2.INT層(Intermediate): ビジネスロジックの適用(LTVパーセンタイル、RFM、リスクフラグの算出)


3.MART層(Mart): 機械学習用・BI可視化用の最終テーブル


特に、単なる属性データだけでなく、「購買停滞リスク」「商品の欠品リスク」といった行動ベースの動的特徴量を組み込んでいる点がポイントです。


Uplift Modelingの実装:T-Learnerと疑似IPWのハック

なぜあえてBigQuery ML(BQML)で実装するのか?


Pythonを用いたVertex AI環境やローカルのJupyter Notebookなど、柔軟なモデリング環境がある中で、なぜあえてBQMLを選択するのでしょうか。それは「Data Gravity(データの重力)」と「MLOpsの容易さ」に圧倒的なメリットがあるからです。


データ移動コストとセキュリティリスクの排除: 数億行に及ぶトランザクションやログデータは、すでにBigQuery(データウェアハウス)内に存在します。これを機械学習のために外部環境へエクスポートすることは、通信コストの増大やセキュリティリスクに繋がります。BQMLなら、データが置かれた場所でそのまま学習・推論が可能です。


データパイプラインとのシームレスな統合: dbtやスケジュールされたクエリ(Scheduled Queries)など、既存のSQLベースのデータ処理パイプラインの延長線上に、「MLの学習・推論」を組み込むことができます。


運用および保守の属人化防止: 別途推論用のAPIサーバーなどを立てる必要がなく、SQLを理解できるデータエンジニアやアナリストであれば、モデルの保守運用を容易に引き継ぐことができます。


このようなビジネス運用上の強力なメリットがあるからこそ、データウェアハウス内で完結するBQMLの活用がモダンなデータ基盤で好まれています。


T-LearnerとIPW(傾向スコア重み付け)


Uplift Modelingの代表的な手法に、介入(クーポン配布)あり・なしの2つのモデルを構築する「T-Learner」があります。しかし、過去の観測データには「クーポンをもらいやすい人・もらいにくい人」という選択バイアス(Selection Bias)が含まれています。


これを補正するために、傾向スコア(Propensity Score)の逆数で重み付けを行う IPW(Inverse Probability Weighting) を適用します。数式で表すと以下のようになります。


\[ W_i = \begin{cases} \frac{1}{P(T_i=1|X_i)} & \text{if } T_i=1 \text{ (介入群)} \\ \frac{1}{1 – P(T_i=1|X_i)} & \text{if } T_i=0 \text{ (統制群)} \end{cases} \]


BigQuery MLの壁と「物理的リサンプリング」による突破


先述の通りBQMLには運用上の絶大なメリットがありますが、一方で技術的な壁にもぶつかります。それは、BQMLのロジスティック回帰(LOGISTIC_REG)が、現時点で任意の重み付けカラム(Weight Column)を直接サポートしていない点です。


そこで今回は、「算出された重みの数だけ、行データを物理的に複製(増幅)する」という力技(疑似IPW)を採用します。実際のSQLの一部を見てみましょう。


-- 1. 傾向スコア(クーポン配布確率)の算出
CREATE OR REPLACE MODEL `ecommerce_project.ml_dataset.propensity_model`
OPTIONS(model_type='LOGISTIC_REG', input_label_cols=['is_treated']) AS
SELECT is_treated, customer_segment, ltv_percentile, past_orders_90d /* ... */
FROM `ecommerce_project.ml_dataset.mart_training_base`;

-- 2. 重みの計算と行の物理的複製(疑似IPW)
CREATE OR REPLACE TABLE `ecommerce_project.ml_dataset.mart_weighted_data` AS
WITH preds AS (
SELECT *, prob AS propensity_score
FROM ML.PREDICT(MODEL `ecommerce_project.ml_dataset.propensity_model`, ...)
),
weighted AS (
SELECT *,
CASE
WHEN is_treated = 1 THEN 1.0 / GREATEST(propensity_score, 0.01)
ELSE 1.0 / GREATEST(1.0 - propensity_score, 0.01)
END AS ipw_weight
FROM preds
)
-- 重みを整数に丸め(最大10倍に制限)、GENERATE_ARRAYで物理的に行を増幅
SELECT * EXCEPT(propensity_score, ipw_weight)
FROM (
SELECT *, CAST(LEAST(ROUND(ipw_weight), 10) AS INT64) AS rep_count
FROM weighted
), UNNEST(GENERATE_ARRAY(1, GREATEST(rep_count, 1))) AS replica_id;

この増幅されたデータセットを使って、介入群(Treated)と統制群(Control)それぞれの予測モデルを学習させます。

Qini Curveによるモデル評価

作成したモデルが本当に「効果の高い顧客」を見つけ出せているのか?それを視覚的に評価するのが Qini Curve です。



・横軸: Uplift Score(介入群の予測確率 – 統制群の予測確率)が高い順に並べた顧客のパーセンタイル


・縦軸: 累積のUplift(純増効果)


青い線(モデルの予測)が水色の線(ランダム配布)を大きく上回り、左上に膨らんでいることがわかります。これは、モデルが「クーポンに反応しやすいユーザー」を正確に上位にランク付けできている証拠です。


ROIシミュレーション:結局、どこまで配るのが正解か?

精度の高いモデルができても、ビジネス上の最大の関心事は「利益」です。


クーポン配布には原価(値引きコスト)がかかります。そのため、各ユーザーへの期待利益(Expected Net Value)を以下の数式で定義します。


$$ \begin{aligned} Expected\_Net\_Value &= LTV \times \Big( Uplift\_Score – P(CV|Treated) \times Coupon\_Cost\_Rate \Big) \end{aligned} $$


この期待利益をベースに、上位から順にクーポンを配った場合のシミュレーションを行ったのが以下のグラフです。




  • 青色の折れ線(Cumulative Profit): 累積の期待利益

  • 水色の棒グラフ(Marginal Profit): 限界利益(ユーザー1人追加ごとの利益増減)


グラフを見ると、上位からクーポンを配布していくと累積利益(青線)は上昇を続けますが、90%付近をピーク(極大値)に下降に転じています。右端の層(棒グラフがマイナスに沈んでいる層)は、「クーポンを配ると逆に利益が赤字になる層」です。


【結論(アクションプラン)】

このシミュレーション結果により、「Uplift Score上位90%のユーザーをターゲットとすることで、ROIを最大化できる」という明確な意思決定が可能になります。残りの10%(マイナス層)は配布対象外(推奨フラグ=0)として除外します。

まとめ

機械学習による予測は、確率や精度を出すまでが仕事ではありません。それを「ビジネスの利益(ROI)とアクション」に変換することで初めて価値を生みます。


1.データウェアハウス内で完結するBQMLのエコシステムを活用し、運用コストを劇的に下げる。


2.Qini Curveでモデルの性能を客観的に評価する。


3.ROIシミュレーションによって、利益が最大化する「損益分岐点」を特定し、自動配信のセグメントを切る。


データ分析チームが「とりあえずA/Bテスト」という思考から脱却し、このようなオフライン検証と期待値シミュレーションを提示できるようになれば、マーケティング施策の確度とスピードは劇的に向上するはずです。


New call-to-action