糞糞糞ネット弁慶

読んだ論文についてメモを書きます.趣味の話は http://repose.hatenablog.com

Optimizing query rewrites for keyword-based advertising(EC 08) 読んだがほとんど理解できなかった

Optimizing query rewrites for keyword-based advertising

目的

広告をクリックするたびにインセンティブが入るモデル(pay-per-click)を考える.
クエリ(query)→クエリの書き換え(Rewrite)→広告(ad)からなる3層のグラフを考えて,収益を最大化するようなクエリの書き換えを提案する.
劣モジュラ問題として解く事ができるとかなんとか.

定義

クエリの集合とそのrewrite(書き換え)の集合,及び広告の集合からなる三層のグラフを考え,エッジを及びとする.であるとき,クエリqはwに書き換えが可能であるとし,は広告aは書き換えwにおいて表示されるものとする.
目的は収益を最大化するを求める事であるが,のsubsetを求める事によっては求まる.
はクエリ集合における隣接要素の集合,つまりはrewriteの集合である.rewriteの集合における隣接要素,つまりはrewriteによって表示される広告の集合.
はクエリqにおいて広告aを表示したときに得られる収益(論文では書かれていないがついでにとするとクエリqに対し広告集合Aを表示する場合の収益の集合の総和?).
とする.つまりは要素数dの広告集合で得られる最大の利益(これをd-benefitと呼ぶ).ついでにでd-benefitを取る広告集合,つまりはargmaxを表す.同様にから得られるd-benefitとする.
最後に,rewriteのpairの集合によって得られる収益とする.

制約

これだけじゃ制約が全く無いので次に2種類の制約を考える.

Cardinality version
  1. についてと制約を加える.つまりは全てのクエリはK個以下の書き換えが可能であるとする.
  2. rewriteについてと制約を加える.つまりはrewrite wに到達できるクエリはたかだか個であるとする.
Weighted version

ついでに重み付き(weighted?)の場合を考える.何かというと,budgetとtrafficなる制約を考える.これ何かと言うとクエリから広告に流れる分がtraffic,クエリの受け入れ可能数がbudgetみたいな状態.式で書くと広告aについてなるbudgetがあり,各クエリについてtrafficがとなり,この時となる.

解く

Cardinality version
single query

まずはクエリが1つだけの場合を解く.を最大化するrewriteをgreedyに追加する.以下擬似コード

def single_query_greedy(q, d, k)
  w_dash = [ ]
  while w_dash.size <= k
    w = argmax{|w| beta(q, d, gamma(w_dash + w)) }
    w_dash.push w
    w_origin.remove(w)
  end
  return w_dash
end
general case

今度は一般化する.これも同様にgreedyに解ける.この時制約を忘れずに追加しておく.

Weighted version

ここが全くわからなかった.
budgetとtrafficが制約として加わっているのにgreedyに解けるという事もさておき,そもそも論文の擬似コードにbudgetとtrafficに関する制約が全く登場しない.普通にgreedyに解いている.
たぶん何か重要な点を読み飛ばしている気がする.integral ad allocatorでやるよと書いてあるのでまあガンガン追加はしていけるだろうけど,そもそもintegral ad allocatorでも判別必要なんじゃないのかと思うがその雰囲気すら無いのはわからない.

感想

グラフっぽい話かと思って途中まで読んでたらあんまグラフっぽい話じゃなかったので肩透かし.劣モジュラわからんのでそろそろどうにかしたいですねと思っていたら「Nagamochi and Ibaraki の最小カットで勉強しろや」と教えてもらえたのでそのうち.