43
大規模グラフ解析のための 乱択スケッチ 技法 Min-wise Hashing All-Distances Sketches東京大学 情報理工学研究科 D2 秋葉 拓哉 2014/11/17 @ IBIS 2014

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

Embed Size (px)

Citation preview

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

-Min-wise Hashing と All-Distances Sketches-

東京大学情報理工学研究科 D2

秋葉拓哉

2014/11/17 @ IBIS 2014

現代の大規模グラフの例

1

ウェブグラフ オントロジーソーシャルグラフ

グラフから得たい情報

1. 頂点の重要度

2. 頂点間の距離・関連度

3. グラフの性質

4. ……

例:

• 検索サービス (Web 検索, SNS 内の検索)

• ソーシャルメディア解析テキストのみからは得にくい情報がある

2

3

今日の話

1. MinHash Sketches入門• 基礎的かつ強力な乱択スケッチ (900+引用!)

2. All-Distances Sketches 入門• グラフにおける様々な操作を可能にする乱択スケッチ

時間の都合上,中心性の計算を主に扱います.

グラフ解析の基礎にも触れながら説明していきます.

集合のスケッチ技法

グラフのスケッチ技法

1. Min-wise Hashing 入門

4

背景

誰もが大量の集合・特徴ベクトルを処理したい!

• 文章→ 単語の集合 (bag of words)

• 商品→ 購買者

• 画像データ→ 局所特徴量 (SIFT, SURF, …)

• ……

色々したいが,そのまま処理するのは困難

• データが大きすぎる

• 遅すぎる

5

Sketching による効率化

解決策:

集合そのものの代わりになる Sketchを使う

6

Sketch 𝑫(𝑺)集合 𝑺

hoge

piyo

fuga ???

• 小さい!• 効率的に処理ができる!• ただし結果は推定になる

Jaccard 係数

集合の類似度として Jaccard 係数を考えます

集合 𝑺𝟏と 𝑺𝟐の Jaccard 係数:

𝐽 𝑆1, 𝑆2 =𝑆1 ∩ 𝑆2|𝑆1 ∪ 𝑆2|

具体的な場面

• 文章の類似検索,重複検出

• 商品の推薦

集合の Jaccard 係数を推定したい気持ちになって下さい7

MinHash Sketch 𝒌 = 𝟏

ハッシュ関数 ℎを用意しておく

8

集合 𝑆

hoge

piyo

fuga

ℎ 𝑎 𝑎 ∈ 𝑆}

13

85

35

min ℎ 𝑎 𝑎 ∈ 𝑆}

13

全要素にハッシュ関数を適用 最小値だけを取り出す

Jaccard 係数推定の基礎

重要な性質

Pr min ℎ 𝑎 |𝑎 ∈ 𝑆1 = min ℎ 𝑏 |𝑏 ∈ 𝑆2= 𝐽 𝑆1, 𝑆2

2 つの集合のハッシュ値の min が一致する確率は

Jaccard 係数に等しい!

※ハッシュ関数は完全にランダムに振る舞うと仮定

9

𝑆1の Sketch 𝑆2の Sketch

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が最強

• arg min ℎ 𝑏 |𝑏 ∈ 𝑆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

最強=ハッシュ値が最低

𝒌-min MinHash Sketch

あとはこれを 𝑘個並べると……!

𝒌-min MinHash Sketch

• 異なる 𝑘個のハッシュ関数 ℎ1, ℎ2, … , ℎ𝑘を用意

• それぞれについてさっきの min を計算&保存

Jaccard 係数の推定

• 「一致した数 / 𝑘」により 𝐽 𝑆1, 𝑆2 を推定

推定値は unbiased (不偏)

また分散は 𝐽 1 − 𝐽 / 𝑘になることが示せる

11

MinHash Family

こんな感じでハッシュ関数の最小値に注目する

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

集合に対する乱択スケッチ

乱択データ構造の最新事情

-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!

2. All-Distances Sketches入門

14

グラフのインデクシング・スケッチング

よくある研究

• 特定の問題のみを扱う索引

– 最短経路のみ,近接中心性のみ

• 理論的な bound なし

– 計算量 and/or 精度

All-Distances Sketches

• 様々な値を,精度保証有りで答えられる

• ほぼ線形時間で計算・データは線型空間

15

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

前提

グラフ 𝐺 = 𝑉, 𝐸 を持っている(無向グラフと仮定)

• 𝑛 = 𝑉

• 𝑚 = 𝐸

各頂点 𝑣 ∈ 𝑉に対して,

スケッチ ADS 𝑣 を前計算&保存する.これを使って色々する

17

C

A

B

D

ADSの使い方

前計算

持っているグラフデータから,全頂点のADSを計算する

使用

ADS を使って色々な値を高速に推定する

