Slide 1

Slide 1 text

機械学習を用いた効果検証 ~傾向スコアとX-Learner~

Slide 2

Slide 2 text

アジェンダ - 自己紹介 - 効果検証の概要 - 傾向スコアを用いた効果検証 - 機械学習を用いた効果検証

Slide 3

Slide 3 text

自己紹介

Slide 4

Slide 4 text

自己紹介(経歴) - 九州大学経済学部卒(計量経済学とか) - データアナリスト - EC事業の効果検証 - MaaS事業のDX(笑) - データサイエンティスト - Web広告の効果検証(補欠合格)← 今ココ

Slide 5

Slide 5 text

自己紹介(宣伝) - Envaderというサービスの企画・運営をしてます - Pythonで因果推論手法を実装するZennをまとめてます

Slide 6

Slide 6 text

効果検証の概要

Slide 7

Slide 7 text

広告の効果を考える - 健康食品会社にて、ダイエット商品の広告を打つ - 広告の効果、すなわち、広告によってダイエット商品の売上が いくら上がったかを考える

Slide 8

Slide 8 text

それって本当に広告の効果? 広告を見た人と広告を見ていない人で売上の差が50,000円 広告を見た人 広告を見ていない人 対象期間の総売上(円) 100,000 50,000

Slide 9

Slide 9 text

それって本当に広告の効果? 男性よりも女性の方がダイエット商品への購入意欲が高いのか も...? 広告を見た人 (全員女性) 広告を見ていない人 (全員男性) 対象期間の総売上(円) 100,000 50,000

Slide 10

Slide 10 text

それって本当に広告の効果? ダイエットしたい人は夏の方が多そうですよね...? 広告を見た人 (7/1~7/31) 広告を見ていない人 (1/1~1/31) 対象期間の総売上(円) 100,000 50,000

Slide 11

Slide 11 text

それって本当に広告の効果? リターゲティング広告がもともと購入意欲が高い人に配信されて いたのかも...? 広告を見た人 (購入履歴あり) 広告を見ていない人 (購入履歴なし) 対象期間の総売上(円) 100,000 50,000

Slide 12

Slide 12 text

効果検証とは 本当の効果とは同じ条件(人・タイミング)のもと、 広告を見た場合と広告を見てない場合の売上の差

Slide 13

Slide 13 text

効果検証とは 本当はこうなんだけど... 広告を見た場合の売上 (円) 広告を見てない場合の売上 (円) 効果 Aさん 10,000 0 10,000 Bさん 5,000 5,000 0 Cさん 15,000 5,000 10,000

Slide 14

Slide 14 text

効果検証とは 現実ではどちらかしか分からない... 広告を見た場合の売上 (円) 広告を見てない場合の売上 (円) 効果 Aさん(見た) 10,000 0 ? Bさん(見た) 5,000 5,000 ? Cさん(見てない) 15,000 5,000 ?

Slide 15

Slide 15 text

効果検証とは 広告を見た場合の売上 広告を見てない場合の売上 効果 iさん Y1 Y0 Y1 - Y0 計測不可 N人分のデータを利用して、 効果(Y1 - Y0)の 期待値 E(Y1 - Y0) を理論的に算出することは可能 → これが基本的な効果検証のアプローチ

Slide 16

Slide 16 text

問題の設定 - 次の例で、広告の効果を考える - ダイエット商品のリターゲティング広告 - 性別・過去の購買履歴を元に広告を配信 - 売上は性別・過去の購買履歴・広告を見たかどうかで決定され る - 広告の真の効果は5,000(これを推定する)

Slide 17

Slide 17 text

問題の設定 - 性別x 1 : 1が男性、0が女性 - 過去の購入数x 2 : 平均6のポアソン分布に従う - 広告閲覧ダミーD - 6(1-x 1 )+x 2 +noise 10以上であれば1, 10未満であれば0 - noiseは平均0, 分散5の正規分布に従う - 売上Y - 2,500×(3(1-x 1 )+x 2 +noise)) + 5,000×D - noiseは一様分布(-5, 5)に従う

Slide 18

Slide 18 text

問題の設定 一応Pythonのコードとその出力

Slide 19

Slide 19 text

傾向スコアを用いた効果検証

Slide 20

Slide 20 text

ダイエット商品のリターゲティング広告の例 傾向スコアとは 属性から予測される処置が施される確率 → 処置を受ける傾向をスコアリングしたものという解釈 過去の購入数: 6コ 性別: 女性 広告を見る確率は...65% (これが傾向スコア) 予測

Slide 21

Slide 21 text

傾向スコアとは - 傾向スコアを用いた因果推論手法には - 傾向スコアマッチング - IPW: Inverse Probability Weighting - DR: Doubly Robust などがある(詳細はこちらのZenn記事を参照) 今回はIPW(逆確率重み付け法)を紹介

Slide 22

Slide 22 text

IPW(逆確率重み付け法) - 傾向スコアをサンプルの重みに利用 - 処置を受けた場合の結果の期待値E(Y 1 )と、処置を受けな かった場合の結果の期待値E(Y 0 )を推定し、その差分を効果 として推定

Slide 23

Slide 23 text

IPW(逆確率重み付け法) → それでは実装していきます という条件つき独立のもと、効果は次のように推定される。

Slide 24

