180 likes | 294 Views
データモデリング Web ページの検索とランキング. Google, Yahoo はこんなことをしている. 検索の精度を示す指標. 全文書内の 適合文書の数 (本当の解集合). 検索された 文書の数. 適合率 (Precision) 検索結果内の正解文書数 検索された文書の数 再現率 (Recall) 検索結果内の正解文書数 全文書内の適合文書の数 F 値 F =. P =. 2. 1 P. 1 R. +. R. P. R =. 全文書. 検索結果内の 正解文書数. 条件が厳しくなると P が上がり R が下がる
E N D
データモデリングWebページの検索とランキングデータモデリングWebページの検索とランキング Google, Yahooはこんなことをしている
検索の精度を示す指標 • 全文書内の • 適合文書の数 • (本当の解集合) • 検索された • 文書の数 適合率(Precision) 検索結果内の正解文書数 検索された文書の数 再現率(Recall) 検索結果内の正解文書数 全文書内の適合文書の数 F値 F = P= 2 1 P 1 R + R P R= 全文書 検索結果内の 正解文書数 条件が厳しくなるとPが上がり Rが下がる 条件が緩くなると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(j) (式1) P(i) = Σ Oj (j i) ∈ E
ベクトルと行列で表現 • PageRankのスコアを値とする n 次元ベクトルを P, ページ間のリンクを表現する行列を A とすると、 先の式は と表される P(1) P(2) : P(n) P = (式2) (i j)∈ E の場合 ページ iからj にリンクがあれば リンク元ページi の外向きリンク数の逆数 Ai j = (式3) 0それ以外 1 Oi (式4) P = AT P
どうして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 をひっくり返せば良い. つまり 転置した行列を用いれば良い.
図による例示 この図を表現する行列 Aは 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= A21だから, ページ2から1へリンクがあるかどうか.
各ページのPageRankは不変な値 P = AT P • 不変なベクトル P は A をかけても P のまま • これは、行列とベクトルの固有値問題 P ≠ 0 が存在するためには これはλのn 次方程式で、λの実数解は高々 n 個 • この場合 Pは固有値 λ = 1 に対応する固有ベクトル • 固有値 λ = 1 の存在には特定条件の成立が必要 • 成立すれば 、n元連立方程式 P = AT P より、べき乗法で 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 1 : 1 A11A21・・ : 1/n1/n・・ : (1 – d) e + dATp = (1– d) + d p
[補助]PageとBrinは考えた! • ①について,外部にリンクを持たないページからはn個あるページのどれにでも同じ確率(1/n)で移動する.(これでA がマルコフ推移の遷移確率行列になった) • ②について,あるページから出ているリンクをたどる確率は d で,リンクを辿らず無作為に新しいページに移る確率は(1-d)である.(これで,どのページへも辿り着けるようになった.また周期kが1となったので、周期グラフでもなくなった) • 式の中で,(1-d)e の項はリンクを辿らず無作為に新しいページに移行した時を表し,dATp の項は現在のページからのリンクを辿った時を表す.
すべてのページの PageRank を計算 • 不変になるまで遷移確率行列を繰り返し適用 3.22億個のリンクがある場合、52回の繰り返しで収束 P0 = e / n k = 1 do { Pk = (1 – d ) e + dAT 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 で整列