Upgrade to Pro — share decks privately, control downloads, hide ads and more …

データマイニング - ウェブとグラフ

データマイニング - ウェブとグラフ

1. PageRank
2. HITSアルゴリズム

講義ノート
https://graphnote.hontolab.org/content/web-and-graph.html

Avatar for Y. Yamamoto

Y. Yamamoto

July 11, 2025
Tweet

More Decks by Y. Yamamoto

Other Decks in Science

Transcript

  1. 余談: 巨⼤なグラフの例 画像出典1: J. Heer, D. Boyd: Vizster: Visualizing Online

    Social Networks, IEEE Information Visualization (InfoVis), 2005 ソーシャルネットワーク ノード(ユーザ): 数10億 エッジ(フォロー): 数1000億 画像出典2: https://www.nih.gov/news-events/news-releases/40-million-awarded-trace-human-brains-connections 脳の神経ネットワーク ノード(ニューロン): 860億 エッジ(シナプス): 数兆
  2. 初期の検索エンジンのランキング戦略 重要なページ = クエリに関する内容を多く含む ニュースダイエットを読んで ニュース断ち生活 > 重要 関連語多い 効果的なダイエットTop10

    豆乳ダイエットは効果的か? 痩せる計画 – 健康と減量 クエリ “ダイエット 効果的” で検索した場合 情報で溢れる世界を生きる
  3. クエリ のみ を重視した重要度評価の問題 ワードの詰め込みによるランキング操作が横行 効果的なダイエットTop10 豆乳ダイエットは効果的か? 痩せる計画 – 健康と減量 人気ダイエット商品サイト

    ダイエット商品 格安販売 ボーナス払いOK > 重要? 関連語多い クエリ “ダイエット 効果的” で検索した場合 ダイエット 送料無料 効果抜群 ダイエット 痩せる 減量 ダイエット クレジットカード $ $ 内容以外の観点からもページを評価できないか?
  4. アイデア: ハイパーリンクを評価に活かす WebページY WebページX 医療系サイト 学術サイト 製薬会社サイト 医療系サイト 個⼈ブログ 多くのページ

    からリンクあり どこからも リンクなし リンクは参照・引用のために使われる → リンクを多く集めるページは重要!? ウェブがもつ「グラフ構造」をページの評価に利用
  5. ウェブの構造の特徴 A B C D デッドエンド 出リンクが存在しない A B C

    D スパイダートラップ デッドエンドではないが 他ページへのリンクがない これらが原因で固有ベクトル中心性がうまく計算できない
  6. 蝶ネクタイ(bowtie)構造を持つウェブ 強連結になっている ウェブページ ⼊りリンク ページ 出リンク ページ チューブ 孤⽴ ページ群

    ウェブは強連結の部分とそうでない部分から成る A. Broder et. al: Graph Structure of Web, Computer Networks, 33 (2000), pp. 309-320 強連結でないウェブの構造を踏まえて中心性を計算したい
  7. 1 PageRank あの会社の創業者が開発した手法 Brin, S. and Page, L: The Anatomy

    of a Large-Scale Hypertextual Web Search Engine. In Proceedings of 7th International World-Wide Web Conference (WWW 1998).
  8. PageRank: ウェブページの相対的な重要度を計算する⼿法 基本的な仮定 多くの重要なページからリンクされたページは重要 A E C B D 重要⾼

    重要低 重要低 ⼊次数=2 (同じ次数だが) CよりDを重要と 見なしたい Dは重要なBから リンクされている 再帰的な仮定をどう扱うか? ⼊次数=2
  9. 単純 なPageRankの計算⽅法 A E C B D 𝑝 𝐴 =

    1 5 𝑝 E = 1 5 𝑝 𝐷 = 1 5 𝑝 𝐵 = 1 5 1. 各ページの重要度pを1/Nで初期化 𝑝 C = 1 5
  10. 単純 なPageRankの計算⽅法 A E C B D 2. ページxの重要度p(x)を以下の式で計算 1

    5 1 5 1 5 1 5 𝑝 𝑥 = + !∈#$%&_()(+) 1 deg)-( (𝑦) 𝑝(𝑦) 1 5
  11. 単純 なPageRankの計算⽅法 A E C B D 2. ページxの重要度p(x)を以下の式で計算 1

    5 1 5 1 5 1 5 xにリンクを張っているページ 𝑝 𝑥 = + !∈#$%&_()(+) 1 deg)-( (𝑦) 𝑝(𝑦) 1 5
  12. 単純 なPageRankの計算⽅法 A E C B D 2. ページxの重要度p(x)を以下の式で計算 1

    5 1 5 1 5 1 5 ページxの出次数 𝑝 𝑥 = + !∈#$%&_()(+) 1 deg)-( (𝑦) 𝑝(𝑦) 1 5
  13. 単純 なPageRankの計算⽅法 A E C B D 2. ページxの重要度p(x)を以下の式で計算 1

    5 1 5 1 5 1 5 𝑝 𝑥 = + !∈#$%&_()(+) 1 deg)-( (𝑦) 𝑝(𝑦) 1 5
  14. 単純 なPageRankの計算⽅法 A E C B D 2. ページxの重要度p(x)を以下の式で計算 1

    5 1 4 × 1 5 + ⋯ 1/4 1/4 Aの重要度 重要度を分配する重み 1/4 1/4 𝑝 𝑥 = + !∈#$%&_()(+) 1 deg)-( (𝑦) 𝑝(𝑦)
  15. 単純 なPageRankの計算⽅法 A E C B D 2. ページxの重要度p(x)を以下の式で計算 𝑝

    𝑥 = + !∈#$%&_()(+) 1 deg)-( (𝑦) 𝑝(𝑦) 1 5 1 4 × 1 5 + 1 2 × 1 5 = 3 20 1/2 1/2 Bの重要度 重要度を分配する重み
  16. 単純 なPageRankの計算⽅法 A E C B D 2. ページxの重要度p(x)を以下の式で計算 1

    2 × 1 5 = 1 10 1 4 × 1 5 + 1× 1 5 + 1× 1 5 = 9 20 1 4 × 1 5 = 1 20 1 4 × 1 5 + 1 2 × 1 5 = 3 20 1 4 𝑝 𝑥 = + !∈#$%&_()(+) 1 deg)-( (𝑦) 𝑝(𝑦)
  17. 単純 なPageRankの計算⽅法 A E C B D 3. 1 5

    → 1 10 → ⋯ → 1 5 ステップ2をスコアが収束するまで繰り返す 1 5 → 9 20 → ⋯ → 2 5 1 5 → 3 20 → ⋯ → 1 4 1 5 → 1 20 → ⋯ → 1 20 1 5 → 1 4 → ⋯ → 1 10
  18. 単純 なPageRankの別解釈 ウェブグラフ上をランダムに移動するユーザが 最終的に各ページにたどり着く確率を計算 A E C B D 1回の移動後、

    Eにいる確率 2回目の移動後はどのページにいるか? 1 4 ×1 = 1 4 1 4 ×1 = 1 4 1 4 ×1 = 1 4 1 4 ×1 = 1 4
  19. 単純 なPageRankの別解釈 ウェブグラフ上をランダムに移動するユーザが 最終的に各ページにたどり着く確率を計算 A E C B D 2回の移動でBにいる確率p2(B)は

    1 1 ×𝑝/ 𝐶 + 1 1 ×𝑝/ 𝐷 = 1 4 + 1 4 = 1 2 1回の移動後にCにいた確率 Dにいた確率 遷移確率1 遷移確率1
  20. 単純 なPageRankの問題 A B C D デッドエンド A B C

    D スパイダートラップ デッドエンドやスパイダートラップなどの グラフ構造が含まれると適切に計算できない 対処方法がなければ固有ベクトル中心性と同じ運命…
  21. 問題解決のための仮定: ランダムサーファーモデル ウェブを探索するユーザは 以下の2種類の行動を選択的に取ると仮定 A E C B D ユーザはAに

    いると仮定 1 4 1 4 1 4 1 4 (URLを直接入力,ブックマーク利用など) A E C B D 1 5 1 5 1 5 1 5 1 5 リンクを辿る 直接ページに飛ぶ
  22. 真のPageRankの計算⽅法 1. 各ページの重要度pを1/Nで初期化 2. ページxの重要度p(x)を以下の式で計算 (Nはページ数) 𝑝 𝑥 = 𝛼

    % !∈#$%&_()(+) 1 deg)-( 𝑦 𝑝 𝑦 + ( ) 1 − 𝛼 1 𝑁 リンクを辿る場合 直接ページに⾶ぶ場合
  23. 真のPageRankの計算⽅法 1. 各ページの重要度pを1/Nで初期化 2. ページxの重要度p(x)を以下の式で計算 (Nはページ数) 𝑝 𝑥 = 𝛼

    % !∈#$%&_()(+) 1 deg)-( 𝑦 𝑝 𝑦 + ( ) 1 − 𝛼 1 𝑁 「リンクを辿る」 ⾏動を選択する確率 「直接ページに⾶ぶ」 ⾏動を選択する確率
  24. 真のPageRankの計算⽅法 1. 各ページの重要度p0 を1/Nで初期化 2. ページの重要度ベクトルpn を以下の式で計算 (Nはページ数) 𝒑!"# =

    𝛼𝑴$𝒑! + ( ) 1 − 𝛼 𝒆 𝑁 𝑨 = 0 1 1 1 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 隣接⾏列 A B C D E ⾏ごとに正規化
  25. 真のPageRankの計算⽅法 1. すべてのページの重要度p0 を1/Nで初期化 2. ページの重要度ベクトルpn を以下の式で計算 (Nはページ数) 𝒑!"# =

    𝛼𝑴$𝒑! + ( ) 1 − 𝛼 𝒆 𝑁 A B C D E 0 1/4 1/4 1/4 1/4 1/2 0 0 1/2 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1/4 1/4 1/4 1/4 1/2 1/2 1 1 1 遷移確率行列 (リンクを辿ってページ移動)
  26. 真のPageRankの計算⽅法 1. 各ページの重要度p0 を1/Nで初期化 2. ページの重要度ベクトルpn を以下の式で計算 (Nはページ数) 𝒑!"# =

    𝛼𝑴$𝒑! + ( ) 1 − 𝛼 𝒆 𝑁 A B C D E 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 ランダムジャンプベクトル (直接ページに飛ぶ)
  27. 真のPageRankの計算⽅法 1. 各ページの重要度p0 を1/Nで初期化 2. ページの重要度ベクトルpn を以下の式で計算 (Nはページ数) 𝒑!"# =

    𝛼𝑴$𝒑! + ( ) 1 − 𝛼 𝒆 𝑁 3. ステップ2をスコアが収束するまで繰り返す 遷移確率行列 (リンクを辿ってページ移動) ランダムジャンプベクトル (直接ページに飛ぶ) # NetworkXでPageRank p = nx.pagerank(G, alpha=0.85) 真のPageRankなら適切にスコア計算が可能
  28. PageRank値の分布 画像出典: Donato, D., Laura, L., Leonardi, S., & Millozzi,

    S. (2004). Large scale properties of the webgraph. The European Physical Journal B, 38, 239-243 § PageRankの値はべき乗分布 § ⼊次数とPageRankの相関は⾮常に弱い
  29. PageRankの実⽤に関する補⾜ Q1. αの値はいくつに設定すればよいか? A. 経験的には α=0.85 がよく⽤いられる Q2. 値の収束にはどのくらいかかる? A.

    実⽤的には⼤体の値が求まればOKなので, 完全に収束するまで計算する必要はない. 3億件のウェブページで50回程度の 繰り返し計算で⼗分という報告もある.
  30. 2 HITSアルゴリズム PageRankと似ているようで似ていない J. Kleinberg: Authoritative Sources in a Hyperlinked

    Environment. In Proceedings of the 9th ACM SIAM Symposium on Discrete Algorithms (SODA’98)
  31. HITSアルゴリズム (hypertext induced topic search) グラフ構造を利用して、 ウェブページのハブ値とオーソリティ値を計算 オーソリティ値が高いページを多く参照している ページはハブ値が高い ハブ値が高いページから多く参照されている

    ページはオーソリティ値が高い 仮定1 仮定2 ℎ𝑢𝑏(𝑝) = + +∈#$%&_01)2(3) 𝑎𝑢𝑡ℎ(𝑥) a𝑢𝑡ℎ(𝑝) = + +∈#$%&_()(3) ℎ𝑢𝑏(𝑥) PageRankと同様に再帰的な定義(計算)になっている
  32. HITSの計算⼿順 1. 全ページのハブ値h,オーソリティ値 a を1に初期化 2. 以下の式で全ページのオーソリティ値,ハブ値を更新 𝑎("#$) 𝑝 =

    1 &∈()"*!" # ℎ(") 𝑥 3. オーソリティ値,ハブ値を合計値で正規化 ℎ("#$)(𝑝) = 1 &∈()"*_,-(.) 𝑎(") 𝑥 4. 値が収束するまでステップ2-3を繰り返す
  33. HITSの具体例 ハブ側 オーソリティ側 h0= 1 h0= 1 h0= 1 h0=

    1 h0= 1 a0= 1 a0= 1 a0= 1 a0= 1 a0= 1 1. 全ページのハブ値h,オーソリティ値 a を1に初期化
  34. HITSの具体例 ハブ側 オーソリティ側 h0= 1 h0= 1 h0= 1 h0=

    1 h0= 1 a1= 4 2. 全ページのオーソリティ値,ハブ値を更新
  35. HITSの具体例 ハブ側 オーソリティ側 h0= 1 h0= 1 h0= 1 h0=

    1 h0= 1 a1= 3 a1=1 a1=1 a1=1 2. 全ページのオーソリティ値,ハブ値を更新 a1= 4
  36. HITSの具体例 ハブ側 オーソリティ側 h0= 1 h0= 1 h0= 1 h0=

    1 h0= 1 2. 全ページのオーソリティ値,ハブ値を更新 a1= 3 a1= 2 a1= 1 a1= 1 a1= 4
  37. HITSの具体例 ハブ側 オーソリティ側 h1= 1 a0=1 a0=1 a0=1 a0=1 a0=1

    2. 全ページのオーソリティ値,ハブ値を更新
  38. HITSの具体例 ハブ側 オーソリティ側 h1= 1 h1= 2 h1= 3 h1=

    1 h1= 1 a0=1 a0=1 a0=1 a0=1 a0=1 2. 全ページのオーソリティ値,ハブ値を更新
  39. HITSの具体例 ハブ側 オーソリティ側 h1= 1 h1= 2 h1= 3 h1=

    3 h1= 1 2. 全ページのオーソリティ値,ハブ値を更新 a1= 3 a1= 2 a1= 1 a1= 1 a1= 4
  40. HITSの具体例 ハブ側 オーソリティ側 h1= 1 h1= 2 h1= 3 h1=

    3 h1= 1 a1= 3 a1= 2 a1= 1 a1= 1 a1= 4 3. オーソリティ値,ハブ値を合計値で正規化 10 10 10 10 10 11 11 11 11 11
  41. HITSの具体例 ハブ側 オーソリティ側 h1= 0.1 h1= 0.2 h1= 0.3 h1=

    0.3 h1= 0.1 a2= 0.9 4. 値が収束するまでステップ2-3を繰り返す
  42. HITSの具体例 ハブ側 オーソリティ側 h1= 0.1 h1= 0.2 h1= 0.3 h1=

    0.3 h1= 0.1 a2= 0.9 4. 値が収束するまでステップ2-3を繰り返す a2= 0.6
  43. HITSの具体例 ハブ側 オーソリティ側 h∞= 0.23 a∞ = 0.30 a∞ =

    0.21 a∞ = 0.09 a∞ = 0 a∞ = 0.39 4. 値が収束するまでステップ2-3を繰り返す h∞= 0.23 h∞= 0.30 h∞= 0.23 h∞= 0.00
  44. HITSアルゴリズム 1. 全ページのハブ値h,オーソリティ値 a を1に初期化 2. 以下の式で全ページのオーソリティ値,ハブ値を更新 𝑎("#$) 𝑝 =

    1 &∈()"*!" # ℎ(") 𝑥 3. オーソリティ値,ハブ値を合計値で正規化 ℎ("#$)(𝑝) = 1 &∈()"*_,-(.) 𝑎(") 𝑥 4. 値が収束するまでステップ2-3を繰り返す 行列形式に書き換えると…
  45. HITSアルゴリズムの⾏列表現 1. 全ページのハブ値,オーソリティ値を格納する ベクトルh0,a0 の要素を1に初期化 2. 以下の式でオーソリティ値,ハブ値を更新 𝐴 = 0

    0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 𝒂(%4/) = 𝑨5 𝒉(%) 𝒉(%4/) = 𝑨 𝒂(%) 隣接⾏列
  46. HITSアルゴリズムの⾏列表現 1. 全ページのハブ値,オーソリティ値を格納する ベクトルh0,a0 の要素を1に初期化 2. 以下の式でオーソリティ値,ハブ値を更新 𝒂(%4/) = 𝑨5

    𝒉(%) 𝒉(%4/) = 𝑨 𝒂(%) 隣接⾏列 𝒉$ = 𝑨𝒂/ = 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 2 3 4 5
  47. HITSアルゴリズムの⾏列表現 1. 全ページのハブ値,オーソリティ値を格納する ベクトルh0,a0 の要素を1に初期化 2. 以下の式でオーソリティ値,ハブ値を更新 𝒂(%4/) = 𝑨5

    𝒉(%) 𝒉(%4/) = 𝑨 𝒂(%) 隣接⾏列 3. オーソリティ値,ハブ値を合計値で正規化 𝒂("#$) = 𝒂("#$) 𝒂 "#$ $ , 𝒉("#$) = 𝒉("#$) 𝒉 "#$ $ L1ノルム 4. 値が収束するまでステップ2-3を繰り返す
  48. 余談: PageRankとHITSと固有値 𝒑!"# = 𝛼𝑴$𝒑! + ( ) 1 −

    𝛼 𝒆 𝑛 𝒑!"# = (𝛼𝑴$ − 1 − 𝛼 𝑬 𝑛 )𝒑! 𝒑%4/ = 𝑹 𝒑% 𝒂(!"#) = 𝑨' 𝒉(!) 𝒉(!"#) = 𝑨 𝒂(!) 𝒂(!"#) = 𝑨'𝑨 𝒂(!(#) 𝒂(!"#) = 𝑳 𝒂(!(#) 変形 読みやすく 収束するまで計算 𝒂 = 𝑳 𝒂 𝒑 = 𝑹 𝒑 変形 読みやすく 収束するまで計算 PageRank HITS PageRankもHITSの値も行列の固有ベクトル値に対応
  49. PageRank & HITSの展開 (1/2) 改良版アルゴリズム PageRankやHITSを改良したアルゴリズムは多数あり (SALSA,Biased PageRank,TrustRank, Co-HITSなど) ランキングの

    個⼈化に利⽤ スパムの 除外に利⽤ Lempel, R. et al (2001). "SALSA: The Stochastic Approach for Link-Structure Analysis". ACM Transactions on Information Systems. 19 (2): 131–160 H. Haveliwala (2002). “Topic-sensitive PageRank”. In Proceedings of the 11th international conference on World Wide Web (WWW '02). Zoltán Gyöngyi, Hector Garcia-Molina, and Jan Pedersen (2004). “Combating web spam with TrustRank”. In Proceedings of the Thirtieth international conference on Very large data bases - Volume 30 (VLDB '04). VLDB Endowment, 576–587. Hongbo Deng, Michael R. Lyu, and Irwin King (2009). ”A generalized Co-HITS algorithm and its application to bipartite graphs”. In Proceedings of the 15th ACM SIGKDD international conference on Knowledge discovery and data mining (KDD '09).
  50. PageRank & HITSの展開 (2/2) グラフ化さえできれば応⽤先はウェブグラフに限定されない 応用先の拡大 !"#$B&'()B*!"#$ %+,,,&' ()*J().BLMB$1+,-. J().BLMB$1/+()'012

    !34 23($4RBL.6B7778,,VW; 画像の典型性評価 Twitterユーザの影響⼒評価 画像出典: https://iamshantanu.com/tech/2018/06/05/page-rank.html トピックの重要度評価 (TwitterRank) (VisualRank) (TextRank) R. Mihalcea et al. “TextRank: Bringing Order into Text”. In Proceedings of the Conference on Empirical Methods in Natural Language Processing (ACL 2004) Y. Jing et al. “Pagerank for product image search”. In Proceedings of the 17th international conference on World Wide Web (WWW '08) J. Weng at al. “TwitterRank: finding topic-sensitive influential twitterers”. In Proceedings of the third ACM international conference on Web search and data mining (WSDM '10).
  51. 回 実施日 トピック 9 06/13 グラフデータ 10 06/20 グラフ構造の諸指標 11

    06/27 ノードの中心性 12 07/04 コミュニティ発見 13 07/11 ウェブとグラフ 14 07/18 グラフ埋め込み 15 07/25 総合演習 – 社会ネットワーク分析 授業計画 76