Upload
shogo-osawa
View
604
Download
0
Embed Size (px)
Citation preview
段階的FQの技巧サイバーエージェント
大澤翔吾
目次
● 自己紹介
● レコメンドエンジンとは
● Frequency Cappingとは
● コンテンツレコメンドにおけるFrequency Cappingの限界
● 段階的Frequency Capping
自己紹介
● 名前
大澤翔吾
● 仕事
A.J.A. Recommend Engine開発
● 趣味
○ PCゲーム
○ アーケードゲーム
○ 読書
レコメンドエンジンって何?
Webパブリッシャーの
グロース(PV増加)と
マネタイズ(広告収益の獲得)を
同時に達成するシステム。
「関連記事」「おすすめ記事」などを記事広告と共に表示する。
スクショ
Frequency Cappingとは
あるサイト訪問者に対して
特定の記事・広告が表示・クリックされる回数に制限を設けること。
何度もスルーされた記事あるいは既に読んだ記事が
何度も表示されることを防ぐことで、回遊効果・広告効果の改善を狙う。
AJAレコメンドにおけるFrequency Capping
Zero API担当 佐藤さんの声
(AJAレコメンドで導入パブリッシャー数が増えてきた頃)
このアクセス数で一度に100も200も問い合わせられるのはZero的にはちょっとしんどいですね
一度に問い合わせる数をもう少し減らせませんか?でも何度も問い合わせられるのも困ります。
この問題のポイント
● 候補は50 - 200件● 最終的なリストはもっと少なくて5 - 10件● 候補は既にレコメンドしたい順に並んでいる
● ただし、FQ条件に合致するものだけは除きたい
● FQ条件に合致するほど回遊するユーザーはあまりいない
リストの頭から少しずつ問い合わせれば、大体のケースで今までより少ない
記事数の問い合わせで済みそう!=段階的FQ
分割方法のアイディア
最終的な件数をN件とする
1. N件ずつ問い合わせる
大体のケースではうまく行きそう
候補が多くて、Nが小さいと、何回も問い合わせる羽目になる
2. 最初にN件問い合わせて、一件でも合致したら残り全てを問い合わせる
佐藤さん案
一件でも合致したときに問い合わせ記事数がかなり増える
問い合わせ回数は最大2回に抑えられる
3. 最初にN件、次に2N件、次に4N件…大澤案
可変長配列の伸長アルゴリズムに着想を得た
可変長配列の伸長アルゴリズム
● 配列が満タンの状態で要素が追加された時、
今より大きいサイズの配列を確保して、要素を移し替える
● 新しく確保する配列のサイズを、今のサイズ × k にすると、
要素追加の平均コストがO(1)になる
○ 新しい配列の確保回数がO(log2n)でおさえられる
● 一方、今のサイズ + kにすると、
要素追加の平均コストがO(n)になってしまう
詳しくは、「動的配列 計算量」や「償却解析」で検索
このアルゴリズムを踏まえてもう一度
● 最初にN件問い合わせて、FQ条件に合致しない件数がNに達するまで
2N件, 4N件 … と問い合わせる
● 候補記事数をMとすると、最大でlog2(M/N + 1)回の問い合わせ回数
● 例えばN = 5, M = 200のとき、log2(40 + 1) = 5.35755200462...
各手法の比較
括弧内の数値はN=5, M=200のとき
手法 一度に問い合わせる最大記事数 最大問い合わせ回数
N件ずつ N [5] M / N [40]
佐藤さん案 M - N [195] 2 [2]
大澤案 N * 2log(M/N + 1) - 1 [80] log2(M / N + 1) [5. 4]
まあまあバランスの良い手法ですね