LIVESENSE ENGINEER BLOG

リブセンスエンジニアの活動や注目していることを発信しています

A/B テストの結果を人にやさしく表示する

Livesense Advent Calendar 2021 の 3 日目を担当しますテクノロジカルマーケティング部の池谷です。

以前以下のような記事を書きましたが、今回はその続きです。

made.livesense.co.jp

やったこと

私が所属するチームでは、 A/B テストの実施を補助する社内ツールとしての Web アプリケーションを開発・運用しています。

Brain Optimizer と呼ばれるこのツールは、パターン振り分けのエンドポイントを払い出したり、テスト結果を確認したりできる機能を持っています。

今回、以下のように A/B テストの結果どちらのパターンが勝ったのかをグラフィカルに確認できるようにしました。分布の表示だけでなく勝率も併せて表示することで、深い統計的知識がなくとも手軽に統計学の恩恵を受けられるようになりました。

課題

Brain Optimizer には以前から A/B テストの結果を表示する機能はあったのですが、それは以下のようなものでした。

集計値

まずは集計値のグラフ表示です。アクセス数やコンバージョン数、CVR の日毎のデータや累積値を一覧できるようにしています。

集計された CVR を比較して大きいほうを選ぶ場合、確率的な誤差を定量的に扱うことができません。 「集計値の上では A パターンのほうが良いが、こちらのほうが運用コストがかかる」のように集計値を単純に大小比較できない場合は、感覚的に選択肢を選ぶことになり、意思決定を間違うリスクを必要以上に負うことになってしまいます。

p 値

そこで、申し訳程度に p 値も表示していました。両パターンの CVR が一致するという帰無仮説のもとでの p 値です。しかしこの概念を正しく扱うためには統計に対する理解が必要となり、利用者を選びます。

解決策

そこで、ベイズ統計に基づいたテスト結果を表示するようにしました。ベイズ統計はあの Google Optimize にも採用されているものです (Google Optimize のドキュメント)。

p 値はどちらかというと頻度論的な統計学で登場する概念です。A/B テストにおける、頻度論とベイズ論の違いは個人的には以下のようなものだと考えています。

頻度論 ベイズ論
メリット 計算自体は実装が簡単 勝率などの解釈が直感的
デメリット p 値などの解釈が難しい 実装が難しく、大きめのコンピューティングリソースを必要とする場合がある

この実装を行う前から、ベイジアンな Bandit アルゴリズムによってパターンの振り分け比率を自動更新する機能がありました。そのため、PyStan を用いた MCMC アルゴリズムを新たに実装する必要はありませんでした。また、GKE や Argo Workflow による並列実行などを活用しており、上の表のデメリットは大きくありませんでした。

Kubernetes を利用したコンテナベース機械学習基盤の構築 - LIVESENSE Data Analytics Blog

Argo によるコンテナネイティブなデータパイプラインのワークフロー管理 - LIVESENSE Data Analytics Blog

今後

勝率等を表示することで、A/B テスト結果の解釈を容易にするよう社内ツールの改善を行いました。今後はツールの上だけではなく、施策立案や A/B テストの計画の段階から、社内の方が統計学的な観点から議論ができるようサポートをしていきたいと思っています。