Slide 24 text

IPW(逆確率重み付け法) まずはロジスティック回帰を利用して傾向スコアを算出

Slide 25

Slide 25 text

IPW(逆確率重み付け法) 傾向スコアの分布を確認

Slide 26

Slide 26 text

IPW(逆確率重み付け法) 先述の計算によって因果効果を推定 効果を4,552と推定 → 真の効果は5,000なので、まずまず

Slide 27

Slide 27 text

機械学習を用いた効果検証

Slide 28

Slide 28 text

X-Learnerとは - 傾向スコア × T-Learner - T-Learner: 処置群と対照群の2つについてそれぞれ機械学 習モデルを作成し、処置群と対照群の予測結果を利用して 効果を推定する手法(詳細は前回の資料を参照)

Slide 29

Slide 29 text

X-Learnerとは 手順(1/6) - 処置群(D i =1)と対照群(D i =0)にデータを分ける 処置群(広告を見た) 対照群(広告を見てない) 過去の購入数 性別 売上(Y 1 ) 8 女性 22,500 12 男性 25,000 過去の購入数 性別 売上(Y 0 ) 3 男性 7,500 4 女性 17,500

Slide 30

Slide 30 text

X-Learnerとは 手順(2/6) - 処置群(D i =1)のデータから Y 1 を予測する回帰モデルM 1 を作成 - 対照群(D i =0)のデータから M 1 を用いてY 1 の予測値を算出し 実値Y 0 との差を求める - この差が対照群(D i =0)の データにおける効果ATU 対照群(広告を見てない) 過去の購入数 性別 売上(Y 0 ) Y 1 の予測値 Y 1 予測値 - Y 0 (ATU) 3 男性 7,500 11,000 3,500 4 女性 17,500 15,000 - 2,500 処置群(広告を見た) 過去の購入数 性別 売上(Y 1 ) 8 女性 22,500 12 男性 25,000 回帰モデルM 1

Slide 31

Slide 31 text

X-Learnerとは 手順(3/6) - 対照群(D i =0)のデータから Y 0 を予測する回帰モデルM 0 を作成 - 処置群(D i =1)のデータから M 0 を用いてY 0 の予測値を算出し 実値Y 1 との差を求める - この差が処置群(D i =1)の データにおける効果ATT 処置群(広告を見た) 過去の購入数 性別 売上(Y 1 ) Y 0 の予測値 Y 1 - Y 0 予測値 (ATT) 8 女性 22,500 19,750 2,700 12 男性 25,000 32,000 7,000 対照群(広告を見てない) 過去の購入数 性別 売上(Y 1 ) 3 男性 7,500 4 女性 17,500 回帰モデルM 0

Slide 32

Slide 32 text

X-Learnerとは 手順(4/6) - 回帰モデルM 1 の目的変数をATT(D i =1の時の広告効果), - 回帰モデルM 0 の目的変数をATU(D i =0の時の広告効果) とした回帰モデルM ATT とM ATU を算出 処置群(広告を見た) 過去の購入数 性別 ATT 8 女性 2,700 12 男性 7,000 対照群(広告を見てない) 過去の購入数 性別 ATU 3 男性 3,500 4 女性 - 2,500 M ATT M ATU

Slide 33

Slide 33 text

ダイエット商品のリターゲティング広告の例 X-Learnerとは 手順(5/6) - 傾向スコアe(X i )を算出 過去の購入数: 6コ 性別: 女性 広告を見る確率は...65% (これが傾向スコア) 予測

Slide 34

Slide 34 text

X-Learnerとは 手順(6/6) - 処置群(D i =1)・対照群(D i =0)を含む全データ(i=1, 2, …, N)で M ATT とM ATU を用いてATT i とATU i を予測値を算出し、 傾向スコアe(X i )で重み付けした和を効果と推定する → 個別の因果効果を推定できるため、非線形な因果関係も捉えることが可能 個別の効果 = e(X i ) × (ATU i の予測値) + {1 - e(X i )} × (ATT i の予測値)

Slide 35

Slide 35 text

Pythonによる実装 まずは処置群(D i =1)と対照群(D i =0)にデータを分け、各々の売 上Y 1 , Y 0 を求める回帰モデル(ランダムフォレスト)を作成する

Slide 36

Slide 36 text

Pythonによる実装 - ATT: 処置群(D i =1)における実値Y 1 と予測値Y 0 の差 - ATU: 対照群(D i =0)における予測値Y 1 と実値Y 0 の差を算出

Slide 37

Slide 37 text

Pythonによる実装 D i =0,1の全データ(i=1, 2, …, N)からATT i とATU i を求める回帰モ デル(ランダムフォレスト) M ATT とM ATU を構築する

Slide 38

Slide 38 text

Pythonによる実装 傾向スコアe(X i )を算出し、ATT i とATU i の予測値を傾向スコアで重 み付けした和が個別効果の推定値

Slide 39

Slide 39 text

Pythonによる実装 個別の効果(ITE)を平均したものを確認すると、真の値5,000に近 い推定値が得られている。

Slide 40

Slide 40 text

補足(EconMLの紹介) 機械学習×因果推論なら EconMLというライブラリが便利です (そのうちZenn記事にまとめるのでお楽しみに!)

Slide 41

Slide 41 text

ご清聴ありがとうございました