Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Shingo Uto
July 20, 2022

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

"機械学習×因果推論"手法の1つとして知られるX-Learnerに関する資料です。

Shingo Uto

July 20, 2022
Tweet

More Decks by Shingo Uto

Other Decks in Science

Transcript

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

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

  3. 自己紹介

  4. 自己紹介(経歴) - 九州大学経済学部卒(計量経済学とか) - データアナリスト - EC事業の効果検証 - MaaS事業のDX(笑) -

    データサイエンティスト - Web広告の効果検証(補欠合格)← 今ココ
  5. 自己紹介(宣伝) - Envaderというサービスの企画・運営をしてます - Pythonで因果推論手法を実装するZennをまとめてます

  6. 効果検証の概要

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

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

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

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

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

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

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

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

    ? Bさん(見た) 5,000 5,000 ? Cさん(見てない) 15,000 5,000 ?
  15. 効果検証とは 広告を見た場合の売上 広告を見てない場合の売上 効果 iさん Y1 Y0 Y1 - Y0

    計測不可 N人分のデータを利用して、 効果(Y1 - Y0)の 期待値 E(Y1 - Y0) を理論的に算出することは可能 → これが基本的な効果検証のアプローチ
  16. 問題の設定 - 次の例で、広告の効果を考える - ダイエット商品のリターゲティング広告 - 性別・過去の購買履歴を元に広告を配信 - 売上は性別・過去の購買履歴・広告を見たかどうかで決定され る

    - 広告の真の効果は5,000(これを推定する)
  17. 問題の設定 - 性別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)に従う
  18. 問題の設定 一応Pythonのコードとその出力

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

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

    (これが傾向スコア) 予測
  21. 傾向スコアとは - 傾向スコアを用いた因果推論手法には - 傾向スコアマッチング - IPW: Inverse Probability Weighting

    - DR: Doubly Robust などがある(詳細はこちらのZenn記事を参照) 今回はIPW(逆確率重み付け法)を紹介
  22. IPW(逆確率重み付け法) - 傾向スコアをサンプルの重みに利用 - 処置を受けた場合の結果の期待値E(Y 1 )と、処置を受けな かった場合の結果の期待値E(Y 0 )を推定し、その差分を効果

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

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

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

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

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

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

  29. 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
  30. 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
  31. 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
  32. 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
  33. ダイエット商品のリターゲティング広告の例 X-Learnerとは 手順(5/6) - 傾向スコアe(X i )を算出 過去の購入数: 6コ 性別:

    女性 広告を見る確率は...65% (これが傾向スコア) 予測
  34. 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 の予測値)
  35. Pythonによる実装 まずは処置群(D i =1)と対照群(D i =0)にデータを分け、各々の売 上Y 1 , Y

    0 を求める回帰モデル(ランダムフォレスト)を作成する
  36. Pythonによる実装 - ATT: 処置群(D i =1)における実値Y 1 と予測値Y 0 の差

    - ATU: 対照群(D i =0)における予測値Y 1 と実値Y 0 の差を算出
  37. Pythonによる実装 D i =0,1の全データ(i=1, 2, …, N)からATT i とATU i

    を求める回帰モ デル(ランダムフォレスト) M ATT とM ATU を構築する
  38. Pythonによる実装 傾向スコアe(X i )を算出し、ATT i とATU i の予測値を傾向スコアで重 み付けした和が個別効果の推定値

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

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

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