こんにちは。アドテク事業でエンジニアをしている星野です。 主に広告配信・運用システムの開発を担当しています。 今回は、弊社広告配信システムにおける広告配信最適化の取り組みについてご紹介します。
背景
私が担当しているプロダクトでは、広告配信時に配信設定されている複数のクリエイティブから各配信割合に基づいて配信するクリエイティブを決定しています。
この配信割合の決め方は次のように複数通りあります。
- 均等:満遍なく配信する
- クリック/コンバージョン重視:クリック数やコンバージョン数を最も多く獲得できるように調整する
- カスタム:重みを設定して、特定のクリエイティブが頻繁に配信されるようにする
当プロダクトでは広告の運用者がカスタムで配信割合を調整でき、運用者の経験や専門知識を活用したきめ細かい調整によって高い広告効果を実現してきました。
しかし、広告枠は数百あり、クリエイティブは数千あるため、これらの配信割合を決めるには、配信設定などに多くの工数を要してしまいます。また、運用者にも高い能力が求められ、ノウハウも属人的になっていってしまいます。
システムによって、運用者の工数を減らしながらも熟練の技術と遜色無い広告運用を行うことを目的に広告配信最適化を行います。 現在、複数の手法を試して効果の良い方法を模索しています。
広告配信最適化
先に述べたように、広告配信では複数の候補から一つのクリエイティブを選んで広告枠に表示します。 この時クリック数を最大にすることを目標にした場合、しばらく均等に全ての候補を表示してクリック率(CTR)を調べ(探索)、CTRの高いクリエイティブを出す(活用)のが単純な方策として考えられます。
しかし、現実には広告の効果は一定ではなく時間帯やトレンドによって変化し続けています。 もし、選んだクリエイティブがトレンドに合ってなかったときは1クリック獲得までのコスト(CPC)が高騰することになってしまいます。 また、広告は繰り返し表示するとユーザーが見慣れてしまうなどして効果が落ちてしまいます(クリエイティブ枯れ)。
そのため、常に探索と活用が必要になってきますが、これらにはトレードオフの関係があるためバランスを考えることが重要になります。
広告クリエイティブの配信比率は、最適化することで広告効果を向上させつつCPCなどのコストを最小に抑えることができます。 現行では均等配信に加えて2通りの最適化方法を行っています。
均等配信
クリエイティブの表示回数が均等になるように配信します。 弊社広告配信システムでは以下のようなメリットやデメリットがあります。
メリット
- クリエイティブのコストを抑えられる
- 同じクリエイティブの表示頻度を抑えられるため、クリエイティブ枯れしにくい
デメリット
- 広告効果の悪いクリエイティブも広告効果の良いクリエイティブと同じように配信される
Thompson sampling
Thompson sampling(TS)を用いてクリック数が最大になるように配信割合を調整します。 広告配信の問題は多腕バンディット問題としてモデル化できます。TSは多腕バンディット問題に対する方策の一つです。 アルゴリズムの説明はたくさん存在していると思いますので、今回は当プロダクトに対しての見解をまとめます。
- バッチでステータスを更新する場合に都合が良い
- 活用されるクリエイティブが1通りに偏るとクリエイティブ枯れが発生しやすい(バンディットアルゴリズム全般で同様)
運用者による運用のシステム的な再現
こちらは、カスタムで運用者が行っていた広告運用の再現を目指したアルゴリズムです。 まず全原稿に均等に重みを配分し、クリックやコンバージョンのシェアに合わせて重みを追加の重みを配分していく仕組みになります。動きとしては焼きなましε-greedy に近い挙動になります。 こちらも見解をまとめます。
- コンバージョンを得るまで均等配信を続ける
- 収束後でも効果の低いクリエイティブが低割合で配信される
- 初期にクリックやコンバージョンが偏ると配信割合が偏りクリエイティブ枯れが起きる
- 重みのシェアを奪い合うため、時間が経過し各クリエイティブがコンバージョンを獲得し始めると、均等配信に戻っていく
改善案
前述した最適化方法からさらに進化した最適化方法へ飛躍する為に広告独自の性質を考慮する必要があります。
- クリエイティブの配信が偏るとコストが上がってしまう
- ユーザーに同一のクリエイティブが複数回接触すると広告効果が下がる
- ユーザーは短期間に複数回広告に接触する
- 広告効果は時間帯によって変化する
- 広告効果はユーザーによって異なる
これらの対策として、基本的に満遍なくクリエイティブを表示しつつ、クリエイティブとして広告効果の悪いものの配信頻度を下げるように以下の条件を満たす方法を考えました。
- Top_Nのクリエイティブを均等確率で出す
- 焼きなましε-greedyや温度付きSoftmaxのように条件や指標によって再探索を行う
これらの方法の結果を確認次第、文脈付きバンディットなどに挑戦していきたいと思います。
おわりに
今回は残念ながら案出しまでで、プロダクトに反映させて効果を確認できるところまで至っておりませんが、結果を出せ次第またご紹介できたらと思います。
アルゴリズムごとの比較は記載しませんでしたが、実運用する上での問題点等の参考になれば幸いです。