Blog

【就業型インターンBlog】A/Bテストにおけるサンプルサイズ計算機能の導入


こんにちは、AI事業本部 Dynalyst所属のデータサイエンティストをしている河野です。今回は就業型インターンで Dynalystにて働いて頂いた佐藤さんからの寄稿記事です。

以下本文です。


はじめに

AI事業本部のDynalystというオンライン広告配信を手がけるプロダクトにて2020年9月〜11月の約2ヶ月、インターンをしていた佐藤と申します。 本稿では、インターン中に取り組んだA/Bテストにおけるサンプルサイズ計算機能の導入について紹介します。

タスク背景

 Dynalystで行われているA/Bテスト

私が所属していたDynalystはリターゲティング広告を行うプロダクトです。リターゲティング広告とは、過去にアプリをダウンロードしたことがある、過去にサイトを訪問したことがあるなど、過去に反応があったユーザに対して広告を配信することで、再び広告対象に興味を持ってもらうことを目的とするものです。 Dynalystでは、この広告配信をよりよいものにするために、入札ロジックに関するA/Bテストや配信するクリエイティブに関するA/Bテストなど、複数のA/Bテストを常時行っています。

クリエイティブ評価の問題点

私が取り組んだA/Bテストにおけるサンプルサイズ計算機能の導入というタスクは、Dynalystでのクリエイティブ評価のA/Bテストに問題があるのではないか、という点から始まりました。 クリエイティブが良いのか、悪いのかを評価する場合にはCTRと呼ばれるクリック率を指標に判断を行います。そのため、Dynalystではクリエイティブ間のCTRに関する統計学的な検定を行うことで、効果のあるクリエイティブを選択するということを行っていました。 しかし、今までは検定の際にサンプルサイズを考慮していないという問題がありました。下の図のように、サンプルサイズが少ない場合にはCTRに統計学的に有意差がないとされた場合でも、サンプルサイズを増やすことでより小さい差を検出できるようになり、CTRに有意差があると判断される場合があります。そのため、検定の際のサンプルサイズを考慮していない状態では、本当に効果のあるクリエイティブを選択できていないかもしれません。この問題を解消するために、クリエイティブ評価のA/Bテストを行うのに十分なサンプルサイズを知る必要がありました。

 

タスク詳細

論文調査

上記の背景から、私のタスクはA/Bテストを行うのに十分なサンプルサイズの計算方法を論文から探すことから始まりました。最終的に、Jan and Shieh (2011)の式を用いることにし、以下の式でA/Bテストの際に必要なサンプルサイズを計算することにしました。

 

 

Slackボットへのサンプルサイズ計算機能実装

A/Bテストを行うのに十分なサンプルサイズの計算方法が分かったら、次はプロダクト内でサンプルサイズ計算機能を使えるようにする必要があります。 Dynalystでは、クリエイティブ作成チームがクリエイティブ評価のたびにデータサイエンティストの力を借りなくても済むように、クリエイティブ評価のA/Bテストの結果を教えてくれるDynalyst専用のSlackボットを運用しています。このSlackボットには、もともとクリエイティブ間のCTRに有意差があるかを教えてくれる機能がありましたが、今回のインターンではA/Bテストに必要なサンプルサイズを計算した上で、十分なサンプルサイズを確保するためにあと何日A/Bテストを行えば良いかをサジェストする機能の実装を行いました。実装後は下の画像のように、Slackボットで実験継続日数が分かるようになりました。

 

 

クリエイティブ配信量に関する調査

Slackボットへのサンプルサイズ計算機能の実装行ったあとは、クリエイティブ配信量に関する調査を行いました。SlackボットでA/Bテストに十分なサンプルサイズを確保するために必要な実験継続日数が分かるようにしたところ、あと数百日の実験が必要とサジェストされることが度々ありました。現状の検定では、サンプルサイズが不足していると考えられたため、不足している原因に関する調査を行いました。

クリエイティブ作成の背景

Dynalystではバンディットアルゴリズムに基づく広告配信とランダムな広告配信の双方を行っています。しかし、バンディットアルゴリズムで既に最適化されている広告配信に関して、CTRのような全体を集計する指標ではクリエイティブを正確に評価することができません。そのため、ランダムに配信された広告という一部のデータのみをA/Bテストの際のサンプルとして使用できるという制約がありました。また、クリエイティブ作成チームでは限られた期間でクリエイティブ作成のサイクルを回す必要があり、これもサンプルサイズを減らす制約になっています。 そんな中、Dynalystでは常時クリエイティブがテストのために必要以上に配信されている状況にありました。A/Bテストされるクリエイティブの数を減らすことができれば、クリエイティブあたりのランダム配信量を増やすことでき、A/Bテストに十分なサンプルサイズを確保できると考えられます。そのため、次に各クリエイティブのCTRを時系列で調査し、どのクリエイティブを配信停止することができるかを調査しました。

CTRの時系列調査

CTRを時系列で調査して判明したことは、集計ベースのCTRを時系列で見ると変動が激しく、これだけでは広告配信停止の意思決定をするのは難しいということです。この後の分析やクリエイティブ評価を最終的にどのように改善するのかという点に関しては、残念ながら私のインターン期間中には行えなかったため、メンターの方に引き継いでいただくことになりました。しかしながら、Dynalystでのクリエイティブ評価の実験 → 評価 → 改善 → 再実験のフローを見直すことにつながり、私自身も論文調査から実装まで行うという貴重な経験をさせていただくことができました。

 

さいごに

私は大学では経済学を専攻しており、インターンを始めるまでは開発経験などは一切ありませんでした。その中でも、Dynalystの皆さんに温かく受け入れていただき、プロダクトのことや使われる技術に関して丁寧に教えていただきました。また、経済学の知識が活かせるタスクに関わることもできるなど、私自身も非常にインターンを楽しむことができました。最高のチームだと思います。Dynalystの皆さんに感謝申し上げます。ここまでお読みいただきありがとうございました。

参考文献

Jan, SL., Shieh, G. Optimal sample sizes for Welch’s test under various allocation and cost considerations. Behav Res 43, 1014–1022 (2011).