mixi engineer blog

*** 引っ越しました。最新の情報はこちら → https://medium.com/mixi-developers *** ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

「インタレストターゲティング」リニューアルの裏側

こんにちは。下田@研究開発グループです。
前回は、かなりライトな「行って来ました」記事でしたので、今回はデータマイニング技術の活用事例の一つとして「インタレストターゲティング」という広告商品と、そのリニューアル案件についてご紹介します。

あらまし

mixiには「インタレストターゲティング」という広告商品があります。まだ僕が入社する前の2009年に研究開発グループが広告の部署と協力して作成したプロダクトになります。 リリース当初は効果が高く、人気の広告商品の一つだったそうですが、メンテナンス性やオペレーション部分に問題等を抱えており、つい最近、再度広告関係の部署と協力して、バックエンドを作り直し、新しい仕組みをリリースするに至りました。 2012年12月現在、販売している広告商品としては、2009年作のプロダクトが動いていますが、間もなく切り替わる予定となっています。

以下、2009年製の今も現役のインタレストターゲティングを「旧インタレストターゲティング」、今回開発した新しいインタレストターゲティングを「新インタレストターゲティング」と呼びます。

目次のようなもの

  • インタレストターゲティングとは?
  • 旧インタレストターゲティングの仕組み
  • 旧インタレストターゲティングの問題点
  • 新インタレストターゲティング
  • まとめ

インタレストターゲティングとは?

インタレストターゲティングとは、mixiにおける広告商品の一つで、mixi内の情報からユーザーの興味関心情報を取得し、その興味関心情報に合った広告を表示させて頂く、というターゲティング広告の一種です。 この広告には以下のような特徴があります。
  • ユーザーにとっては、自分の興味関心のある広告が表示される。逆に言うと興味関心のない、場合によっては不快に感じる広告は表示されない
  • 広告主にとっては、内容に興味関心がありそうなユーザーに絞って広告を表示することができるので、通常のバナー広告よりも高い効果が見込まれる

簡単にイメージを図にしてみました。

interest-targeting.png

旧インタレストターゲティングの実現方法

旧インタレストターゲティングでは、コミュニティへの参加情報をクラスタリングすることで興味関心情報を作成しています。大まかな流れは以下のようになっています。
  1. コミュニティの選別
  2. コミュニティのクラスタリング
  3. 複数のクラスタをまとめあげた広告商品の作成
  4. 興味関心情報をユーザーに振り分ける

ここでは各手法の詳細な部分には踏み込みませんが、あまり規模の大きくないコミュニティなど、いくつかの条件でコミュニティを選別し、クラスタリングを実施します。
コミュニティをクラスタリングするためのスコアとしては「メンバーの参加コミュニティ」(例えばこういったページ)で利用している関連コミュニティのスコアを利用しています。


クラスタリングの結果、得られたクラスタは「トヨタ」「日産」など比較的具体的なレベルでのまとまりとなることが確認されています。広告商品として成立させるためには、一定の配信ボリュームを確保する必要があるため、クラスタをさらに人手でまとめあげます。
例えば「トヨタ」「日産」「ホンダ」というクラスタをまとめあげ、「国産車」という商品を作成する、といった具合です。

clustering.png

旧インタレストターゲティングの問題点

さて、このようにして実現されたインタレストターゲティングですが、いくつかの問題を抱えていました。
  • 想定impression数の算出が即座に行えない
  • クラスタ自体の更新が困難である

想定impression数の算出が即座に行えない

想定impression数とは、配信前の広告が何impressionぐらい発生するか、という目安の数字になります。 インタレストターゲティングはimpression保証(販売したimpression数を期間中に達成できることを保証、達成できない場合は規約に則って補填を行う)の商品であるため、想定impression数は広告の販売営業を行う上で重要な指標となります。 旧インタレストターゲティングは、ユーザーに趣味嗜好情報を紐付ける仕組みとなっており、広告のimpressionに関する情報の活用は想定して作っていませんでした。

クラスタ情報の更新が困難である

広告商品はクラスタをまとめあげて作成しているため、クラスタリングの再実行を行うと、これまでと異なるクラスタが出来る可能性が高く(新しいタイプのコミュニティの増加、前回のクラスタ時に存在したコミュニティの消滅、ユーザー層の変化、etc..)既存の実績ある広告商品が消滅してしまいます。

re-clustering.png


そのため、クラスタの更新はある時点で停止しており、最新のmixi内の興味関心情報を完全には活用できていない状態(例えば、最近興味関心のボリュームが多そうなAKBやスマートフォンなどといったもの)でした。
比較的最近話題になっている興味関心情報への対応ができていないため、大きな機会損失となっていました。

上記の問題点について、以下のようなアプローチで開発を行いました。
  • 新しい広告商品作成方式を採用。具体的には、中間データであったクラスタを廃止し、コミュニティを直接組み合わせる形で広告商品を作成する
  • Hive/Honeyを活用して想定impression算出の機能を持たせる

新しい広告商品作成方式

興味関心情報の「種」となるコミュニティを選択し、そのコミュニティとの関連度の高いコミュニティを集めることで広告商品を作成する、という方式です。 関連度については、旧インタレストターゲティングと同じく関連コミュニティのスコアを利用しました。 この方式の一番の利点としては、コミュニティの追加と削除が用意なため、クラスタリングというブラックボックスからの結果に依存することなく、柔軟に広告商品を作成することができるということです。

新インタレストターゲティングの商品作成のイメージ図は以下の通りです。クラスタリングというブラックボックスを排除することで、柔軟に広告商品を作成できるようになりました。

new-interest-targeting.png

Hiveを活用することによる想定impression算出の機能

広告が表示されるページのアクセスログから近似的なimpression数の算出を行いました。巷で噂のHoneyを活用して処理を記述しています。 具体的には、想定impression算出対象の広告商品に紐付くユーザーの、直近7日間のアクセスログから平均impression数/dayを算出するというものです。 処理の流れは以下のようになっています。
  • 管理ツールから想定impression算出ボタンを押す
  • 定期実行バッチ(Honeyスクリプト)が算出対象となっている広告商品情報を取得して、集計処理を行うHiveQLを発行し、集計を実行する
  • 集計結果をMySQLに保存し、管理画面から確認できるようになる

estimate-impression.png

効果など

広告主の方々に協力していただき、いくつかのキャンペーンでターゲティングなし、旧インタレストターゲティング、新インタレストターゲティングを同時に配信して効果検証を行いました。おおむね新インタレストターゲティングに統計的に有意な効果があることが確認できました。 オペレーション面やメンテナンス性の向上と併せて、無事にバックエンドの置き換えが決定されるに至りました。

まとめ

最近では「アドテク」「デジタルマーケティング」という言葉が取りざたされていますが、広告に関するデータを保有/分析/活用することは今後大きな可能性を秘めている分野だと思います。今後も積極的に広告データの活用について考えて行きたいと思います。

研究開発グループでは、広告以外にもmixiの裏側で活用される技術の研究開発活動も行なっていますので、機会があればサービスの裏側に関する情報もご紹介できればと思っています。