Upload
takuya-akiba
View
4.565
Download
2
Embed Size (px)
Citation preview
大規模グラフ解析のための乱択スケッチ技法
-Min-wise Hashing と All-Distances Sketches-
東京大学情報理工学研究科 D2
秋葉拓哉
2014/11/17 @ IBIS 2014
グラフから得たい情報
1. 頂点の重要度
2. 頂点間の距離・関連度
3. グラフの性質
4. ……
例:
• 検索サービス (Web 検索, SNS 内の検索)
• ソーシャルメディア解析テキストのみからは得にくい情報がある
2
3
今日の話
1. MinHash Sketches入門• 基礎的かつ強力な乱択スケッチ (900+引用!)
2. All-Distances Sketches 入門• グラフにおける様々な操作を可能にする乱択スケッチ
時間の都合上,中心性の計算を主に扱います.
グラフ解析の基礎にも触れながら説明していきます.
集合のスケッチ技法
グラフのスケッチ技法
背景
誰もが大量の集合・特徴ベクトルを処理したい!
• 文章→ 単語の集合 (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!
グラフのインデクシング・スケッチング
よくある研究
• 特定の問題のみを扱う索引
– 最短経路のみ,近接中心性のみ
• 理論的な 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
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
中心性とは
中心性=重要度の推定値
色々な式がある
• 次数中心性 (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