• 中心性

• 関連性

18

All-Distances Sketchesの定義

定義 1

ADS 𝑣 ≔ 𝑢 𝑟 𝑢 < k𝑟th Φ<𝑢 𝑣

定義 2

任意の距離 𝑑に対する近傍関数𝑁𝑑 𝑣 の

Bottom-k MinHashの和集合

19

??? 意味不明だと思うのでゆっくり説明していきます

ランク(ハッシュ関数)

• 𝑟 𝑣 :各頂点のハッシュ値 [0, 1]

「ランク」と呼びます

イメージ:

ランクの小さい頂点ほど偉い!• 偉い=保存されやすい

• Min-Hash でもハッシュ値最低のやつが保存されていた

20

ADS(𝒗)の視覚的な説明

21

ADS 𝑣 =自分より左下に点が𝑘 個未満の頂点𝑘 = 3 の例

(MinHash 同様にパラメータがある)

𝒗 からの距離

ランク

性質• ランク小さい方から 𝑘 個は必ず含まれる• 近い方から 𝑘 個も必ず含まれる• 遠くなってゆくほど含まれにくくなっていく

MinHashと ADS の関連

𝒌-Min MinHash

𝑘個の独立なハッシュ関数を用意しそれぞれで最小値を記録(先ほど紹介したもの)

Bottom-𝒌MinHash

1 つのハッシュ関数で 𝑘個の最小値を記録(これでも色々できる)

22

All-Distances Sketchesの定義

定義 1

ADS 𝑣 ≔ 𝑢 𝑟 𝑢 < k𝑟th Φ<𝑢 𝑣

定義 2

任意の距離 𝑑に対する近傍関数𝑁𝑑 𝑣 の

Bottom-k MinHashの和集合

23

??? 意味不明だと思うのでゆっくり説明していきます

ADS(𝒗)の視覚的な説明

24

ADS 𝑣 =自分より左下に点が𝑘 個未満の頂点𝑘 = 3 の例

(MinHash 同様にパラメータがある)

Bottom-𝒌 MinHash1 つのハッシュ関数で 𝑘 個の最小値を記録

𝒗 からの距離

ランク

ADS のサイズ

ADS 𝑣 ≅ 𝑘 1 + ln 𝑛 − ln 𝑘 = 𝑂 𝑘 log 𝑛

よって,合計の使用メモリは

𝑂 𝑘𝑛 log 𝑛

𝑘を定数とすると,

スペースは頂点数にほぼ線形

(→高いスケーラビリティ)

25

𝒌を大きくするほどスペースを使う

しかし精度が良くなる(後述)

ADS のサイズ

26

なぜ?

近い頂点から順に考える.ランクが

ランダムであることを思い出す.

𝑖番目の頂点が ADS に含まれる確率 𝑝𝑖は

𝑝𝑖 = min 1, 𝑘/𝑖

よって,

∑𝑝𝑖 = 𝑘 + 𝑘 𝐻𝑛 − 𝐻𝑘

ADS 𝑣 ≅ 𝑘 1 + ln 𝑛 − ln 𝑘 = 𝑂 𝑘 log 𝑛

𝒗 からの距離

ランク

調和数

ADSの計算

詳細は省略しますがかなり簡単

1. 枝刈り Dijkstraを全頂点から実行

2. 動的計画法

𝑂 𝑚 + 𝑛 log 𝑘 𝑘 log 𝑛 時間で構築可

Pregel等の分散グラフ計算基盤とも相性良い(はず)

27

ADS で計算できる値の例:近接中心性 (Closeness Centrality)

28

中心性とは

中心性=重要度の推定値

色々な式がある

• 次数中心性 (Degree Centrality)

– 単純に次数を重要度とみなす

• 近接中心性 (Closeness Centrality)

• 媒介中心性 (Betweenness Centrality)

• (PageRank, HITS, …)

29

近接中心性

距離に基づいた中心性

• 𝐶 𝑣 = ∑𝑢∈𝑉1

𝑑𝐺 𝑣,𝑢

• 𝐶 𝑣 = ∑𝑢∈𝑉 2−𝑑𝐺 𝑣,𝑢

一般に

𝐶𝛼 𝑣 =

𝑢∈𝑉

𝛼 𝑑𝐺 𝑣, 𝑢

𝛼は単調非減少, 𝛼 𝑑 ∈ 0,1(他の定義もあるけどこれで大部分はカバーできてる)

𝑢から 𝑣への距離 http://en.wikipedia.org/wiki/Centrality

近接中心性のナイーブな計算

最短経路アルゴリズム

• 幅優先探索 (重みなし)

– 𝑂 𝑚 + 𝑛 時間

• Dijkstraのアルゴリズム (重み有り)

– 𝑂 𝑚 + 𝑛 log 𝑛 時間

