Upload
kenji-hayashida
View
343
Download
0
Embed Size (px)
Citation preview
Mining of Massive DatasetsChapter 5: Link Analysis
Recruit Communications Co., Ltd.Kenji Hayashida
Early Search Engine and Term Spam
• Google 以前の検索エンジンはクエリ内の term を多く含むページを重要視していた• 背景色と同色で”映画”と 1000 回書いておくと、”映画”に関する重要なページとみなされていた• ページ間のリンク情報をもとに重要度を計算する
PageRank が誕生
Definition of PageRank
Random Surfer Model- あるページからリンク先のページに同確率で遷移する- より多く訪問したページほど重要なページとみなす
A からは B,C,D にそれぞれ 1/3 の確率で遷移
無限回遷移を繰り返すと、どのページをどれくらい訪問する?
(“Mining of Massive Datasets” より引用 )
Definition of PageRank
この問題はマルコフ過程であり、1. グラフは強連結2. 行き止まりがないの条件を満たすとき、 v = Mv を満たす分布 v に収束する。v は M の最大固有値に対応する固有ベクトルになっている
実用的には、 50-75 回程度繰り返すと V は十分な誤差範囲内に収束する。
Structure of the Web
現実世界の Web は、強連結じゃないし、行き止まりもある ..
PageRank を正しく計算するための工夫が必要。
(“Mining of Massive Datasets” より引用 )
Avoiding Dead Ends行き止まりがあると、いくつかのノードの PageRankが 0 になってしまう。( Example 5.3 参照)
• 行き止まりノードを削除した状態で PageRank を計算する。• 行き止まりノードを削除すると、別の行き止まりノードが出来ることがあるので再帰的に削除。• PageRank の計算は削除した順と逆順で計算。( Example 5.4 参照)
Spider Traps and TaxationSpider Trap (外部にリンクしないノード集合)があると、 PageRank の得点が Spider Trap 内で独占されることがある。( Example 5.5 参照)
遷移計算式を Spider Trap から脱出できるように変更。
β はハイパーパラメータ( 0.8-0.9 の値を使用)e はすべて 1 のベクトルで、 n は web 内のページ総数。
Efficient Computation of PageRank
• PageRank が収束するまで、行列とベクトルの積を50 回程度計算する必要がある
• 遷移行列は疎行列なので、すべての要素を保持するのは非効率• Map タスクから Reduce タスクに渡すデータ量を減らしたい
Representing Transition Matrices
• 遷移行列は非常にスパース(平均的なページの外部リンク数は 10 程度)• 行列の非零要素は小数だが、同一列内の値は一定( 1/ 出次数)
• 行列を非零要素だけのリスト形式で表現する• 非零要素は 1/ 出次数なので double ではなく int で表現• 空間計算量が O(n^2) から O(m) に削減。 n: ノード数、 m: リンク数
(“Mining of Massive Datasets” より引用 )
PageRank Iteration Using MapReduce
• を計算したい。• 全データをメモリにロードするのは不可能なので、ブロックに分けて処理• k*k のブロックに行列を分割。各 Map タスクは 1 つのブロックを担当。• 積を足し合わせる処理はすべて Reduce で行わず、各 Map 内の
Combiner で可能な部分は足しておく。
(“Mining of Massive Datasets” より引用 )
Representing Blocks of the Transition Matrix
• グラフは行列形式ではなくリスト形式で保持したい• ブロックごとに各列の出次数と非零成分を持つようにすればよい
M11 M12
M22M21
M11
M12
M21
M22
(“Mining of Massive Datasets” より引用 )
Topic-Sensitive PageRank• トピックごとに PageRank を重み付けするテクニック• ”jaguar” という単語は車、動物、 Mac OS のバージョン、ゲーム機器のどれを指しているか分からない• 車好きのユーザに対しては車の” jaguar” のページをランキング上位に出してたい• トピックごとに PageRank を用意しておいて、ユーザの嗜好にマッチするトピックの PageRank を使用する
: 対象トピックに属するページの集合 : に含まれるページは 1 、含まれないページは 0 にしたベクトル
Link Spam• 意図的に PageRank をあげようと試みるスパムを” Link Spam” という• Link Spam をグラフ構造から検知して、インデックスから削除することは可能• しかし新しいグラフ構造の Link Spam が開発されるというイタチごっこに…
(“Mining of Massive Datasets” より引用 )
TrustRankLink Spam をグラフ構造から特定しなくても、 Spam の PageRank が自動的に下がるように PageRank の計算を変更したい
TrustRankトピック = “信頼できるページ”とした Topic-Sensitive PageRank
• 信頼できるページから Spam にリンクは張られない• ユーザーがコメント投稿できるサイトは信頼できるページには入れない• 今日の検索エンジンは TrustRank を使用している• Spam Mass := (PageRank - TrustRank) / PageRank を計算することで、ページが spam である可能性を計算することも可能
HITS ( Hyperlink-induced topic search )
• ページの重要度を計算する別のアルゴリズム• PageRank の少し後に提案された• PageRank はあるページの重要度を1つの値で表したが、 HITS は 2 つの値で表す
authorities 重要な情報を提供するページhubs 重要な情報を提供するページに導いてくれるページ
authority そのページを authorities として見たときの重要度hubbiness そのページを hubs として見たときの重要度
ページの役割
2 つの観点から見たページの重要度
HITS ( Hyperlink-induced topic search )
• authority と hubbiness は PageRank と同様に行列乗算の繰返しで行う• 良い authorities にリンクするページは良い hubs• 良い hubs からリンクされるページは良い authorities
a: authority vectorh: hubbiness vectorL: グラフの隣接行列
• 上記の演算を a, h が収束するまで繰り返す• a, h は更新ステップごとにスケーリングが必要