因果推論 x 機械学習についてできることを整理してみました

やのと申します。
2回目の執筆になりますが、よろしくお願いいたします。

効果検証入門~正しい比較のための因果推論/計量経済学の基礎の社内読書会を主宰しています。

gihyo.jp

その流れでいろいろ調べていると、機械学習を使って因果関係を分析しよう という話が最近話題になっているような記事や情報をみかけるのですが、書籍では RCTができないときの代替手段 という位置付けで、傾向スコア、CausalImpactなどの手法を使いバイアスを排除した効果検証の方法が展開されているため、

因果推論 x 機械学習みたいな複雑なことしなくても、RCTが使えるんだったら使って、バイアスのない効果検証ができる環境を整備すればいいじゃないの?

という違和感を感じていました。

しかし、インターネット上の記事や文献を収集、咀嚼していくと、 因果推論 x 機械学習にはRCTを上回る価値がある とわかってきたため、自分なりに整理してみたことを記事にしてみたので、興味のある方は一読いただければと思います。

因果推論 x 機械学習がRCTを上回るときとは?

RCTの場合、選択バイアスを排除し、新しい施策のプロダクトに与える価値を推定するには最適な手段になるのですが、顧客ひとりひとりに対して、施策の価値を評価することはできません。

クリエイティブの訴求を変えるA/Bテストを実施したとすると、 
施策そのものが成功したかは、CTR/CVRなどのKPIが改善したかどうかを、統計検定などを使って判断できますが、A/Bテストでは芳しくなかったクリエイティブに魅力を感じていたユーザーも少なからずいたはずで、そのユーザーからのコンバージョンは期待できなくなってしまいます。

こういったとき、一律にA/Bテストに勝ったクリエイティブ(以下では A と表現します)を採用し、A/Bテストに負けたクリエイティブ(以下では B と表現します)を破棄するのではなく、 A を気に入りそうなユーザーには A を、B を気に入りそうなユーザーには B を提案することができれば、B のクリエイティブに魅力を感じていたユーザーからもコンバージョンを得ることができるのではないでしょうか?

こういった問題を組み合わせ最適化問題とよび、因果推論 x 機械学習は「A を気に入りそうなユーザー」もしくは「B を気に入りそうなユーザー」を推定することができるようになります。

これを因果推論の用語を重ねると、RCTではATE(Average Treatment Effect)の最大化を目指すが、因果推論 x 機械学習では、ユーザーの共変量に基づいた、組み合わせ最適化を実施し、ATEを上回るCATE(Conditional Average Treatment Effect)の最大化を目指すといった表現になるのではないかと思います。

動画の17分10秒あたりでは具体的な使い方を提示いただいていますので、参考にしていただければと思います。

cintelligence.co.jp

よいものには、限界もあります。

過去に実施した施策にしか適用はできないので、今までやったことのない施策の評価はできません。

例えば、今までにない斬新なサイトリニューアルをしたいんだけど、因果推論 x 機械学習を使ってその効果を推定したいと言われても、今までにない斬新なサイトリニューアルの効果は過去に計測されていないので、効果推定には利用できません。

因果推論 x 機械学習を使えるライブラリについて

インターネットの記事を物色していると、EconML、CausalMLが有力そうでしたので、基本情報と特徴をまとめてみました。

EconML

サマリー

github.com

特徴

CausalMLに比べて、選択肢が多く、どういったときにどういったモデルを使うべきか?についてはフローチャートが用意されています。 

フローチャートは非常にありがたいのですが、統計、因果推論の専門用語が多く、英語が苦手な私は苦戦しています。
統計、因果推論の専門用語や数式を含んだ英語の文書を、機械翻訳に託すと、混沌さが増します。

CausalML

サマリー

github.com

特徴

Uplift Modeling 手法から各種サポート関数までをワンストップで提供することを売りにしているようです。参考

サンプルコード

以下でCausalML/EconMLのサンプルコードを公開してみました。

github.com

内容としては、冒頭で紹介した書籍効果検証入門~正しい比較のための因果推論/計量経済学の基礎の「3.4 LaLondeデータセットの分析」に説明されている「LaLondeデータセット」に対して、ATE/ATT/ATU/CATEなどを計測してみたという内容になっています。

X-Learner、T-Learner、S-LearnerについてはCausalMLとEconMLで近しい結果になったので、使い方も間違っていないと考えているのですが、DR(=Double Robust) Learnerの結果はだいぶ違ってしまいました。 
「Double Robustとはなんぞや?」を考えさせられる結果になってしまっています。

まとめ

因果推論x機械学習を使うことで、A/Bテストを超える価値を模索できることやその使い方を駆け足ではありますが、紹介させていただきました。

ここで得た知見をもとに業務に活かせないか試行錯誤中です。

今回のサンプルコードでは各モデルの選定、ハイパーパラメータチューニングにPycaretを使ったため、ハイパーパラメータまで細かく設定した上で機械学習モデルを適用しています。

ちょっと前までは、モデルの選定、ハイパーパラメータチューニングは知識と手間がかかるし面倒だと思ってましたが、すんげー便利になったもんだと感じました。