1 頂点にこれだけの時間がかかると大変大規模なグラフでは数分,数十分

31

近傍関数

近接中心性

𝐶𝛼 𝑣 =

𝑢∈𝑉

𝛼 𝑑𝐺 𝑣, 𝑢

近傍関数

𝑛𝑑 𝑣 = # 𝑢 ∈ 𝑉 | 𝑑𝐺 𝑣, 𝑢 ≤ 𝑑(距離 𝑑以下で何頂点に到達できるか?)

近傍関数は近接中心性の一種

近傍関数のほうが簡単なので,近傍関数から始める

32

ADS による近傍関数の推定1

Basic Estimator

𝑛𝑑 𝑣 =𝑘 − 1

𝜏𝑘

到達可能な頂点の Bottom-𝑘MinHashを取り出して,

MinHashによる集合サイズ推定を適用している33

𝒗 からの距離

ランク

𝜏𝑘範囲内で

𝑘 番目に小さいランク

簡単!

ADS による近傍関数の推定1

Basic Estimator

𝑛𝑑 𝑣 =𝑘 − 1

𝜏𝑘

精度

𝐶𝑉 ≤ 1/ 𝑘 − 2

CV (coefficient of variation):

標準偏差 / 平均

34

𝒗 からの距離

ランク

𝜏𝑘

ADS による近接関数の推定2

HIP Estimator [Cohen, PODS’14]

着想:

• 先ほどの Basic EstimatorはMinHashを取り出してその情報だけを使った

– ちなみにMinHash情報のみを使う場合は先ほどの推定がほぼ optimal

• 全体の情報を使ってより良い推定はできないのか?

35

ADS による近接関数の推定2

HIP Estimator [Cohen, PODS’14]

𝑛𝑑 𝑣 =

𝑢∈ADS 𝑣 , 𝑑𝐺 𝑣,𝑢 ≤𝑑

1

𝜏𝑢

36

𝒗 からの距離

ランク 𝒖 𝑘 = 3

1

23𝜏𝑢

各 𝑢について,そいつより左で 𝑘 番目に

小さいランク

ADS による近接関数の推定2

HIP Estimatorを納得する

• 𝜏𝑢は,条件付き確率

– 条件:それまでの頂点のランクを固定

– 確率変数:𝑢のランク

– 何の確率?:𝑢が ADS 𝑣 に含まれる

37

𝒗 からの距離

ランク 𝒖 𝑘 = 3

1

2

3𝜏𝑢自分より左で 𝑘 番目に

小さいランク

ADS による近接関数の推定2

HIP Estimatorを納得する

𝑛𝑑 𝑣 =

𝑢∈ADS 𝑣 , 𝑑𝐺 𝑣,𝑢 ≤𝑑

1

𝜏𝑢

• 𝜏𝑢は,𝑢が ADS 𝑣 に含まれる条件付き確率

• 𝑢が ADS(𝑣)に含まれるのは確率 𝜏𝑢の現象

• 1/𝜏𝑢個ぐらい “仲間” が居たはず

– 過去に戻って (historic)確率を求め (probability) 逆数をたす (inverse) から HIP

38

ADS による近接関数の推定2

HIP Estimator

𝑛𝑑 𝑣 =

𝑢∈ADS 𝑣 , 𝑑𝐺 𝑣,𝑢 ≤𝑑

1

𝜏𝑢

精度

𝐶𝑉 ≤ 1/ 2(𝑘 − 1)(Basic Estimator: 𝐶𝑉 ≤ 1/ 𝑘 − 2)

CV (coefficient of variation):

標準偏差 / 平均

近接中心性の推定

近傍関数

𝑛𝑑 𝑣 =

𝑢∈ADS 𝑣 , 𝑑𝐺 𝑣,𝑢 ≤𝑑

1

𝜏𝑢

近接中心性

𝐶𝛼 𝑣 =

𝑢∈ADS(𝑣)

𝛼 𝑑𝐺 𝑣, 𝑢

𝜏𝑢

精度

同じく 𝐶𝑉 ≤ 1/ 2(𝑘 − 1)

40

中心性以外の操作

ADS に推定できるもの

•近傍関数,近接中心性

•近接関連性

• 2 点間の距離

•有向直径

41

42

まとめ

1. MinHash Sketches入門

2. All-Distances Sketches 入門• MinHashは集合の,ADS はグラフのスケッチ

• ADS はMinHashを部品としており,良い性質を多数持つ

• ADSから様々なものが推定できる

– MinHashを取り出して行う推定

– 全体を使う HIP Estimator

ADSの課題

• 実際に使ってみると,ほぼ線形とは言え,データサイズが大きすぎる (𝑘を大きくできず精度が出ない)

この点も近いうちに改善されることが期待される