めっさ分かりやすい因果推論 (その1) 概論とMeta-learner系手法

はじめに

こんにちは、Customer-Analytics-Divisionの徳山と申します。本稿では因果推論手法の全体像を解説します。筆者は英語の通訳やカスタマーサクセス職を経てARISE analyticsに入社し、クライアント企業様の主力事業における販促施策について、施策に対する反応(『この施策によってどれくらいこのお客様はXXXという行動を取るようになったか?』)を推定するような取り組みを行っています。

因果推論は多くの分野で活用されていますが、用語のとっつきにくさと内容の難しさが絡み合うことで初学者(∋筆者)の学習を大きく妨げていると感じています。本稿がそうした方の入門の一助になれば幸いです。

因果推論の概説

『因果推論(causal inference)』を人間味のある形に言い換えるならば、「集団に対して何らかの『介入』を行った時に、その介入で特定の変数(目的変数)がどれほど押し上がったか、その押し上がり具合を『推定』する方法」だと言い換えられます。この押し上がり度合いには『CATE(Conditional Average Treatment Effect ケイト:条件付き処置効果)』という名前がついています。

例えばあなたが自社サービスをより多く購入してほしいと思うマーケティング担当者で、メールで割引クーポンを送る場合、メールを送ることが介入で、商品売上などが目的変数に据えられます。ここで、キャンペーンによってどれくらい売上が伸びたかを当然知りたいと思うでしょう。これは以下の式で表現できるはずです:

Aさんに対するメール施策(介入)による売上(目的変数)の押し上がり効果 = 『①Aさんにメールを送った(介入した)場合の売上の値』 -『 ②Aさんにメールを送らなかった(介入しなかった)場合の売上の値』

ここで問題が生じます。Aさんは一人しか存在しないので、Aさんに対して①か②のどちらかしかデータ上観測することはできず、①-②を実際には計算できないのです。これを『因果推論の根本問題(*1)』といいます。

では掲題の押し上がり効果をどう測るかというと、因果推論の分野ではAさんと類似した人でメールを送ってはいないBさんを探し、『推定』値として以下を算出します:

Aさんに対するメール施策(介入)による売上(目的変数)の推定押し上がり効果 = 『③Aさんに介入した場合の目的変数の値』 – 『④Aさんと似ているBさんに介入しなかった場合の目的変数の値』

冒頭の因果推論の定義で押し上がり効果を『推定』することと書いたのは、この算出値があくまで『予測値』でしかないことを強調したかったためです。この推測こそが因果推論であり、いかに妥当な推定効果を求めるかがデータサイエンティストの腕の見せどころでもあります。

因果推論手法の概説

(図:筆者作成の社内LT資料より抜粋)

因果推論の各手法は、まず機械学習の用い方でMeta-learner系とCausal-Tree系に大別できます。Meta-leranerは、因果推論を行うための論理のうち、多くて2箇所にピンポイントで機械学習を施す処理のことです。
第一に、施策の対象になった人(TG[Treatment Group]といいます*2)とそうでない人(CG[Control Group]といいます)がどのように振り分けられているのか、両者の属性的傾向を学習するモデルが必要です。言い換えると、施策による介入有無(TGかCGか)を目的変数とした予測モデルということです。例えば先のメールのキャンペーンですと、メールを送る対象は(メールを開いてくれそうで、商品を買ってくれそうな)購入経験の多い若者に寄りがち、一方でメールを送らなかった人全体はその逆の中高年に寄りがち、といったバイアスが生じている可能性があります。『③-④』の計算は感覚的にも分かる通り(*3)似ている顧客どうしで行う必要があり、その似ている度合いを定量表現する手段が必要そうですよね。それがこの第一のモデルです。因果推論の分野では『傾向スコア(propensity score)』という名称がついています。(*4)

