解約しそうな顧客にクーポンを配る、購入しそうな見込み客に営業が電話をかける。こうした施策の対象は、多くの場合反応しそうな人のスコアの高い順に選ばれています。
ところが、施策のあとに数字を振り返ると、思ったほど売上が伸びていないことがあります。反応した人の多くが、実はクーポンがなくても買っていた人だったとしたらどうでしょうか。
この記事では、施策で行動が変わる人だけを見つけ出すためのアップリフトモデリングを解説します。予測モデルとの違い、代表的な作り方、良し悪しの測り方、実務の落とし穴まで、順番に見ていきます。
アップリフトモデリングとは何か
アップリフトモデリングは、ある施策を当てた場合と当てなかった場合で、一人ひとりの行動がどれだけ変わるかを予測する手法です。アップリフト(uplift)は押し上げを意味し、施策による上乗せ分のことを指します。
統計学の言葉では、個人ごとの条件付き平均処置効果(CATE)を推定する問題として扱われます。難しく聞こえますが、要するに、この人にはこの施策が何ポイント効くのかを予測するということです。
予測モデルとの違い
普通の予測モデルは、ある人が買うかどうか、解約するかどうかの確率を予測します。一方のアップリフトモデルが予測するのは、施策があるときとないときの確率の差です。
購入確率が80%の人でも、クーポンなしで78%買うなら、クーポンの効き目はわずか2ポイントです。逆に購入確率が20%の人でも、クーポンなしでは5%しか買わないなら、効き目は15ポイントあります。
予測モデルは前者を上位に置き、アップリフトモデルは後者を上位に置きます。同じ顧客リストでも、並び順がまったく違ってくるわけです。
4つの顧客タイプ
アップリフトモデリングの説明でよく使われるのが、施策への反応で顧客を4つに分ける考え方です。次の表は、クーポン配布を例にした整理です。
| タイプ | クーポンあり | クーポンなし | 施策の扱い |
|---|---|---|---|
| 説得可能な人(Persuadables) | 買う | 買わない | 最優先で当てる |
| 鉄板の人(Sure Things) | 買う | 買う | 当てても上乗せなし |
| 見込みなしの人(Lost Causes) | 買わない | 買わない | 当てても上乗せなし |
| 寝た子(Sleeping Dogs) | 買わない | 買う | 当てると逆効果 |
アップリフトモデリングの目的は、この表のいちばん上の人を見つけることに尽きます。そして同じくらい大切なのが、いちばん下の寝た子を起こさないことです。
なぜ反応しそうな人を狙うと無駄打ちになるのか
反応確率の高い順に施策を当てるやり方は、直感的にはとても合理的に見えます。それでも無駄打ちが起きるのは、反応した人と施策で動いた人が別物だからです。
スコア上位は鉄板の人に偏る
購入確率の予測スコアで上位に来るのは、もともと買う気の強い人たちです。その中には、何もしなくても買う鉄板の人が多く含まれています。
鉄板の人にクーポンを配ると、売上は増えずに値引き分だけ利益が減ります。施策のレポート上は高い反応率が出るので、成功したように見えるのが厄介な点です。
数値で見る違い
具体的に比べてみます。以下の数値はすべて説明用の仮定で、10,000人の顧客に予算の都合で2,000人だけクーポンを配るケースを考えます。
予測スコア上位2,000人に配ると、クーポンありの購入率が40%、もし配らなかった場合でも35%だったとします。上乗せは5ポイントなので、施策で増えた購入は2,000人×5%で100件です。
一方、アップリフトの予測上位2,000人に配ると、クーポンありの購入率は25%、配らなかった場合は13%だったとします。上乗せは12ポイントで、増えた購入は240件になります。
反応率だけを見れば前者の40%が圧勝です。しかし施策が生んだ購入の数では、後者が2倍以上の成果を出しています。
寝た子を起こすリスク
もう一つの落とし穴が、施策が逆効果になる人の存在です。解約防止の電話やメールが、契約していたこと自体を思い出させ、かえって解約を後押ししてしまう場面は、業界でよく語られるパターンです。
解約リスクの高い人ほど連絡が逆効果になりやすい、ということも珍しくありません。反応確率だけを見るモデルには、この逆効果を見分ける仕組みがそもそもありません。
アップリフトを推定する代表的な手法
一人の人について、施策を当てた世界と当てなかった世界の両方を観測することはできません。そこでアップリフトモデリングでは、似た人たちの集団を比べることで、個人ごとの差を間接的に推定します。
前提はランダム化された実験データ
最も信頼できる材料は、施策を当てる人と当てない人をランダムに分けた実験のデータです。対象者の一部を対照群として残しておくホールドアウトの考え方は、インクリメンタリティテストとは?|広告の因果効果をホールドアウトで測る考え方で詳しく解説しています。
インクリメンタリティテストが施策全体の平均効果を測るのに対し、アップリフトモデリングはその効果が誰に大きく、誰に小さいかまで分解します。言い換えると、同じ実験データを二度おいしく使う方法でもあります。
2モデル法
いちばんわかりやすい作り方が、2モデル法です。施策を当てたグループだけで購入確率のモデルを1つ、当てなかったグループだけでもう1つ作り、同じ人について2つの予測値の差をとります。
機械学習の文脈ではT-learnerとも呼ばれます。仕組みが単純で、手元の予測モデルの技術をそのまま流用できるのが利点です。
ただし、2つのモデルの誤差がそれぞれ差に乗ってくるため、効果が小さい施策ほどノイズに埋もれやすいという弱点があります。
1モデル法とクラス変換
1モデル法は、施策の有無を特徴量の一つとして加えた1つのモデルを作り、施策ありとなしを入れ替えて予測した差をアップリフトとします。S-learnerとも呼ばれ、データを1つのモデルに集約できる点が強みです。
クラス変換法は、実験群で買った人と対照群で買わなかった人を1、それ以外を0とする新しいラベルを作り、それを予測する方法です。施策の割り当てが半々に近い実験なら、この変換後のラベルを予測することが、そのままアップリフトの大きさを並べることにつながります。
ほかにも、決定木の分割基準を施策の効果の差に置き換えたアップリフト木など、さまざまな派生があります。最初は2モデル法で手触りをつかみ、必要に応じて他の手法と比べるのが現実的です。
使える道具
Pythonでは、オープンソースのライブラリがいくつか公開されています。scikit-upliftはscikit-learnと同じ書き方で1モデル法やクラス変換法を扱え、後述するQini曲線などの評価指標もまとめて提供しています。
Uberが公開したCausalMLは、実験データだけでなく観察データからも個人ごとの効果を推定するためのパッケージです。キャンペーンの対象者最適化を代表的な用途として挙げています。
観察データを使う場合は、施策を受けた人と受けていない人の違いを揃える工夫が欠かせません。その考え方は傾向スコア(Propensity Score)とは?|機能を使った人ほど継続する理由を、比べる相手を揃えて確かめるが参考になります。
モデルの良し悪しをどう測るか
アップリフトモデリングで最も戸惑うのが評価です。普通の予測モデルなら予測と実際の正解を照らし合わせればよいのですが、ここではその正解がありません。
正解ラベルが存在しない問題
ある人のアップリフトの正解を知るには、施策を当てた場合と当てなかった場合の両方の結果が必要です。しかし現実には、どちらか片方しか観測できません。
そこで評価は、個人ではなく集団単位で行います。モデルが予測したアップリフトの高い順に人を並べ、上位の集団の中で実験群と対照群の購入率の差を計算するのが基本です。
Uplift@kとQini曲線
上位k%の集団での購入率の差をUplift@kと呼びます。予算で対象者の割合が決まっているなら、その割合でのUplift@kが最もわかりやすい指標です。
対象者の割合を0%から100%まで動かしながら、施策で増えた購入数の累計を描いたものがQini曲線です。ランダムに選んだ場合の直線より上に大きく膨らむほど、モデルが説得可能な人を上位に集められていることを意味します。
計算の流れを、仮の数字で書き下すと次のようになります。
# 予測アップリフトの高い順に並べた上位20%の集団(数値は説明用の仮定)
実験群: 1,000人中 250人が購入 → 購入率 25.0%
対照群: 1,000人中 130人が購入 → 購入率 13.0%
Uplift@20% = 25.0% - 13.0% = 12.0ポイント
# Qini曲線の1点(上位20%時点の増分購入数)
増分 = 実験群の購入数 - 対照群の購入数 × (実験群の人数 / 対照群の人数)
= 250 - 130 × (1,000 / 1,000) = 120件
この点を10%刻みなどで計算してつなぐと曲線になり、曲線とランダムの直線に挟まれた面積をQini係数と呼びます。Qiniという指標は、アップリフトモデリングの普及に関わった研究者のNicholas Radcliffeが提案したもので、scikit-upliftの資料でも彼の論文が参照されています。
評価用のデータを分けておく
評価には、モデルの学習に使っていない実験データを必ず使います。学習に使ったデータで測ると、偶然の差まで覚え込んだモデルが過大に良く見えるからです。
アップリフトはもともと小さな差を扱うので、この過大評価の影響が予測モデルよりも大きく出ます。学習用と評価用に分けたうえで、上位の集団の人数が十分に多いかも確認してください。
実務での使いどころと落とし穴
アップリフトモデリングが真価を発揮するのは、施策にコストがかかり、しかも全員には当てられない場面です。代表的な使いどころと、つまずきやすい点を整理します。
向いている場面
使いどころとして多いのは、次の3つの場面です。いずれも、施策を当てる人数を絞るほど得をする構造を持っています。
- 値引きやポイントのように、当てるたびに利益が削られる施策
- 解約防止の連絡のように、逆効果になる人が混ざりうる施策
- 営業の架電やデモ提案のように、1件あたりの人件費が高い施策
解約防止なら、カスタマーヘルススコアとは?|解約の兆候をデータで捉える仕組みで解約リスクの高い顧客を見つけたうえで、その中から連絡が効く人を選ぶという二段構えが有効です。リスクの高さと施策の効きやすさは別の軸だと考えると、整理しやすくなります。
営業の現場では、リードスコアリング|行動データで精度を上げる設計と着手順で作った購入確率のスコアと並べて使う形が考えられます。確率が高いうえに架電が効く人を優先し、確率は高いが架電が効かない人はセルフサーブに任せる、といった振り分けができます。
実験データの量が足りない
アップリフトモデリングの最大の壁は、学習に使う実験データの量です。施策の効果そのものが数ポイントしかないため、その差を人ごとに見分けるには、普通の予測モデルよりはるかに多くの対象者が必要になります。
対象者が少ないうちは、無理に個人単位のモデルを作らないのも賢い選択です。まずは新規と既存、プラン別といった大きなセグメントごとに効果の差を比べるだけでも、配布先を見直すには十分な手がかりになります。
対照群を残し続ける
モデルを作って運用を始めると、効く人にだけ施策を当てたくなります。しかし対照群をゼロにしてしまうと、モデルの劣化に気づけず、次のモデルを作る材料も失います。
顧客の状況や市場の環境は時間とともに変わり、半年前に効いた施策が今も効くとは限りません。対象者の一部を常にランダムな対照群として残す運用が、モデルを長く使うための保険になります。
何を結果とするかを先に決める
アップリフトは、何を結果として測るかで大きく変わります。クーポンの効果を購入の有無で測るのか、粗利で測るのか、90日後の継続で測るのかで、選ばれる人は変わります。
値引きで購入が増えても、その後の継続や単価が下がっていれば全体では損をしているかもしれません。結果の指標は、事業として最終的に増やしたいものにできるだけ近いものを選ぶべきです。
ウェブ上の行動を結果に使う場合も、何をコンバージョンとするかの定義は先に固めておきます。MonaLensのような計測ツールでファネルとCVの定義をはっきりさせておくと、実験群と対照群を同じ物差しで比べやすくなります。
まとめ
アップリフトモデリングは、施策を当てた場合と当てなかった場合の行動の差を人ごとに予測し、施策で動く人だけに資源を集中させる手法です。反応しそうな人を狙う予測モデルとは、問いの立て方そのものが違います。
作り方は2モデル法やクラス変換法などがあり、評価はUplift@kやQini曲線のように集団単位で行います。どの手法を使う場合でも、ランダム化された実験データと、学習とは別の評価データが土台になります。
まずは次の施策で、対象者の一部をランダムな対照群として残すことから始めてみてください。その小さな一手が、反応率ではなく上乗せで判断する文化への最初の一歩になるはずです。