230 likes | 376 Views
Best Paper. 研究紹介 #1. Finding Frequent Items in Data Streams Graham Cormode (AT&T Labs, USA), Marios Hadjieleftheriou (AT&T Labs, USA). The Frequent Items Problem ?. Item のストリームにおいて、与えられた閾値よりも多く出現する Item を全て見つける 例: Item が TCP パケットなら、 Frequent Items は 人気のある終端 バンド幅を占有しているユーザ
E N D
BestPaper 研究紹介#1 Finding Frequent Items in Data Streams Graham Cormode (AT&T Labs, USA), Marios Hadjieleftheriou (AT&T Labs, USA).
The Frequent Items Problem? • Itemのストリームにおいて、与えられた閾値よりも多く出現するItemを全て見つける • 例: • ItemがTCPパケットなら、Frequent Itemsは • 人気のある終端 • バンド幅を占有しているユーザ • Itemがサーチエンジンクエリなら、Frequent Itemsは • 人気のある検索語 • たくさん目の前を通り過ぎたネタは何か?
定義 • Stream S of n items: t1, …, tn. • Frequency of item i is fi= |{j|tj= i}|. • The exact φ-frequent set is: {i|fi> φn}. • もし φ=0.2なら Frequent Set = {i|fi> 2} • よって、0.2-Frequent Items = t1 t2 t3 t4 t5 t6 t7 t8 t9 tn ・ ・ ・ n=10 → fi=4 i t1 A t2 Z t3 i t4 Z t5 t6 A t7 P i t8 t9 i Z t10 φ:ストリーム中に出現する頻度を表す変数 i A Z i Z A P i i Z 出現回数 3回以上 i Z
定義(続き) 不可 良 優 • 実際にこの論文が扱うのは… • ε-approximate frequent item要件 • 結果集合Fの全てのiにおいてfi>(φ-ε)nが成り立ち、 • fi>φnの成り立つ{i|i∉F}は無い • 簡単に言うなら • 間違い(False Positive)は含んでるかもしれないけど • 見落とし(False Negative)は無い i A Z i Z A P i i Z φ=0.2(=3回以上出現) False Positive False Nagative Z i i A Z Z A P i
Frequent Item Problem • 要件 • 速い動作 • 少ない作業領域 • 正確さ • アルゴリズムの分類 • Counter Based • Quantile Based • Skeches
本研究では・・・ • 可能なアルゴリズム全て実装 • 一般的なテストベッド上に構築 • 可能な限り様々な実装方式を採用 • 様々なデータ形式 • 様々なアルゴリズム・デザイン • 様々なシナリオで何がBestかを調べる
① Counter Based Algorithms • 特徴 • Fast • Small Space • Deterministic • Do not Support Deletions • 削除のイベント(item)を含むストリームは対象外
準備:Majority Algorithm (Boyer) • 最も頻出なアイテムを探すアルゴリズム • カウンターを1として最初のアイテムを保存する • 次に同じアイテムが来たらカウンターを1増やす • 違うアイテムが来たら… • もしカウンターが0でなければ → カウンターを1減らす • カウンターが0ならば → カウンターを1として新しいアイテムを保存 • 最後に保存されていたアイテムがMajority! ストリーム カウンタ値・保存アイテム 赤 赤 緑 緑 緑 紫 1 2 1 0 1 0 緑がMajority! ただし、本研究で扱うのはTop-kを得るアルゴリズム
#1:Frequent Algorithm 赤 赤 赤 赤 青 青 緑 緑 緑 緑 • 出典 • E. Demaine, A. L´opez-Ortiz, and J. I. Munro. Frequencyestimation of internet packet streams with limited space. In European Symposium on Algorithms (ESA), 2002. • R. Karp, C. Papadimitriou, and S. Shenker.A simplealgorithm for finding frequent elements in sets and bags.ACM Transactions on Database Systems, 28:51–55, 2003. |T|<k e.g. Frequent(k=2) No! No! ∊ T ? ∊ T ? 赤 赤 青 緑 緑 i ∅ T= Yes! Yes! 1 1 2 1 1 0 カウンタを1増やす アイテムをカウンタとともにTへ保存 カウンタ0のアイテムはTから削除 Tの全てのアイテムのカウンタを1減らす A. 赤 緑
#2:Lossy Counting 赤 赤 赤 赤 青 青 緑 緑 緑 緑 赤 赤 • 出典 • G. Manku and R. Motwani. Approximate frequency countsover data streams. In International Conference on Very LargeData Bases, 2002. home e.g. LossyCounting(k=2) e.g. LossyCounting(k=2) カウンタ値を⊿+1としTに保存 カウンタ値を⊿+1としTに保存 No! No! No! n++ n++ ∊ T ? ∊ T ? 赤 赤 赤 赤 緑 青 緑 Yes! Yes! カウンタを1増やす カウンタを1増やす Yes! Yes! 全てのj∊Tに関して 全てのj∊Tに関して ∅ カウンタが⊿未満ならTからアイテムを削除 カウンタが⊿未満ならTからアイテムを削除 ⊿= ⊿= 0 0 3 1 2 n= n= 5 2 3 4 1 0 6 0 T= T= 3 1 2 2 2 3 A. home 赤 緑
#3:Space Saving 赤 赤 赤 赤 青 青 緑 緑 緑 緑 • 出典 • A. Metwally, D. Agrawal, and A. E. Abbadi. Efficientcomputation of frequent and top-k elements in data streams. In International Conference on Database Theory, 2005. e.g. SpaceSaving(k=2) |T|<k ? |T|<k ? No! No! No! No! ∊ T ? ∊ T ? 緑 青 赤 赤 i 緑 Yes! Yes! Yes! Yes! カウンタを1増やす カウンタを1増やす 最少カウンタ値に1を加えた値⇒ 最少カウンタ値に 1を加えた値を得る 2 ∅ アイテムをカウンタとともにTへ保存 アイテムをカウンタとともにTへ保存 T= T= 2 1 3 1 新しいアイテムカウンタ値で最小カウンタアイテムを置換 新しいアイテムカウンタ値で最小カウンタアイテムを置換 A. 赤 緑
実験 • VC++, g++ • データセット • Zipfデータ • AT&T UDP and TCP backbone traffic • 計測 • 速度 • スペースコスト • Recall, Precision • Average Relative Error(ARE):相対誤差の平均値
実装系 3つのアルゴリズム、計5種類の実装系で計測 • F: Frequentアルゴリズム • LC: Lossy Counting アルゴリズム(⊿なし) • LCD: Lossy Countingアルゴリズム • SSL: Space Savingアルゴリズム(Linked List実装) • SSH: Space Savingアルゴリズム(Heap実装)
結果(Speed) 正誤表: グラフの縦軸の速・遅が逆 オレンジ色の線の位置 その他、下線部を更新 スピード 速 Log Scale 遅 φ Skew • FとSSLが速い • Linkd List は総じて速い • Heapは低skew時に遅い • φの影響は殆ど無い F: Frequentアルゴリズム LC: Lossy Counting アルゴリズム(⊿なし) LCD: Lossy Countingアルゴリズム SSL: Space Savingアルゴリズム(Linked List実装) SSH: Space Savingアルゴリズム(Heap実装)
結果(Size) スピード サイズ • SpaceSavingに関して • Heapは小さい • Linked Listはφが低い時Heapの二倍 F: Frequentアルゴリズム LC: Lossy Counting アルゴリズム(⊿なし) LCD: Lossy Countingアルゴリズム SSL: Space Savingアルゴリズム(Linked List実装) SSH: Space Savingアルゴリズム(Heap実装)
結果(Recall) 再現率 Log Scale φ Skew • Recallはすべて100% • =false negative無し F: Frequentアルゴリズム LC: Lossy Counting アルゴリズム(⊿なし) LCD: Lossy Countingアルゴリズム SSL: Space Savingアルゴリズム(Linked List実装) SSH: Space Savingアルゴリズム(Heap実装)
結果(Precision) 適合率 Log Scale φ Skew • Fは適合率が低い • LC, LCDはskewの影響 • SSL, SSHはほぼ100% • データセットの影響無し F: Frequentアルゴリズム LC: Lossy Counting アルゴリズム(⊿なし) LCD: Lossy Countingアルゴリズム SSL: Space Savingアルゴリズム(Linked List実装) SSH: Space Savingアルゴリズム(Heap実装)
結果(Average Relative Error) ARE Log Scale φ Skew • Fのみ誤差がある • 低skew時に顕著 • HTTP, UDPは異なる特徴 • (データセットによる違い) F: Frequentアルゴリズム LC: Lossy Counting アルゴリズム(⊿なし) LCD: Lossy Countingアルゴリズム SSL: Space Savingアルゴリズム(Linked List実装) SSH: Space Savingアルゴリズム(Heap実装)
まとめ • 勝者: Space Savingアルゴリズム • 特にHeap実装 • 消費スペースが小さい • Recall, Precision = 100% • Lossy CountingやFrequentに比べて速い • Linked List実装 • スピードだけでいえば最速 • ただしHeapに比べて二倍の消費スペース • スペースが問題とならない場合はLinked Listが良いだろう…
と、ここまでで • 論文の1/3です・・・ • Frequent Item Problem • Counter-base algorithm • Quantile algorithm • Sketch algorithm • こんなに残っています。 ☜今はココ! ここでは(VLDB08でも)、 これらに関してはサマリー
② Quantile Algorithm • Greenwald and Khanna (GK) • Quantile Digest (Suri et al.) • 特徴 • Large space • Answer a more general problem • まとめ • 総じてQDはGKに勝っている • スピードは遅い • メモリ効率も悪い • Frequencies Accuratelyの見積もりができない
③ Sketch Algorithm • CountSketch (Charikar et al.) • CountMin Sketch (Cormode and Muthukrishnan) • 特徴 • 削除に対応 • まとめ • どちらが勝っているかは結果からは分からなかった • Hierarchical CountMinはスピードが速く、メモリ効率も良かった。 • ただしskewなデータでのみ正確だった • Combinatorial Group Testing CountMinは早く正確だった。 • ただしメモリ効率は悪かった • CountSketchはメモリ効率が良く正確だった。 • ただしスピードが遅い
おわりに • ここで紹介したアルゴリズムの実装は全て以下のURLで公開されている。 • http://research.att.com/~marioh/frequent-items/index.html