大規模グラフ解析のための乱択スケッチ技法

16,275 views

Published on

Published in: Technology

大規模グラフ解析のための乱択スケッチ技法

  1. 1. 大規模グラフ解析のための 乱択スケッチ技法 -Min-wise Hashing とAll-DistancesSketches- 東京大学情報理工学研究科D2 秋葉拓哉 2014/11/17 @ IBIS 2014
  2. 2. 現代の大規模グラフの例 1 ウェブグラフ オントロジー ソーシャルグラフ
  3. 3. グラフから得たい情報 1.頂点の重要度 2.頂点間の距離・関連度 3.グラフの性質 4.…… 例: •検索サービス(Web 検索, SNS 内の検索) •ソーシャルメディア解析 テキストのみからは得にくい情報がある 2
  4. 4. 3 今日の話 1. MinHashSketches入門 •基礎的かつ強力な乱択スケッチ(900+引用!) 2. All-Distances Sketches 入門 •グラフにおける様々な操作を可能にする乱択スケッチ 時間の都合上,中心性の計算を主に扱います. グラフ解析の基礎にも触れながら説明していきます. 集合のスケッチ技法 グラフのスケッチ技法
  5. 5. 1. Min-wise Hashing 入門 4
  6. 6. 背景 誰もが大量の集合・特徴ベクトルを処理したい! •文章→ 単語の集合(bag of words) •商品→ 購買者 •画像データ→ 局所特徴量(SIFT, SURF, …) •…… 色々したいが,そのまま処理するのは困難 •データが大きすぎる •遅すぎる 5
  7. 7. Sketching による効率化 解決策: 集合そのものの代わりになるSketchを使う 6 Sketch 푫(푺) 集合푺 hoge piyo fuga ??? •小さい! •効率的に処理ができる! •ただし結果は推定になる
  8. 8. Jaccard 係数 集合の類似度としてJaccard 係数を考えます 集合푺ퟏと푺ퟐのJaccard 係数: 퐽푆1,푆2= 푆1∩푆2|푆1∪푆2| 具体的な場面 •文章の類似検索,重複検出 •商品の推薦 集合のJaccard 係数を推定したい気持ちになって下さい 7
  9. 9. MinHashSketch 풌=ퟏ ハッシュ関数ℎを用意しておく 8 集合푆 hoge piyo fuga ℎ푎푎∈푆} 13 85 35 minℎ푎푎∈푆} 13 全要素にハッシュ関数を適用 最小値だけを取り出す
  10. 10. Jaccard 係数推定の基礎 重要な性質 Prminℎ푎|푎∈푆1=minℎ푏|푏∈푆2=퐽푆1,푆2 2 つの集合のハッシュ値のmin が一致する確率は Jaccard 係数に等しい! ※ハッシュ関数は完全にランダムに振る舞うと仮定 9 푆1のSketch 푆2のSketch
  11. 11. Jaccard 係数推定の基礎 なぜ?具体例で考えてみます. •푆1=2,5,7,9,푆2=1,2,4,7,10 푆1∩푆2=2,7.例えば2で一致する場合とは? •argminℎ푎|푎∈푆1=2⇔{2,5,7,9}で2が最強 •argminℎ푏|푏∈푆2=2⇔{1,2,4,7,10}で2が最強 条件を合わせると, •2で一致⇔1,2,4,5,7,9,10=푆1∪푆2中で2が最強 一致するのは7 でも良く,このように,要は 푆1∪푆2中で最強のものが푆1∩푆2のいずれかであればよい. その確率は:S1∩푆2/S1∪푆2=퐽푆1,푆2. 10 最強=ハッシュ値が最低
  12. 12. 풌-min MinHashSketch あとはこれを푘個並べると……! 풌-min MinHashSketch •異なる푘個のハッシュ関数ℎ1,ℎ2,…,ℎ푘を用意 •それぞれについてさっきのmin を計算&保存 Jaccard 係数の推定 •「一致した数/ 푘」により퐽푆1,푆2を推定 推定値はunbiased(不偏) また分散は퐽1−퐽/푘になることが示せる 11
  13. 13. MinHashFamily こんな感じでハッシュ関数の最小値に注目する Sketchingの手法が一般にMinHashと呼ばれる. (Jaccard 係数推定以外のことも色々できる.) MinHashのバリエーション •푘個の並べ方 –푘-min Sketch (OddSketchはコレ) –푘-partition Sketch(HyperLogLogはコレ) –Bottom-푘Sketch(最近のAll-Distances Sketches はコレ) •ハッシュ値の使い方 –Full Ranks (さっきのやつはコレ) –푏-bit MinHash(Jaccard係数でよく使われているヤツ) –Base-푏Ranks(HyperLogLogはBase-2 Ranks) –…… 12
  14. 14. 集合に対する乱択スケッチ 乱択データ構造の最新事情 -MinHashとHyperLogLogの最近の進歩- http://www.slideshare.net/iwiwi/minhash を御覧ください. 内容 1. Odd SketchesによるJaccard係数推定の進歩 [Mitzenmacher-Pagh-Pham, WWW’14] 2. HIP Estimator による集合異なり数推定の進歩 [Cohen, PODS’14] 13 WWW’14 Best Paper!
  15. 15. 2. All-DistancesSketches入門 14
  16. 16. グラフのインデクシング・スケッチング よくある研究 •特定の問題のみを扱う索引 –最短経路のみ,近接中心性のみ •理論的なbound なし –計算量and/or 精度 All-Distances Sketches •様々な値を,精度保証有りで答えられる •ほぼ線形時間で計算・データは線型空間 15
  17. 17. All-Distances Sketches の歴史 起源は実は20 年前 •E. Cohen. J. Comput. System Sci,1997 最近の注目 •P. Boldi, et al. WWW 2011・・・近傍関数・有向直径 •E. Cohen, et al. COSN 2013・・・関連性 •E. Cohen. PODS 2014・・・近傍関数・中心性 •E. Cohen, et al. CIKM 2014 ・・・影響最大化 •E. Cohen, et al. submitted・・・影響最大化(時間減衰) 16
  18. 18. 前提 グラフ퐺=푉,퐸を持っている (無向グラフと仮定) •푛=푉 •푚=퐸 各頂点푣∈푉に対して, スケッチADS푣を前計算&保存する. これを使って色々する 17 C A B D
  19. 19. ADSの使い方 前計算 持っているグラフデータから,全頂点の ADSを計算する 使用 ADS を使って色々な値を高速に推定する •中心性 •関連性 18
  20. 20. All-Distances Sketches の定義 定義1 ADS 푣 ≔ 푢 푟 푢 < k푟 th Φ<푢 푣 定義2 任意の距離푑 に対する近傍関数푁푑 푣 の Bottom-k MinHash の和集合 19 ??? 意味不明だと思うので ゆっくり説明していきます
  21. 21. ランク(ハッシュ関数) •푟푣:各頂点のハッシュ値[0, 1] 「ランク」と呼びます イメージ: ランクの小さい頂点ほど偉い! •偉い=保存されやすい •Min-Hash でもハッシュ値最低のやつが保存されていた 20
  22. 22. ADS(풗)の視覚的な説明 21 ADS푣= 自分より左下に点が 푘個未満の頂点 푘=3の例 (MinHash同様にパラメータがある) 풗からの距離 ランク 性質 •ランク小さい方から푘個は必ず含まれる •近い方から푘個も必ず含まれる •遠くなってゆくほど含まれにくくなっていく
  23. 23. MinHashとADS の関連 풌-Min MinHash 푘個の独立なハッシュ関数を用意しそれぞ れで最小値を記録 (先ほど紹介したもの) Bottom-풌MinHash 1 つのハッシュ関数で푘個の最小値を記録 (これでも色々できる) 22
  24. 24. All-Distances Sketches の定義 定義1 ADS 푣 ≔ 푢 푟 푢 < k푟 th Φ<푢 푣 定義2 任意の距離푑 に対する近傍関数푁푑 푣 の Bottom-k MinHash の和集合 23 ??? 意味不明だと思うので ゆっくり説明していきます
  25. 25. ADS(풗)の視覚的な説明 24 ADS푣= 自分より左下に点が 푘個未満の頂点 푘=3の例 (MinHash同様にパラメータがある) Bottom-풌MinHash 1 つのハッシュ関数で푘個の最小値を記録 풗からの距離 ランク
  26. 26. ADS のサイズ ADS푣≅푘1+ln푛−ln푘=푂푘log푛 よって,合計の使用メモリは 푂푘푛log푛 푘を定数とすると, スペースは頂点数にほぼ線形 (→高いスケーラビリティ) 25 풌を大きくするほど スペースを使う しかし精度が良くなる(後述)
  27. 27. ADS のサイズ 26 なぜ? 近い頂点から順に考える.ランクが ランダムであることを思い出す. 푖番目の頂点がADS に含まれる確率푝푖は 푝푖=min1,푘/푖 よって, Σ푝푖=푘+푘퐻푛−퐻푘 ADS푣≅푘1+ln푛−ln푘=푂푘log푛 풗からの距離 ランク 調和数
  28. 28. ADSの計算 詳細は省略しますがかなり簡単 1.枝刈りDijkstraを全頂点から実行 2.動的計画法 푂푚+푛log푘푘log푛時間で構築可 Pregel等の分散グラフ計算基盤とも相性良い (はず) 27
  29. 29. ADS で計算できる値の例: 近接中心性(Closeness Centrality) 28
  30. 30. 中心性とは 中心性=重要度の推定値 色々な式がある •次数中心性(Degree Centrality) –単純に次数を重要度とみなす •近接中心性(Closeness Centrality) •媒介中心性(BetweennessCentrality) •(PageRank, HITS, …) 29
  31. 31. 近接中心性 距離に基づいた中心性 •퐶푣=Σ푢∈푉 1 푑퐺푣,푢 •퐶푣=Σ푢∈푉2−푑퐺푣,푢 一般に 퐶훼푣= 푢∈푉 훼푑퐺푣,푢 훼は単調非減少,훼푑∈0,1 (他の定義もあるけどこれで大部分はカバーできてる) 푢から푣への距離 http://en.wikipedia.org/wiki/Centrality
  32. 32. 近接中心性のナイーブな計算 最短経路アルゴリズム •幅優先探索(重みなし) –푂푚+푛時間 •Dijkstraのアルゴリズム(重み有り) –푂푚+푛log푛時間 1 頂点にこれだけの時間がかかると大変 大規模なグラフでは数分,数十分 31
  33. 33. 近傍関数 近接中心性 퐶훼푣= 푢∈푉 훼푑퐺푣,푢 近傍関数 푛푑푣=#푢∈푉|푑퐺푣,푢≤푑 (距離푑以下で何頂点に到達できるか?) 近傍関数は近接中心性の一種 近傍関数のほうが簡単なので,近傍関数か ら始める 32
  34. 34. ADS による近傍関数の推定1 Basic Estimator 푛푑푣= 푘−1 휏푘 到達可能な頂点のBottom-푘MinHashを取り出して, MinHashによる集合サイズ推定を適用している 33 풗からの距離 ランク 휏푘 範囲内で 푘番目に小さいランク 簡単!
  35. 35. ADS による近傍関数の推定1 Basic Estimator 푛푑푣= 푘−1 휏푘 精度 퐶푉≤1/푘−2 CV (coefficient of variation): 標準偏差/ 平均 34 풗からの距離 ランク 휏푘
  36. 36. ADS による近接関数の推定2 HIP Estimator [Cohen, PODS’14] 着想: •先ほどのBasic EstimatorはMinHashを取り 出してその情報だけを使った –ちなみにMinHash情報のみを使う場合は先ほ どの推定がほぼoptimal •全体の情報を使ってより良い推定はでき ないのか? 35
  37. 37. ADS による近接関数の推定2 HIP Estimator [Cohen, PODS’14] 푛푑푣= 푢∈ADS푣,푑퐺푣,푢≤푑 1 휏푢 36 풗からの距離 ランク 풖 푘=3 1 2 3 휏푢 各푢について, そいつより左で푘番目に 小さいランク
  38. 38. ADS による近接関数の推定2 HIP Estimatorを納得する •휏푢は,条件付き確率 –条件:それまでの頂点のランクを固定 –確率変数:푢のランク –何の確率?:푢がADS푣に含まれる 37 풗からの距離 ランク 풖 푘=3 1 2 3 휏푢 自分より左で푘番目に 小さいランク
  39. 39. ADS による近接関数の推定2 HIP Estimatorを納得する 푛푑푣= 푢∈ADS푣,푑퐺푣,푢≤푑 1 휏푢 •휏푢は,푢がADS푣に含まれる条件付き確率 •푢がADS(푣)に含まれるのは確率휏푢の現象 •1/휏푢個ぐらい“仲間” が居たはず –過去に戻って(historic)確率を求め(probability) 逆数を たす(inverse) からHIP 38
  40. 40. ADS による近接関数の推定2 HIP Estimator 푛푑푣= 푢∈ADS푣,푑퐺푣,푢≤푑 1 휏푢 精度 퐶푉≤1/2(푘−1) (Basic Estimator: 퐶푉≤1/푘−2) CV (coefficient of variation): 標準偏差/ 平均
  41. 41. 近接中心性の推定 近傍関数 푛푑푣= 푢∈ADS푣,푑퐺푣,푢≤푑 1 휏푢 近接中心性 퐶훼푣= 푢∈ADS(푣) 훼푑퐺푣,푢 휏푢 精度 同じく퐶푉≤1/2(푘−1) 40
  42. 42. 中心性以外の操作 ADS に推定できるもの •近傍関数,近接中心性 •近接関連性 •2 点間の距離 •有向直径 41
  43. 43. 42 まとめ 1. MinHashSketches入門 2. All-Distances Sketches 入門 •MinHashは集合の,ADS はグラフのスケッチ •ADS はMinHashを部品としており,良い性質を多数持つ •ADSから様々なものが推定できる –MinHashを取り出して行う推定 –全体を使うHIP Estimator ADSの課題 •実際に使ってみると,ほぼ線形とは言え,データサイズ が大きすぎる(푘を大きくできず精度が出ない) この点も近いうちに改善されることが期待される

×