## 定義 A/Bテストとは、Webサービスにおいて一定数の利用者にパターンを出し分け、同一期間内にその成果を比較するテスト手法である。2パターンに限らず複数パターンを同時に比較する場合も含む。期間をずらして比較すると季節性などの外部要因の影響を受けて意味を成さなくなることがあるため、同一期間内に母集団を分割して比較できる点がA/Bテストの利点になる。デザインや文言の比較だけでなく、機械学習モデルの検証にも有効である。(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 3 学習結果を評価するには]] §3.3) 機械学習の文脈でA/Bテストが必要になる理由は、**オフライン評価だけでは不十分**だからである。[[分類モデルの評価指標]]・[[回帰の評価指標]]のようにオフラインで測れるのは適合率・再現率・RMSE等のモデル単体の指標にとどまり、実際に購入や登録などのコンバージョンに至ったかというビジネスKPIは別途オンラインで確認する必要がある。また、事前に考慮していなかったトレンドの変化のような要因は、オフライン評価では捉えられずオンラインでの比較で初めて見える。A/Bテストができるシステム構成にしておくと、新しいモデルの段階的なリリースや切り戻しも可能になり、検証のイテレーションサイクルを速く回せる副次的な利点もある。(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 3 学習結果を評価するには]] §3.3) A/Bテストの設計・実施の詳細は7章(以下)で扱われる。バンディットアルゴリズムとの関係も11章(後述)の主題である。 ### A/Bテストの設計と実施(7章) A/Bテストは、[[因果効果の推定]]が扱うランダム化比較試験(RCT)によるセレクションバイアスの除去と、2群の同時比較による時間変化影響の除去という2条件のもとで本番環境で行うテストである。流れは、指標の選定・2群の抽出・A/Aテスト(ランダム抽出した2群に実際に差がないかの事前確認)・片方への介入・結果の確認・テスト終了となる。標本サイズには、既存ユーザーを2群に分けて1回だけ検証するため2群作成時点で標本サイズが固定されるパターンと、新規訪問がある限り標本サイズが増え続けるパターンがある。標本サイズが不足するとテストのやり直しになる一方、大きすぎるとテストの影響を受けるユーザー数が増え他のテストと同時実施できなくなるため、部分抽出が望ましい。テスト実施ごとに2群の抽出をやり直し、前のテストの影響を引き継がないようにする必要もある。(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 7 効果検証:機械学習にもとづいた施策の成果を判断する]] §7.4, §7.4.1, §7.4.3) 判定には[[統計的有意性]]が扱う仮説検定の枠組みを使うが、逐次観測データが得られ標本サイズが増え続けるオンラインA/Bテストは、任意のタイミングで終了判断が行える点で従来の固定標本の仮説検定と区別しSequential A/B Testingと呼ばれることがある。結果変数の時系列プロットに信頼区間を重ね、信頼区間が分離した時点を差の判断材料にする運用が実務的だが、p値を継続監視して有意になった時点でテストを止める(p値ハック)リスクに注意が必要であり、これは[[逐次検定]]が扱うpeeking問題そのものである。(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 7 効果検証:機械学習にもとづいた施策の成果を判断する]] §7.3.6, §7.4.2) 落とし穴として、2つの施策を同時に実施すると互いに影響する相互作用(同一の広告オークションへの入札等)、機械学習特有の学習データ汚染(稼働中モデルが生成したログを他モデルの学習データに使うことで生じる技術的負債)、そして「もともとゼロで負の値を取らないKPIを評価指標に選ぶ」ことで見かけ上必ず成功させてしまう母集団ハックがある。母集団ハックを見抜くには、母集団が絶対にゼロのセグメントを使っていないか、複数施策が1つの群に混ぜ込まれていないか、ベースラインの施策が正しく設計されているかを確認する。(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 7 効果検証:機械学習にもとづいた施策の成果を判断する]] §7.4.4, §7.4.5, §7.8) ### A/Bテストの拡張としてのUplift Modeling(10章) 3章・7章までのA/Bテストは、母集団全体に対して「どちらのパターンが優れているか」を1つの数字(反応率の差など)で判定する。10章のUplift Modelingは、A/Bテスト(RCT)と同じ実験群/統制群のデータ構造を出発点にしながら、判定の粒度を個体レベルまで細かくする拡張である。バナー広告A/Bテストの例(表10-2)では、反応率だけを見るとバナー広告Bを全員に出す判断になるが、性別という特徴量の軸で分解すると(表10-3)男性にはA、女性にはBが有効であり、平均のみで判断するとこの逆転を見逃す。Uplift Modelingは、この「介入行為なしでどう行動するか」「介入行為ありでどう行動するか」を軸に対象を無関心・説得可能・天邪鬼・鉄板の4セグメントに分け、介入に反応する説得可能セグメントだけに介入行為を絞り込むことで、A/Bテストが見逃す個体差を利用する。(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 10 Uplift Modelingによるマーケティング資源の効率化]] §10.1, §10.2) ### バンディットアルゴリズムとの関係(11章): 固定割当から動的割当への一般化 11章は、A/Bテストを[[多腕バンディット]]・[[探索と活用のトレードオフ]]の枠組みで再定式化する。A/Bテストは「100%ランダムに配信してから、事後分布が収束した時点で標本平均のもっとも高いパターンへ全配信を切り替える」バンディットアルゴリズムの特殊ケースとみなせる。すなわちA/Bテストは、探索(ランダム割当の期間)と活用(勝ちパターンへの全配信)が時間的に完全に分離された、静的な2段階の割当方式である。これに対しバンディットアルゴリズムは、Bayesian-UCB・UCB1・Thompson Samplingのように母平均の事後分布の不確実性を評価値へ連続的に反映させ、各試行のたびに割当比率を動的に更新する。A/Bテストが難しいのは、探索(A/Aテスト・標本サイズ設計)から活用(全配信)へ切り替えるタイミングを人間が統計的に判断しなければならない点にあり、バンディットアルゴリズムを採用することはこの意思決定コストをシステムに委ね、改善サイクルを速めることに繋がる。一方でバンディットアルゴリズムは報酬が短期間で観測できることを前提とするため、コンバージョンまでの期間が長い中長期的な効果測定(デザイン変更によるアプリ起動率の変化等)には、動的に配信対象を変更しないA/Bテストの方が適する。(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 11 バンディットアルゴリズムによる強化学習入門]] §11.10) ### 実環境でのテストとしてのA/Bテスト(『機械学習システムデザイン』9章) 『機械学習システムデザイン』9章は、A/Bテストを静的なテスト分割・バックテストといったオフライン評価の限界を補う「実環境でのテスト(test in production)」の一手法として位置づける。手順は、候補モデルを現行モデルと並行デプロイし、一定割合のトラフィックを候補モデルへランダムに振り分け、双方の予測とユーザーフィードバックを監視して統計的に有意な違いがあるかを見極める、という3ステップである。2017年時点でMicrosoftやGoogleは年間1万件を超えるA/Bテストを実施している。(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]] §9.2.2) A/Bテストを正しく実施する条件として、(1) トラフィックの振り分けが完全にランダムであること(スマートフォンユーザーとPCユーザーで振り分け先が異なるような選択的バイアスがあると結果が無効になる)、(2) 十分な数のサンプルで実施することの2点を挙げる。また、あるモデルの予測が別のモデルの予測に影響を与える相互依存のケース(ライドシェアの動的価格設定で、あるモデルの予測価格が配車可能なドライバー数に影響し他のモデルの予測にも波及する例)では、トラフィックを同時分割せずモデルを日替わりで交互稼働させる必要があるとする。統計的有意性についてはp≦0.05を例に、これが「同じテストを繰り返すと95%の確率で同じ優劣が再現され、5%の確率で逆の結果になりうる」ことを意味すると説明し、有意差が出なかったことは失敗ではなく「両モデルに大差がない」可能性を示すとする。バリアントが2つを超えるA/B/CテストやA/B/C/Dテストも実施可能である。(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]] §9.2.2) ## 横断的知見 - **同じ書籍内の3章と7章が、A/Bテストの「なぜ必要か」と「どう設計・実施するか」を分業して扱っている**: 3章はA/Bテストを「オフライン評価の限界を補うオンライン評価」という必要性の観点からのみ導入し、設計の詳細を明示的に7章へ委譲していた。7章はその委譲を受け、RCTという理論的裏付け・標本サイズ設計・継続的テストの終了判定・A/Aテスト・相互作用・学習データ汚染・母集団ハックという実施面を積み上げる。両者を合わせて初めて「なぜ要るか」と「どう作るとうまくいくか/失敗するか」の両輪が揃う構成であり、単一チャプターでは片方しか得られない。(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 3 学習結果を評価するには]], [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 7 効果検証:機械学習にもとづいた施策の成果を判断する]]) - [[制御ロールアウト]]は「段階的ロールアウトの各リング内でオンライン制御実験(OCE/A/Bテスト)を実行する」手法として、A/Bテストをデプロイ工学の枠組みに組み込んでいる。本ページが機械学習モデルの評価という観点からA/Bテストの必要性を述べるのに対し、[[制御ロールアウト]]はソフトウェアデプロイのリスク低減という観点からA/Bテストを部品として使っており、両者の「A/Bテスト」が指す実施粒度(モデル単位か、コードリリースのリング単位か)の異同は今後別ソースが加わった際に突き合わせる。 - 3章・7章のA/Bテストが「母集団全体でどちらが優れているか」という判定にとどまるのに対し、10章の[[Uplift Modeling]]は同じRCTデータ構造(実験群/統制群)を土台にしながら判定の粒度を個体レベルまで細分化する。この接続は10章の本文で表10-2(全体反応率のみ)→表10-3(性別で分解すると逆転)という具体例を通じて明示的に示されており、A/Bテストの限界(全体平均でのみ判断すると個々のセグメントの反転を見逃す)をUplift Modeling導入の動機として使っている。(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 3 学習結果を評価するには]], [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 10 Uplift Modelingによるマーケティング資源の効率化]]) - **A/Bテストは「探索と活用のトレードオフを固定割当で解く」特殊ケース、バンディットアルゴリズムは同じトレードオフを動的割当で解く一般化である**: 7章が積み上げたA/Bテストの実施上の難点(A/Aテストでの事前確認、標本サイズの事前設計、いつテストを終了するかという逐次検定の問題)は、11章の視点では「探索期間と活用期間を人間が事前に固定して切り分けている」ことに起因する構造的な帰結として説明し直せる。11章のBayesian-UCB・UCB1・Thompson Samplingは、この固定的な2段階構造を、母平均の事後分布の不確実性に応じて割当比率を連続的に更新する動的な構造へ置き換える。7章がSequential A/B Testing(§7.4.2)でp値ハック・peeking問題への対処に苦心していた部分は、11章の観点では「探索と活用の境界をシステムに委ねる」ことで意思決定コストごと解消される問題として位置づけられる。ただし11章自身が明示するとおり、この一般化が有効なのは報酬が短期間で観測できる場合に限られ、7章が扱う中長期的な効果測定(デザイン変更の影響等)ではA/Bテストの静的な構造の方が適する。(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 7 効果検証:機械学習にもとづいた施策の成果を判断する]], [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 11 バンディットアルゴリズムによる強化学習入門]]) - **『仕事ではじめる機械学習』7章のSequential A/B Testing(peeking問題)と、『機械学習システムデザイン』9章のp値の意味の説明は、異なる企業文脈から独立に「統計的有意性の誤解」という同じ落とし穴を指摘する**: 7章§7.4.2は逐次観測データが得られるオンラインA/Bテストにおいて、p値を継続監視して有意になった時点でテストを止めるp値ハック(peeking問題)を実務上の落とし穴として警告する(既出)。9章§9.2.2はこれとは独立に、p≦0.05という結果自体が「同じテストを繰り返せば5%の確率で逆の結果になりうる」という不確実性を内包していることを説明し、統計的有意性が「完全に誤解の余地がないというわけでもない」と釘を刺す。7章は「いつテストを止めるか」という手続き上の誤用を、9章は「有意という結果それ自体の解釈」という認識上の誤用を扱っており、異なる観点からA/Bテストの結果を鵜呑みにする危険性に到達している。(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 7 効果検証:機械学習にもとづいた施策の成果を判断する]] §7.4.2, [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]] §9.2.2) - **9章が挙げるモデル間の相互依存(動的価格設定でモデルAの予測がモデルBの予測対象に影響する例)は、7章が指摘する「2つの施策の相互作用」という落とし穴の、機械学習モデル間依存という具体例である**: 7章§7.4.4は2つの施策を同時に実施すると互いに影響する相互作用(同一の広告オークションへの入札等)を落とし穴として挙げるが(既出)、対処法は明示していない。9章§9.2.2はこれと同型の問題を「あるモデルの予測が別のモデルの予測に影響を与えるケース」として具体化し、対処法として「モデルAを1日、モデルBを次の日というように交互に稼働させる」という時間的分離のアプローチを提示している。7章が問題の存在を指摘するにとどまるのに対し、9章は機械学習モデル特有の文脈で具体的な回避策まで踏み込んでいる。(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 7 効果検証:機械学習にもとづいた施策の成果を判断する]] §7.4.4, [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]] §9.2.2) ## 未解決の問い - オフライン評価とオンライン評価(A/Bテスト)の結果が食い違う場合、どちらを優先すべきかの判断基準は何か。 - Sequential A/B Testing(§7.4.2)は「信頼区間の分離を目安に終了判断する」という実務的ヒューリスティックにとどまり、[[逐次検定]]が扱うanytime-valid inference(全観測時点にわたる型Iエラーの厳密な同時制御)のような理論的保証を伴わない。両者を接続し、実務的な終了判定に理論的保証を持たせる具体的な手続きは本ソースの範囲外。 - Off Policy Evaluation(OPE、7章§7.5.3)はA/Bテストが実施できない場面のオフライン代替として言及されるが、A/Bテストの結果とOPEの結果が食い違う場合にどちらを信頼すべきかの基準は示されていない。 - Uplift Modelingへ拡張したときの標本サイズ設計は、7章のA/Bテストの標本サイズ設計(§7.4.1)とどう異なるか。セグメントごとに必要な標本数が増えるはずだが、10章はこの点を明示していない。 - 11章はA/Bテストをバンディットの特殊ケースと位置づけるが、A/Bテストが本来持つ「A/Aテストによる事前確認」「標本サイズの事前設計に基づく検出力の保証」といった統計的な厳密さは、動的割当のバンディットアルゴリズムに置き換えた場合どの程度失われるか(あるいは別の形で確保できるか)は、11章・7章のいずれにも明示的な記述がなく未整理。 ## 関連 - source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 3 学習結果を評価するには]] / [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 7 効果検証:機械学習にもとづいた施策の成果を判断する]](設計・実施の詳細) / [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 10 Uplift Modelingによるマーケティング資源の効率化]](個体レベルへの拡張) / [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 11 バンディットアルゴリズムによる強化学習入門]](バンディットアルゴリズムによる一般化) / [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]](実環境でのテストとしての位置づけ、統計的有意性の解釈、モデル間相互依存への対処) - concept: [[分類モデルの評価指標]] / [[回帰の評価指標]](オフライン評価の指標。A/Bテストが補うオンライン評価との対比) / [[制御ロールアウト]](A/Bテストをデプロイ工学の部品として使う関連概念) / [[統計的有意性]](A/Bテストの判定に必要となる仮説検定の枠組み) / [[逐次検定]](継続的なA/Bテストのp値ハック・peeking問題) / [[因果効果の推定]](A/Bテストが実装するRCTの理論的基盤) / [[Uplift Modeling]](A/Bテストの判定粒度を個体レベルへ拡張する手法) / [[多腕バンディット]] / [[探索と活用のトレードオフ]](A/Bテストが特殊ケースとなる一般的な問題設定) / [[カナリアテスト]](構成が類似する別の実環境でのテスト手法) / [[シャドウデプロイ]] / [[インターリービング試験]](A/Bテストの代替・派生となる実環境でのテスト手法) / [[継続的トレーニング]](A/Bテストが検証するモデル更新の主体) ## 出典 - 有賀康顕・中山心太・西林孝, 『仕事ではじめる機械学習 第2版』, オライリー・ジャパン, 2021, 第3章, §3.3, 第7章, §7.4, §7.8, 第10章, §10.1, §10.2, 第11章, §11.10. - [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]] — Chip Huyen 著, 江川崇・平山順一 訳, 『機械学習システムデザイン』, オライリー・ジャパン, 2023, 9章, §9.2.2.