Towards Context-Aware Search by Learning A Very Large Variable Length Hidden Markov Model from Search Logs
-
Huanhuan Cao, Daxin Jiang, Jian Pei, Enhong Chen, Hang Li
-
MSRAとUniversity of Science and Technology of China
-
WWW 2009
概要
-
たった今調べたクエリからURLを正しくレコメンドするのは無理
-
例: ホントは車のレビューサイトを見たい
-
検索クエリ: Ford new cars → Toyota new cars
-
個々のクエリに着目するとautohome.comは出てこない
-
クエリ全体を見ると分かる→context-aware!!
-
汎用的なフレームワークを作りたい!!
-
document re-ranking
-
query suggestion
-
URL recommendation
-
variable length Hidden Markov Model(vlHMM)によるクエリコンテキストモデルを提案
-
事後確率 $$ P(s_t | q_t, O_{1 \cdots t-1}) $$
-
s_t: ユーザーの思考、検索意向
-
q_t: 今のクエリ
-
O_{1…t-1}: q_tのコンテキスト(今までのクエリ+クリック)
-
さらに予測 $$ P(s_{t+1} | q_t, O_{1 \cdots t-1}) $$
-
HMMの学習
-
セッションが多すぎる
-
パラメータが爆発
(⌒⌒)
ii!i!i ドカーン
ノ~~~\
,,,,,,,/´・ω・` \,,,,,,,,,,
-
解決法
3. vlHMM
-
1-HMMs
-
s_tはs_1,…,s_{t-2}とは独立
-
今回のに適用するにはやばめ
-
vlHMM
-
s_1,…,s_N_s: 隠れ状態の集合
-
q_1,…,q_N_q: クエリの集合
-
u_1,…,u_N_u: URLの集合
-
T_max: 状態列の最大長
-
遷移確率分布: $$ \Delta = \{ P(s_i | S_i) \} $$
-
初期状態分布: $$ \Psi = \{ P(s_i) \} $$
-
放出確率: $$ \Lambda = \{ P(q,U | S_j) \} $$
-
T_{j-1}ステップ後に状態$$ s_{j,T_j} $$からクエリqを出してUをクリックする
-
$$ P(q,U | S_j) \equiv P(q,U | s_{j,T_j}) $$
-
$$ P(q,U | s_{j,T_j}) \equiv P(q | s_{j,T_j})\prod_{u \in U}P(u | s_{j,T_j}) $$
-
☆結局考えるべきは$$ (\Lambda_q, \Lambda_u) \equiv (\{P(q | s_i)\}, \{P(u | s_i)\}) $$
-
Q. 何をtrainするのか???
-
A. $$ \Theta = (\Psi, \Delta, \Lambda_q, \Lambda_u) $$
-
セッションを30分ごとに区切る
-
$$ \chi = \{ O_1, \cdots, O_N \} $$: 訓練データ
-
$$ O_n = \langle (q_{n,1}, u_{n,1}), \cdots, (q_{n,T_n}, u_{n,T_n}) \rangle $$
-
最大尤度なΘを求めた
-
↑訓練データを最もよく表現する
-
$$ \Theta^* = \arg \max_{\Theta} \ln P(\chi | \Theta) = \arg \max_{\Theta} \sum_{n}\ln P(O_n | \Theta) $$
-
あとは色々頑張る
-
最終的にEM(Expectation Maximization) algorithmに落ち着く
4. Training
-
隠れ状態の数
-
よく分からん
-
二部グラフ(?)作ってクラスタリング
-
クラスタ(Q,U)が隠れ状態
-
ログ大杉
-
そもそもユニークなクエリ・URL大杉
-
パラメータ数10^30
-
うま~く減らすし、理論的に抑えるよ!
5. Application
-
O: q_1, …, q_t, U_1, …, U_tの列
-
Γ_O: 候補状態
-
P(S_m | O, Θ): 事後確率を推論できる
-
で?っていう
-
P(s_t | O, Θ)もP(s_{t+1} | O, Θ)も↑から計算できる
-
Context-Aware actionsの数々
-
Document re-ranking
-
$$ P(u | O) = \sum_{s_t \in S_t}P(u | s_t)\cdot P(s_t | O) $$の順にre-rank
-
$$ S_t = \{s_t | P(s_t | O) \neq 0\} $$
-
U: q_tに対して検索エンジンが返すURLリスト
-
Query suggestion
-
$$ P(q | O) = \sum_{s_{t+1} \in S_{t+1}}P(q | s_{t+1})\cdot P(s_{t+1} | O) $$
-
$$ S_{t+1} = \{ s_{t+1} | P(s_{t+1} | O) \neq 0 \} $$
-
$$ q \in Q_{t+1} = \{ q | s_{t+1} \in S_{t+1}, P(q | s_{t+1}) \neq 0 \} $$
-
URL recommendation
-
$$ P(u | O) = \sum_{s_{t+1} \in S_{t+1}} P(u | s_{t+1})\cdot P(s_{t+1} | O) $$
-
↑と大体同じ
-
オンラインでの応用
-
知らないクエリ or URLが来たら?
-
速度は?
6. 実験
-
データセット
1.8B queries
|
151M unique queries
|
2.6B clicks
|
114M unique URLs
|
840M sessions
|
|
-
前処理
-
あんまり適当だと消しすぎる
-
出現回数5未満は消す(ジャンクだ!!!
-
結局
-
ユニーククエリ・URLは相当減った
-
クエリ、クリック、セッションの数は半分程度
-
Efficiency
-
隠れ状態(クラスタ)数 10^6位
-
パラメータ #P(s_i), #P(q|s_i), #P(u|s_i), #P(s_i|S_j)
-
時間、パラメータ数は訓練データの量に比例するよ!!
-
Effectiveness
まとめ
-
超でかいデータにスケールするようなフレームワークを考え動かしたのが全て
Hidden Markov Model WWW context-aware search kk
2013-12-10 01:08:02 (Tue)
最終更新:2013年12月10日 01:08