Download - データモデリング Web ページの検索とランキング
データモデリング
Web ページの検索とランキング
Google, Yahoo はこんなことをしている
検索の精度を示す指標適合率 (Precision)
検索結果内の正解文書数検索された文書の数
再現率 (Recall) 検索結果内の正解文書数全文書内の適合文書の数
F 値F = 1
R1P
+
2検索結果内の正解文書数
検索された文書の数
全文書内の適合文書の数
(本当の解集合)
全文書
条件が厳しくなると P が上がり R が下がる
条件が緩くなると P が下がり R が上がる
R P
P =
R =
キーワードらしさ tf-idf• 文章中の特徴的な単語(キーワード)を抽出する
ためのアルゴリズム• 文書の集合 { D1, D2, …., Dn} 内の文書 Di を単語の
集合 { W1, W2, …, Wm} とみる• 個々の単語の評価
– tf ( Term Frequency )は単語の頻度• 繰り返される 単語は評価が高い• 文書 Dk での Wi の出現数 / Dk の単語数
– Idf(Inverse Document Frequency)• Wi は,特定の文書 Di にしか出現しない なら、評価が高い。
逆に Wi は,すべての文書に出現するなら、その 評価は低い• 文書の集合 { D1, D2, …., Dn} のなかで Wi が現れる比の逆数• そのままでは大きすぎるので log をとる
• 単語の評価 = 頻度・ log ( 総文書数 / 出現文書数 )
クローリング (Crawling)• リンクの自動航行
– クローラと呼ばれるプログラムが、インターネット上の Web ペー ジのリンクをたどりながら情報を収集
– クローラは スパイダ(蜘蛛) とも呼ばれる• クローラが収集するもの
– 各ページに含まれる各単語の tf-idf 値 を計算– ページごとに文書ベクトル化 文書ベクトル Dk
Dk = (W1 の tf-idf 値 , W2 の tf-idf 値 , …, Wn の tf-idf 値 )– 各ページのリンク先を記録( PageRank で利用)
• 一度、訪問したサイトはそこからのリンクを辿らない
• クローリングは 定期的 に実施される
空間ベクトル法ページの文書ベクトル Dk と問合せのベクトル Q の類似度で検索を実施
Dk = (W1 の tf-idf, W2 の tf-idf, …, Wn の tf-idf)
Q = (W1 の tf-idf, W2 の tf-idf, …, Wn の tf-idf)
2 つのベクトルのコサイン類似度 似ているときに1、逆方向の時に -1
•文書「空間ベクトル法」–類似度は 0.7, Web は 0.2, 検索は 1.4
•問合せ(類似度 Web 検索)–類似度 1, Web 1, 検索 1
•類似度が高いものを選択
類似度
Web
検索
文書
問合せ
PageRank Algorithm
• 多くの検索結果を順位づけて並べたい• Google 創始者の Larry Page と Sergey Brin が
米スタンフォード大学大学院在籍中に開発• 論文の評価にヒントを得て考え出された• PageRank とは– 「多くの良質なページからリンクされている
ページは、 やはり良質なページである」 という再帰的な関係をもとに、すべての Web ページの重要度を判定したもの
– PageRank 自体はユーザが検索式に与えた語句とはまったく無関係な、 すでに定まった量
Google の紹介ページより• ページAからページBへのリンクをページ A による
ページ B への支持投票と みなし、 Google はこの投票数によりそのページの重要性を判断します。
• しかし Google は単に票数、つまり リンク数を見るだけではなく、票を投じた ページについても分析します。「重要度」 の高いページによって投じられた票はより高く評価されて、それを受け取ったページ を「重要なもの」 にしていくのです。
• PageRank は ページの重要度を示す総合的な指標であり、各検索に影響 されるものではありません
PageRank の意味の図示
• あるページの PageRank を、そのページに存在する発リンク数で 割った数が、リンク先のページの PageRank に加算される
数式を使って表現• すべての Web ページの集合を V とし,それら
の間のリンクの集合を E とすると Web 空間はG = ( V , E )
で表現できる• ページの総数を n とし,ページ i の PageRank
スコアを P(i) , ページ j からの外向けリン クの数を Oj とすると
ただし、 (j i) はページ j からページ i へのリンク
P(i) = Σ P(j) Oj (j i) ∈ E
(式1)
ベクトルと行列で表現• PageRank のスコアを値とする n 次元ベクトルを P, ページ間のリンクを表現する行列を A とすると、
先の式は
と表される
P =
P(1)P(2) :P(n)
Ai j =Oi
1(i j) ∈ E の場合
ページ i から j にリンクがあればリンク元ページ i の外向きリンク数の逆数
0 それ以外
P = AT P
(式 2 )
(式 3 )
(式 4 )
どうして A の転置行列 AT
なの?さきの ( 式 1) と A の定義 ( 式 3) をよく見比べると,リンクの出るペー
ジと入るページで i と j が入れ替わっている.
•ページ i ( 1≦ i ≦n )からページ j にリンクがある場合に,ページ j のページランク P(j) は
P(j) = A11 P(1) + A21 P(2) +... +An1P(n) = (1/o1) P(1) + (1/o2) P(2) +... + (1/on) P(n)
となる. A の2つある添字のうち,さきにある添字が増える式になっている.ページランクの計算を,通常の行列とベクトルの積で表現するには
P(i) = A11 P(1) + A12 P(2) +... +A1nP(n)
となって, A の2つある添字のうち,後にある添字が増える式になって欲しい.どうすればよいか?
i と j をひっくり返せば良い.
つまり 転置した行列を用いれば良い.
図による例示
0 1/5 1/5 1/5 1/5 0 1/5 1 0 0 0 0 0 0 1/2 1/2 0 0 0 0 0 0 1/3 1/3 0 1/3 0 0 1/4 0 1/4 1/4 0 1/4 0 1/2 0 0 0 1/2 0 0 0 0 0 0 1 0 0
A =
この図を表現する行列 A は
A21 だから , ページ 2 から 1 へリンクがあるかどうか.
各ページの PageRank は不変な値• 不変なベクトル P は A をかけても P のまま
• これは、行列とベクトルの固有値問題
P ≠ 0 が存在するためには
これは λ の n 次方程式で、 λ の実数解は高々 n 個
• この場合 P は固有値 λ = 1 に対応する固有ベクトル• 固有値 λ = 1 の存在には特定条件の成立が必要• 成立すれば 、 n 元連立方程式 P = AT P より、べき
乗法で P も計算可能
P = AT P
λ P = M P ( M – λ E) P = 0
| M– λ E | = 0
Page と Brin はマルコフモデルに着目
• ユーザがリンクを無作為にたどるとすると、ページ遷移はマルコフ遷移モデル
• 次の条件が満たされると、固有値 λ = 1 が存在– A がマルコフ推移の遷移確率行列である
• 各行の値を総和すると 1• 外部にリンクを持たないページがない
– グラフが強連結である• どのページからも、どのページへも辿り着ける
– グラフが非周期的である• あるページからそこに戻るパスの長さが k (>1) の整数倍で
あれば周期的、そうでなければ非周期的 ( すなわち k = 1)
• このような A が見つかるということは、ユーザがリンクをクリックし続けると、ある特定のページに行き着く確率を計算できることを意味する
Page と Brin のアイデア遷移確率行列を修正①外部リンクが無いページからは、各ページに同じ確率で遷移
– このページに相当する A の行はすべて 1/n
②ユーザは確率 d でリンクを辿る( 1-d で新ページを検索)– 各ページからすべてのページへのリンク追加(確率は 1- d )
要素がすべて 1 のベクトルが e のとき、遷移確率は
Page と Brin の論文では d = 0.85(1 – d) e + d ATp = (1– d) + d p
11:1
A11 A21 ・・:1/n 1/n ・・:
[補助 ] Page と Brin は考えた!
• ①について,外部にリンクを持たないページからは n個あるページのどれにでも同じ確率( 1/n )で移動する.(これで A がマルコフ推移の遷移確率行列になった)
• ②について,あるページから出ているリンクをたどる確率は d で,リンクを辿らず無作為に新しいページに移る確率は (1-d) である.(これで,どのページへも辿り着けるようになった.また周期kが1となったので、周期グラフでもなくなった)
• 式の中で, (1-d)e の項はリンクを辿らず無作為に新しいページに移行した時を表し, dATp の項は現在のページからのリンクを辿った時を表す.
すべてのページの PageRank を計算
• 不変になるまで遷移確率行列を繰り返し適用
3 .22億個のリンクがある場合、 52回の繰り返しで収束
P0 = e / nk = 1do { Pk = (1 – d ) e + d AT Pk-1
k = k + 1} while( | Pk – Pk-1 | < ε )return Pk
検索エンジンの概要
• クローリングしてインデックスと 行列 A を作っておく。インデックスは、ページごとの文書ベクトル Dk
• Dk = (W1 の tf-idf 値 , W2 の tf-idf 値 , …, Wn の tf-idf 値 )
• PageRank を計算しておく• ユーザが指定した検索式とインデックスか
ら、類似度を使って検索結果の集合を作成• 検索結果の集合の要素を PageRank で整列