正確に言いますと、傾向スコアは③の人と④の人の類似度を直接評価しているわけではなく、それぞれが『(典型的な)TGにいそうな顧客なのかどうか』を表現しています。傾向スコアを以て『TGにいそう(=あぁこの方はこれまでXXをたくさん購入しているしキャンペーンとの相性がよさそうだったからキャンペーンメールを送ったのだった)』な程度が同じお客さん同士をあぶりだし、③にTGに『TGにいそうでやっぱりTGにいたお客様』、④に『TGにいそうだけどCGにいたお客様』をあてがって計算を行うイメージです。

第二に、TG内、CG内での目的変数を予測する学習モデルが必要です。再び『③-④』の式から察していただける通り、最終的にはTG対CGで目的変数のスコアを比較することになるので、そのための前準備という意味合いです。

他方のCausal-Tree系は、因果推論の論理フローをまるっと決定木ベースの教師あり学習手法で置き換えた手法群です。本稿では触れませんが、いずれ別の機会に寄稿したいと思います。

Meta-learner別の解説

S-learner (Single-learner)

S-learnerは、介入されたかどうかを特徴量に含めた目的変数予測モデルをつくり、Aさんについて『TGだった場合のスコア』-『CGだった場合のスコア』を算出し、その差分を施策介入による押し上がり具合(=CATE)とみなす手法です。

S-learner以外の手法でもそうですが、ここで用いられる機械学習モデルに特に制限はありません。Xgboostであれ線形回帰的な手法であれ適用可能です。

Meta-learnerの各手法のパフォーマンスを比較した論文があり(*5)、これによるとS-learnerはCATEが多くの顧客において0であろうという仮説が経っている場合に有力な手法だと示されています。キャンペーンは送っているが売上はほぼ増進しないだろう、クーポンをお送りしても解約リスクはほぼ押し上げないだろう、といった仮定ですね。

また、S-learnerはTGとCGの同一データセット内に取り組んで学習をさせるため、一般論としてはいずれかのデータセット件数が著しく少ない場合には向いていません。TGとCGの件数が概ね一致する場合によく効果を発揮する手法だと整理できるでしょう。

T-learner (Two-learner)

T-learnerではTが示すとおり機械学習モデルを2つ用います。すなわち、TG・CGそれぞれで目的変数の予測モデルを構築し、Aさんについて以下をCATEとみなします。

AさんのCATE = 『TGモデルで算出した目的変数予測スコア』 – 『CGモデルで算出した目的変数予測スコア』

このモデルが優れているのは、TG・CGで別個のモデルを使うために、両者に属性的な類似性が担保できていない場合でも活用ができるという点です。TGは20代中心、CGが50代中心という構図をとってしまった場合、目的変数(売上、解約、etc.)に対する反応性が両者で大きく異なりそうなことが推測されます。ここでS-learnerであれば、両者の区分けが施策介入有無という1つの特徴量でしかモデルに与えられませんが、T-learnerはそもそもの学習モデルを分けるため、TG・CGそれぞれにおいて目的変数に対する反応性を十分に学習できることが期待されます。

また、T-learnerはTG・CGどちらかの件数が少ない場合にでも活用できる手法です。キャンペーンメールを送ったTG顧客が1,900人で、同時期にメールを送らなかったCG顧客が100人だったという場合、S-learnerにそのままこのデータを食わせてしまってはCG側の顧客特性をモデルが十分に学習できない可能性があります。T-learnerであればあくまでCG内での顧客特性を学習したモデルを使用できるので、そのような懸念をはじめから払拭することができます。

X-learner

X-learnerは上記2手法よりも複雑で、以下の5手順をもってCATEを算出します。

(1). 顧客がTGであるか、CGであるか(=傾向スコア)を学習するモデルを構築する

(2). TG・CGそれぞれで目的変数の予測モデルを構築する(s-learnerと同じ)

(3). (2)のモデルを使って以下を計算する。

D1:TG顧客に対し、『目的変数 – (2)のCGモデルによる目的変数予測スコア』の値

