9月13日、Towards Data Scienceが「Your AI Adoption Lift Is a Selection Effect」と題した記事を公開した。この記事では、合成データを用いたシミュレーションにより、AI機能のオプトイン導入で観測される「効果」の大半が選択バイアスによるものであることを検証し、因果効果を正しく推定するための手法を紹介している。
「AIを使った顧客は15ポイント継続率が高い」は本当か
多くのプロダクトチームの資料に、こんな一文が登場する。
「AIアシスタントを有効にした顧客は、そうでない顧客より継続率が15ポイント高い」
棒グラフ付き、経営レビュー3回登場済み、来期のロードマップを動かしている——そういう類の数字だ。
問題は、その比較は「AIがユーザーを引き上げた」ことを示していないという点にある。AIを有効化するには、管理者がリリースに気づき、機能をオンにし、チームにトレーニングし、ワークフローに組み込み、目新しさが消えた後も使い続ける必要がある。この一連のステップを踏む組織は、そもそも製品への関与度が高く、AI機能がなくても継続率が高い。「導入した企業」というフラグは、AIの効果ではなく組織のレディネス(準備態勢)を測っているに過ぎない。
記事のキーメッセージはこの一文に集約される:
「顧客の選択をモデル化しようとするな。顧客が選んでいないバリエーションを探せ。」
合成データで確かめる:真の効果は+4ppなのに何が起きるか
記事では、4万件のB2Bアカウントからなる合成データセットを使って各手法の挙動を検証している。実際の顧客データではなく、著者が意図的に設計したシミュレーション用データであり、「真の効果」があらかじめ埋め込まれている点が重要だ。これにより、各推定手法が真値にどれだけ近づけるかを直接評価できる。設定は以下のとおりだ。
- AIアシスタントは25シート以上のアカウントのみ利用可能(よくあるSaaS製品のゲート設計)
- 対象アカウントの中でのオプトインは任意
- データ生成に使われた真の効果は+4ppの継続率改善
- アナリストには観測できない潜在変数「エンゲージメント」が、採用率と継続率の両方に影響
この設定で、単純な採用者/非採用者の比較を行うとどうなるか:
df.groupby('adopted')['retained'].mean()
# adopted=0: 0.531
# adopted=1: 0.685 gap: +15.4 pp
真の効果は4ppなのに、15ppの差が観測される。残りの約11ppは選択バイアス——主にエンゲージメントの高い組織ほどオプトインしやすいという構造から来ている。
対象アカウントを25シート以上に絞っても大差なく、採用者ギャップは+13.9ppに縮むだけだ。共変量(シート数、利用期間)で回帰調整しても+13.8ppとほぼ変わらない。観測可能な変数で調整しても、見えない交絡因子(エンゲージメント)が残り続けるためだ。
顧客が選ばなかった変動を使う:回帰不連続デザイン
ここで登場するのが**回帰不連続デザイン(RD: Regression Discontinuity)**だ。閾値の前後で処置の受けやすさが不連続に変化することを利用し、ランダム化比較試験(RCT)に近い条件を擬似的に作り出す因果推論の手法である。
25シートのゲートに着目する。24シートのアカウントはAIアシスタントを使えない。25シートのアカウントは使える。この2つの間に、組織のレディネスや管理者の意欲に関する系統的な差はない。閾値は任意であり、「顧客が選んでいない変動」そのものだ。
25シート前後のアカウントを比較することで、選択バイアスを排除した因果効果の推定が可能になる。技術的には、ファジーRD(Fuzzy Regression Discontinuity)——資格付与が採用を強制するわけではなく、可能にするだけ——を**操作変数法(IV: Instrumental Variables)**で実装する形だ。操作変数法とは、処置(ここではAI採用)と相関するが、結果(継続率)には処置を通じてのみ影響する「操作変数」を使って内生性(交絡)を取り除く推定手法である。閾値の上下(above)が操作変数に相当し、2段階最小二乗法(2SLS)で推定を行う。
from linearmodels.iv import IV2SLS
def fuzzy_rd(df, cutoff=CUTOFF, bw=10):
w = df[(df.seats >= cutoff - bw) & (df.seats < cutoff + bw)].copy()
w['x'] = w.seats - cutoff
w['above'] = (w.x >= 0).astype(int)
w['above_x'] = w.above * w.x
model = IV2SLS.from_formula(
'retained ~ 1 + x + above_x + [adopted ~ above]', data=w
).fit(cov_type='robust')
return model
m = fuzzy_rd(df, bw=10)
m.params['adopted'], m.std_errors['adopted']
# +0.049, se 0.037 95% CI: -0.024 to +0.121
閾値でオプトイン率は0%から37%に跳ね上がる。継続率の跳ね上がりは1.8pp。採用者1人当たりの効果(2SLS推定)は**+4.9pp、95%信頼区間は−2.4〜+12.1pp**。真の値+4ppを中心としたほぼ正しい推定が得られている。
推定値は2種類あり、答える問いが違う
RDから得られる推定量は1つではない。
| 推定量 | 推定値 | 答える問い |
|---|---|---|
| 縮約形(資格付与の効果) | +1.8pp(−0.9〜+4.5) | この閾値でアクセスを提供すると、継続率はどう変わるか(取り上げ率37%込み) |
| 2SLS(採用の効果) | +4.9pp(−2.4〜+12.1) | 資格付与によって採用を誘発されたアカウントに、採用は何をもたらしたか |
縮約形とは、操作変数(閾値の上下)が最終的なアウトカム(継続率)に与える総合的な影響を直接回帰で推定したものだ。2SLSがその効果を「採用1件あたり」に換算する手前の数字ともいえる。
閾値(シート数の条件)を変更する意思決定をするなら1行目、機能そのものの価値を議論するなら2行目が適切な数字だ。この区別を誤ってミーティングに持ち込むのは、最初の15ppスライドと同じ構造の誤りだと記事は指摘する。
信頼区間が広いのは「欠陥」ではない
RDの推定値は95%信頼区間が約14ppと広い。記事はこれを「欠陥ではない。手法が情報量の限界を正直に伝えている」と述べる。
ナイーブな比較の信頼区間が狭いのは、「簡単なことを測っているから」だ。RDの区間が広いのは、「識別に使える変動が閾値付近のわずかなアカウントに限られるから」だ。精度が高い間違った数字より、正直な広い区間の方が意思決定に役立つというのが記事の立場だ。
まとめ
オプトイン型AI機能の効果測定でよくある落とし穴を整理すると以下のとおりだ。
- 単純比較:採用者と非採用者を比べると選択バイアスが混入し、過大推定になる
- 回帰調整:観測できない交絡因子が残る限り、精度が高くても推定は誤り
- 回帰不連続デザイン:資格付与の閾値を「顧客が選んでいない変動」として活用することで、バイアスを取り除いた推定が可能になる
自社のSaaS製品でAIアシスタントや新機能の効果を測るチームにとって、「そのゲート設計に任意の閾値はないか」という問いは実務的な出発点になりうる。
詳細はYour AI Adoption Lift Is a Selection Effectを参照していただきたい。