D0:CG顧客に対し、『(2)のTGモデルによる目的変数予測スコア – 目的変数』の値

(4). (3)の計算結果を使って以下のモデルを構築する

M1: TG顧客に対してD1を予測するモデル、すなわち、『自分がTGだったら目的変数の押し上がり効果がどれくらいですスコア』を予測するモデル

M2: CG顧客に対してD2を予測するモデル、すなわち、『自分がCGだったら目的変数の押し上がり効果がどれくらいですスコア』を予測するモデル

(5). 各顧客に対しM1とM2からスコアを算出し、(1)のモデルの結果で重み付けを行う。すなわち、TGっぽい顧客ほどM1が、CGっぽい顧客ほどM2のスコアに影響されるように調整する。

(3)において、D1は『自分がCGでなくTGであることで、どれくらい目的変数が押し上がったか』、D2は『自分が母集団ではなくCGであることで目的変数が押し上がったか』を意味しています。(4)でそれらを予測するモデルをつくり、(5)でそれらにTG/CG振り分け確率をあてがうことで、最終的に『自分がTGだったら/CGだったら目的変数がどれくらい押し上がるのかスコア(=CATE)』を算出します。

その他のlearner

他にもr-learner等のmeta-learner系手法があるようで、筆者も勉強中です。

終わりに

本稿では因果推論の概論とMeta-learner系の各手法の全体像の説明を図りました。読者諸賢がこの分野を学び始める際の一助となれば幸いです。次の執筆機会には、因果推論手法のもう一つの体系であるCausal-tree系手法について論じる予定です。

ARIS analyticsの中で筆者が担当している分析支援のプロジェクトでは、非常に大量の顧客データからこのような分析を行うことが多く、常々ビジネススケールの大きさを感じることができます。拙稿をご覧くださった方に、実際に弊社でこういった分析を行うことに関心を持っていただけたら望外の喜びです。

最後までご覧下さり、ありがとうございました。(拝)

(補記・引用元メモ)

*1: 安井翔太・株式会社ホクソエム(2020).『効果検証入門 – 正しい比較のための因果推論/計量経済学の基礎』. 技術評論社. P.7より

*2: 全くの余談ですが、TGはTreatment GroupであってTarget Groupではありません。

*3: 感覚的に整理すれば、『サッカー好きのおじさんについての情報 – 野球好きの若者の情報』の計算結果は何の意味もなさそうではないですか?サッカー好きのおじさんに比べられるべきはあくまでサッカー好きのおじさんであって、その似ている度合いを定量評価するものが傾向スコアです。

*4:英語には少しのこだわりがあるのでこの語の和訳のされかたについて1点主張させていただきます。propensityの元の形容詞である‘propense’という語には、~しがちな(類:inclined)、前のめりな、勉強熱心なといった意味があります(pro-は前にという意味の接頭語でproactiveのproと同じです。かたや、『傾向』という語は、『人口が増加傾向にある』『私はいつも右足から立ち上がる傾向にある』というように行為(XXする)に対しての傾きの意で使われることが多いかと思われます。

propensity scoreという語は、因果推論分野では本文中の議論の通り『TGにいがちなスコア』というニュアンスで理解されるべきだと思われます。このpropensity scoreを『傾向』スコアと訳してしまうと、この語が何に対しての傾きを示しているのか分かりづらくはないでしょうか。あえて言えば、筆者としては『傾向スコア』は誤訳であり、語の本来の意味を尊重すると『偏向スコア』または『典型性スコア(=TGにいがちであるスコア)』といった日本語訳をあてるべきではないかと考えています。

*5: Soeren R. Kuenzela , Jasjeet S. Sekhon, Peter J. Bickela , and Bin Yu (April 25th 2019.)  Meta-learners for Estimating Heterogeneous Treatment Effects using Machine Learning. arxiV. Available at: https://arxiv.org/pdf/1706.03461.pdf (Retrieved April 8th 2021.)

(おしまい)

関連記事