Skip to main content
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
EN
Upload
Download free for 30 days
Sign in
Uploaded by
BrainPad Inc.
6,779 views
DeltaCubeにおけるユニークユーザー集計高速化(理論編)
Prestoを利用したユニークユーザー集計の高速化に関するデータマネジメントツール「DeltaCube」の資料①
Data & Analytics
◦
Read more
0
Save
Share
Embed
Save to Drive
Download now
Downloaded 12 times
1
/ 28
2
/ 28
3
/ 28
4
/ 28
5
/ 28
6
/ 28
7
/ 28
8
/ 28
9
/ 28
10
/ 28
11
/ 28
12
/ 28
13
/ 28
14
/ 28
15
/ 28
16
/ 28
17
/ 28
18
/ 28
19
/ 28
20
/ 28
More Related Content
PDF
RedisのBitCountとHyperLogLogを使用した超高速Unique User数集計
by
tmatsuura
51 slides
4.3K views
PDF
オンラインゲームソリューション@トレジャーデータ
by
Takahiro Inoue
25 slides
7.8K views
PDF
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
by
Treasure AI
57 slides
11.8K views
PDF
20140708 オンラインゲームソリューション
by
Takahiro Inoue
60 slides
4.1K views
PDF
Treasure Data Intro for Data Enthusiast!!
by
Takahiro Inoue
117 slides
122.7K views
PDF
トレジャーデータ新サービス発表 2013/12/9
by
Treasure AI
40 slides
5.9K views
PDF
IoT時代におけるストリームデータ処理と急成長の Apache Flink
by
Takanori Suzuki
41 slides
28.4K views
PDF
トレジャーデータ流,データ分析の始め方
by
Takahiro Inoue
34 slides
28.4K views
RedisのBitCountとHyperLogLogを使用した超高速Unique User数集計
by
tmatsuura
51 slides
4.3K views
オンラインゲームソリューション@トレジャーデータ
by
Takahiro Inoue
25 slides
7.8K views
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
by
Treasure AI
57 slides
11.8K views
20140708 オンラインゲームソリューション
by
Takahiro Inoue
60 slides
4.1K views
Treasure Data Intro for Data Enthusiast!!
by
Takahiro Inoue
117 slides
122.7K views
トレジャーデータ新サービス発表 2013/12/9
by
Treasure AI
40 slides
5.9K views
IoT時代におけるストリームデータ処理と急成長の Apache Flink
by
Takanori Suzuki
41 slides
28.4K views
トレジャーデータ流,データ分析の始め方
by
Takahiro Inoue
34 slides
28.4K views
What's hot
PDF
トレジャーデータ株式会社について(for all Data_Enthusiast!!)
by
Takahiro Inoue
93 slides
13.4K views
PDF
トレジャーデータのバッチクエリとアドホッククエリを理解する
by
Takahiro Inoue
28 slides
11.5K views
PDF
事例で学ぶトレジャーデータ 20140612
by
Takahiro Inoue
34 slides
8.5K views
PDF
最近のストリーム処理事情振り返り
by
Sotaro Kimura
72 slides
17.4K views
ODP
Hadoop for programmer
by
Sho Shimauchi
36 slides
3.2K views
PPTX
今さら聞けないHadoop セントラルソフト株式会社(20120119)
by
Toru Takizawa
74 slides
3.7K views
PPTX
Azure Search 大全
by
Daiyu Hatakeyama
194 slides
8.3K views
PPTX
Azure Datalake 大全
by
Daiyu Hatakeyama
263 slides
2.7K views
PDF
FluentdやNorikraを使った データ集約基盤への取り組み紹介
by
Recruit Technologies
32 slides
26K views
PDF
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
by
Yasuyuki Sugai
27 slides
4K views
PDF
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
by
Hadoop / Spark Conference Japan
49 slides
10.1K views
PDF
並列データベースシステムの概念と原理
by
Makoto Yui
52 slides
36.4K views
PDF
Treasure Data × Wave Analytics EC Demo
by
Takahiro Inoue
32 slides
8K views
PDF
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
by
Shinpei Ohtani
47 slides
6.2K views
PPTX
Hadoopカンファレンス2013
by
Recruit Technologies
49 slides
8.4K views
PDF
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
by
Takeshi Mikami
19 slides
5.6K views
PDF
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
by
MapR Technologies Japan
76 slides
14.7K views
PPT
クラウド時代の並列分散処理技術
by
Koichi Fujikawa
32 slides
3.1K views
PDF
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
by
Yasuyuki Sugai
115 slides
31.5K views
PPT
Amazon Redshift ベンチマーク Hadoop + Hiveと比較
by
FlyData Inc.
13 slides
13.3K views
トレジャーデータ株式会社について(for all Data_Enthusiast!!)
by
Takahiro Inoue
93 slides
13.4K views
トレジャーデータのバッチクエリとアドホッククエリを理解する
by
Takahiro Inoue
28 slides
11.5K views
事例で学ぶトレジャーデータ 20140612
by
Takahiro Inoue
34 slides
8.5K views
最近のストリーム処理事情振り返り
by
Sotaro Kimura
72 slides
17.4K views
Hadoop for programmer
by
Sho Shimauchi
36 slides
3.2K views
今さら聞けないHadoop セントラルソフト株式会社(20120119)
by
Toru Takizawa
74 slides
3.7K views
Azure Search 大全
by
Daiyu Hatakeyama
194 slides
8.3K views
Azure Datalake 大全
by
Daiyu Hatakeyama
263 slides
2.7K views
FluentdやNorikraを使った データ集約基盤への取り組み紹介
by
Recruit Technologies
32 slides
26K views
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
by
Yasuyuki Sugai
27 slides
4K views
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
by
Hadoop / Spark Conference Japan
49 slides
10.1K views
並列データベースシステムの概念と原理
by
Makoto Yui
52 slides
36.4K views
Treasure Data × Wave Analytics EC Demo
by
Takahiro Inoue
32 slides
8K views
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
by
Shinpei Ohtani
47 slides
6.2K views
Hadoopカンファレンス2013
by
Recruit Technologies
49 slides
8.4K views
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
by
Takeshi Mikami
19 slides
5.6K views
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
by
MapR Technologies Japan
76 slides
14.7K views
クラウド時代の並列分散処理技術
by
Koichi Fujikawa
32 slides
3.1K views
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
by
Yasuyuki Sugai
115 slides
31.5K views
Amazon Redshift ベンチマーク Hadoop + Hiveと比較
by
FlyData Inc.
13 slides
13.3K views
Similar to DeltaCubeにおけるユニークユーザー集計高速化(理論編)
PDF
DeltaCubeにおけるユニークユーザー集計高速化(実践編)
by
BrainPad Inc.
15 slides
2.8K views
PDF
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
by
Yuya Unno
44 slides
13.7K views
PDF
データ解析技術入門(R編)
by
Takumi Asai
48 slides
11.4K views
PDF
Rブートキャンプ
by
Kosuke Sato
97 slides
239 views
PDF
El text.tokuron a(2019).yamamoto190627
by
RCCSRENKEI
38 slides
64 views
PDF
第9回 配信講義 計算科学技術特論A(2021)
by
RCCSRENKEI
47 slides
336 views
PDF
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
by
Takuya Akiba
37 slides
33.2K views
PPTX
Approximate Scalable Bounded Space Sketch for Large Data NLP
by
Koji Matsuda
30 slides
2.1K views
PDF
Sec15 dynamic programming
by
Keisuke OTAKI
87 slides
1.3K views
PDF
関数型プログラミング入門 with OCaml
by
Haruka Oikawa
105 slides
12.5K views
PDF
CMSI計算科学技術特論B(12) 大規模量子化学計算(1)
by
Computational Materials Science Initiative
37 slides
4.5K views
PPTX
Introduction to Functional Programming
by
PIXELAcorporation
56 slides
1.4K views
PDF
Log解析の超入門
by
菊池 佑太
76 slides
8.6K views
PDF
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
by
Yuya Unno
45 slides
5.6K views
PDF
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
by
Kensuke Otsuki
153 slides
517 views
PPTX
純粋関数型アルゴリズム入門
by
Kimikazu Kato
33 slides
6.8K views
ODP
Collective_Intelligence_chap2
by
Yutaro Sugai
16 slides
497 views
PDF
データベース設計徹底指南
by
Mikiya Okuno
132 slides
115.5K views
PDF
Sakashita
by
texja1234
53 slides
2.1K views
PDF
More modern gpu
by
Preferred Networks
25 slides
38.6K views
DeltaCubeにおけるユニークユーザー集計高速化(実践編)
by
BrainPad Inc.
15 slides
2.8K views
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
by
Yuya Unno
44 slides
13.7K views
データ解析技術入門(R編)
by
Takumi Asai
48 slides
11.4K views
Rブートキャンプ
by
Kosuke Sato
97 slides
239 views
El text.tokuron a(2019).yamamoto190627
by
RCCSRENKEI
38 slides
64 views
第9回 配信講義 計算科学技術特論A(2021)
by
RCCSRENKEI
47 slides
336 views
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
by
Takuya Akiba
37 slides
33.2K views
Approximate Scalable Bounded Space Sketch for Large Data NLP
by
Koji Matsuda
30 slides
2.1K views
Sec15 dynamic programming
by
Keisuke OTAKI
87 slides
1.3K views
関数型プログラミング入門 with OCaml
by
Haruka Oikawa
105 slides
12.5K views
CMSI計算科学技術特論B(12) 大規模量子化学計算(1)
by
Computational Materials Science Initiative
37 slides
4.5K views
Introduction to Functional Programming
by
PIXELAcorporation
56 slides
1.4K views
Log解析の超入門
by
菊池 佑太
76 slides
8.6K views
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
by
Yuya Unno
45 slides
5.6K views
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
by
Kensuke Otsuki
153 slides
517 views
純粋関数型アルゴリズム入門
by
Kimikazu Kato
33 slides
6.8K views
Collective_Intelligence_chap2
by
Yutaro Sugai
16 slides
497 views
データベース設計徹底指南
by
Mikiya Okuno
132 slides
115.5K views
Sakashita
by
texja1234
53 slides
2.1K views
More modern gpu
by
Preferred Networks
25 slides
38.6K views
More from BrainPad Inc.
PDF
Oss LT会_20210203
by
BrainPad Inc.
12 slides
1.5K views
PDF
Business utilization of real estate image classification system using deep le...
by
BrainPad Inc.
21 slides
3.3K views
PDF
ブレインパッドにおける機械学習プロジェクトの進め方
by
BrainPad Inc.
83 slides
16.3K views
PDF
機械学習システムのアーキテクチャアラカルト
by
BrainPad Inc.
53 slides
24.4K views
PDF
機械学習システム開発案件の事例紹介
by
BrainPad Inc.
21 slides
3.4K views
PDF
れこめん道~とあるエンジニアの苦闘の日々
by
BrainPad Inc.
48 slides
3.2K views
PDF
DMPの分析機能を実現する技術
by
BrainPad Inc.
16 slides
1.8K views
PDF
機械学習システムを受託開発 する時に気をつけておきたい事
by
BrainPad Inc.
62 slides
3.4K views
PDF
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
by
BrainPad Inc.
29 slides
4K views
PDF
Python研修の作り方 - teaching-is_learning-
by
BrainPad Inc.
39 slides
1.2K views
PDF
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
by
BrainPad Inc.
51 slides
9.7K views
PDF
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
by
BrainPad Inc.
38 slides
921 views
PDF
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
by
BrainPad Inc.
56 slides
2.7K views
PDF
実証実験報告セミナー資料 20180328(抜粋版)
by
BrainPad Inc.
8 slides
758 views
PPTX
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
by
BrainPad Inc.
28 slides
1.8K views
PDF
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
by
BrainPad Inc.
43 slides
2.5K views
PDF
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
by
BrainPad Inc.
22 slides
1.6K views
PDF
エンジニア勉強会資料_③Rtoasterの11年
by
BrainPad Inc.
33 slides
2K views
PDF
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
by
BrainPad Inc.
64 slides
1.6K views
PDF
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
by
BrainPad Inc.
25 slides
1.9K views
Oss LT会_20210203
by
BrainPad Inc.
12 slides
1.5K views
Business utilization of real estate image classification system using deep le...
by
BrainPad Inc.
21 slides
3.3K views
ブレインパッドにおける機械学習プロジェクトの進め方
by
BrainPad Inc.
83 slides
16.3K views
機械学習システムのアーキテクチャアラカルト
by
BrainPad Inc.
53 slides
24.4K views
機械学習システム開発案件の事例紹介
by
BrainPad Inc.
21 slides
3.4K views
れこめん道~とあるエンジニアの苦闘の日々
by
BrainPad Inc.
48 slides
3.2K views
DMPの分析機能を実現する技術
by
BrainPad Inc.
16 slides
1.8K views
機械学習システムを受託開発 する時に気をつけておきたい事
by
BrainPad Inc.
62 slides
3.4K views
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
by
BrainPad Inc.
29 slides
4K views
Python研修の作り方 - teaching-is_learning-
by
BrainPad Inc.
39 slides
1.2K views
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
by
BrainPad Inc.
51 slides
9.7K views
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
by
BrainPad Inc.
38 slides
921 views
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
by
BrainPad Inc.
56 slides
2.7K views
実証実験報告セミナー資料 20180328(抜粋版)
by
BrainPad Inc.
8 slides
758 views
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
by
BrainPad Inc.
28 slides
1.8K views
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
by
BrainPad Inc.
43 slides
2.5K views
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
by
BrainPad Inc.
22 slides
1.6K views
エンジニア勉強会資料_③Rtoasterの11年
by
BrainPad Inc.
33 slides
2K views
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
by
BrainPad Inc.
64 slides
1.6K views
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
by
BrainPad Inc.
25 slides
1.9K views
DeltaCubeにおけるユニークユーザー集計高速化(理論編)
1.
Copyright © BrainPad
Inc. All Rights Reserved. DeltaCubeにおけるユニークユーザー集計高速化 (理論編) 2016年6月10日
2.
Copyright © BrainPad
Inc. All Rights Reserved. 1. DeltaCubeとは 2
3.
Copyright © BrainPad
Inc. All Rights Reserved. 3 DMPのセグメント作成に特化したデータマネジメントツール プライベートDMP 「Rtoaster」とシームレスに連携可能 Rtoasterの様々なデータを組み合わせて新たなセグメントを高速に作成することが可能 作成したセグメントのユーザー数をスピーディーに確認可能 DeltaCube(デルタキューブ)とは プライベートDMP 外部DSP外部DSPCRMデータ サイト デジタル広告 メールアプリ 新規セグメントデータ 行動データ、 セグメントデータ等 DeltaCube で作成したセグメントに 最適なアクションを実施! 外部DSP外部DSPパブリックDMP Yahoo! DMP 等 会員属性等 直感的にセグメントを作成!
4.
Copyright © BrainPad
Inc. All Rights Reserved. セグメント作成機能 – DMPに蓄積されたデータ(行動データ、CRMデータ、外部データ、 セグメントデータ等)を元に、ユーザー数を確認しながら直感的な 操作でセグメントを作成することが可能 – 作成したセグメント同士を掛け合わせ可能 クラスタリング機能 – これまでの弊社データ分析の知見を活かし、DMPに蓄積されたデータ を用いた自動クラスタリング機能 – 類似ユーザー同士を自動分類してセグメントを作成 – 自動作成された各セグメントの特徴(どのようなユーザーが含まれる か)を推定して表示 – サイト全体のユーザー像を把握可能 4 DeltaCubeの主な機能 今回はこちらのユーザー数を確認 する機能の高速化についてのお話
5.
Copyright © BrainPad
Inc. All Rights Reserved. DeltaCubeは、蓄積されたデータ(Webサイトのトラッキングログ等) を元に、ユーザーのセグメントを作成するツール – 様々な条件設定が可能 • 集計期間、閲覧URL、デバイスなど 結果を確認しながら、ストレスなくセグメントを作成するには、設定し た条件に一致するユニークユーザーの数を高速に確認したい – しかし、集計対象のデータは膨大で厳密に集計していては遅い • Webサイトの全てのユーザーのサイト内での全ての行動ログなど • 1日で数百~数百万ユーザーの全てのログが出てくる • これをDeltaCubeでは最大180日間までの期間で集計可能 – 1人単位まで厳密に出す必要はなく、ボリューム感がわかれば良い • 推定値で良い 5 ユニークユーザー数確認機能
6.
Copyright © BrainPad
Inc. All Rights Reserved. DeltaCubeではPrestoという分散処理ミドルウェアを集計に利用 – Prestoを用いて厳密に集計を行っている – これを概算値でよいので高速化したい 6 ユニークユーザー数確認機能の高速化 この数値を 高速に求め たい! DeltaCubeセグメント作成時の例
7.
Copyright © BrainPad
Inc. All Rights Reserved. 2. Prestoとは 7
8.
Copyright © BrainPad
Inc. All Rights Reserved. 2013/11/06に米FacebookがOSSとして公開。 公式ドキュメント(https://prestodb.io/docs/current/index.html)によると、 “Presto is a distributed SQL query engine designed to query large data sets distributed over one or more heterogeneous data sources.” そのまま訳すと「1つ以上のデータソースに分散した大規模なデータセット に対してクエリを実行するために設計された分散SQLクエリエンジン」。 特徴 全てのデータをインメモリで処理するため、レスポンスが非常に速い 個々のタスクを並列で処理させるため、高速 オンラインからのアドホックな参照クエリに向いている 複数のデータソースに対して一度に集計を実行可能 8 Prestoとは
9.
Copyright © BrainPad
Inc. All Rights Reserved. 「SQLクエリエンジン」とあるように、SQLクエリを投げられる 例えば、t_log_dataテーブルにWebページのトラッキングを格納して いたとする – uid列にユーザーを識別するためのユーザーIDが入っている – 当然他のデータが入る列が存在している ここでユニークユーザー数(以降、UU数)を数えるには、以下の様な クエリを実行する Prestoでは、COUNT(DISTINCT x)の推定値を返す関数がある – approx_distinctといい、推定であるため高速に動作する 9 Prestoでユニークユーザ集計 SELECT COUNT(DISTINCT uid) FROM t_log_data WHERE (絞り込みたい条件) ; uid datetime site page ・・・ agent Uid1 2016-06-08 12:00:00 www.brainpad.co.jp /top ・・・ PC Uid2 ・・・ ・・・ ・・ ・・・ ・・・ Uid1 ・・・ ・・・ ・・ ・・・ ・・・ t_log_dataテーブルのイメージ
10.
Copyright © BrainPad
Inc. All Rights Reserved. 3. approx_distinctとは 10
11.
Copyright © BrainPad
Inc. All Rights Reserved. https://prestodb.io/docs/current/functions/aggregate.html Prestoに用意されている(概算)集計関数の一つで、入力データxの cardinality(カーディナリティ、異なり数、濃度)の推定値を返す関数 – つまり、「COUNT(DISTINCT x)」の推定値を返す関数 使用例 – 使い方は簡単 11 approx_distinctとは(1) SELECT COUNT(DISTINCT uid) FROM t_log_data WHERE (絞り込みたい条件) ; SELECT approx_distinct(uid) FROM t_log_data WHERE (絞り込みたい条件) ; 厳密に 集計 概算で 集計
12.
Copyright © BrainPad
Inc. All Rights Reserved. 標準誤差((おそらく正規)誤差分布の標準偏差)2.3%で値を返す – ただし、これは全ての入力に対して誤差の上限を与えるものではない 「approx_distinct(x, e)」のようにして利用することも可能 – この場合、標準誤差がeを超えないように推定を行う – ただし、これも誤差の上限を与えるものではない – 0.01150 ≤ e ≤ 0.26000で与える必要がある(2016/06/10現在) 内部ではHyperLogLogと呼ばれるアルゴリズムが利用されている – HyperLogLogやそのPrestoでの実装など、詳細については後述 12 approx_distinctとは(2)
13.
Copyright © BrainPad
Inc. All Rights Reserved. 4. HyperLogLogとは 13
14.
Copyright © BrainPad
Inc. All Rights Reserved. (元論文) Philippe Flajolet, Éric Fusy, Oliver Gandouet and Frederic Meunier, HyperLogLog: the analysis of a near-optimal cardinality estimation algorithm, 2007. http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf データのcardinalityを推定するアルゴリズム 近最適(near-optimal)な確率的アルゴリズム 大規模なデータに対して高速かつ省メモリで実行可能 Webサイトのトラッキングログなどを元に、UU数推定に利用可能 Base-2 RankというMinHashの手法の1つを利用している – MinHashやBase-2 Rankについては、以下の資料がわかりやすい – http://www.slideshare.net/iwiwi/minhash – http://recruit.gmo.jp/engineer/jisedai/blog/redis_fast_countin g/ 14 HyperLogLogとは
15.
Copyright © BrainPad
Inc. All Rights Reserved. ユーザーを識別する値(ユーザーID等)を2進数にハッシュ化するハッ シュ関数を用意しておく – ハッシュ値の各ビットは独立であるとする 全データをハッシュ化する – 各ハッシュ値において、先頭に0が連続する個数を数える – これが最も多かったときの、連続した0の個数を𝑝として記録しておく データに含まれるUU数は𝟐 𝒑と推定する – なぜ? – ハッシュ値の各ビットが独立であるとすると、各ビットで0が出る確 率は 1 2 であり(1が出る確率と半々)、0が𝑝個連続する確率は 1 2 𝑝 – つまり、実際に0が𝑝個連続する(確率 1 2 𝑝で出てくる)ようなデータ (ユーザー)が存在したので、元となるデータには2 𝑝種類のデータが 含まれていたであろうと推定する 15 HyperLogLogの基礎 実際には、ハッシュ関数1つでは乱暴
16.
Copyright © BrainPad
Inc. All Rights Reserved. 下記元論文のFig. 2参照 – http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf HyperLogLogの一般的なアルゴリズム(1) 16
17.
Copyright © BrainPad
Inc. All Rights Reserved. 定義 – 集合𝐷の要素を2進数(無限長)にハッシュ化する関数をℎと定義する (ℎ: 𝐷 → 0, 1 ≡ {0, 1}∞) – 2進数𝑠 ∈ {0, 1}∞ を与えるとその左から数えて最初に1が出るビットの 位置を返す関数を𝜌と定義する • 例:𝜌 0001 … = 4 入力データ – 入力として集合𝐷に含まれる要素の多重集合Mを与える • 例:サイトのログに出てくるユーザーID列の値(重複あり) 仮定と初期化 – 𝑚 = 2 𝑏となるような𝑚を決定する(ただし𝑏 は任意の整数) – 𝑚個のレジスタ( 𝑀 1 , 𝑀 2 , … , 𝑀[𝑚] )を−∞に初期化しておく 17 HyperLogLogの一般的なアルゴリズム(2) 「ハッシュ関 数が1つでは 乱暴」と言っ ていた件につ いての工夫。 でもハッシュ 関数は1つ? 最も長く続いた0の数を記録しておくもの
18.
Copyright © BrainPad
Inc. All Rights Reserved. 集合Mに含まれる要素𝒗 ∈ Mについて、以下の手順を繰り返す – 𝑣をハッシュ化した値を𝑥とおく(𝑥 ≔ ℎ(𝑣)) – 𝑥の左から𝑏ビット目までに1を加えた値を𝑗とおく ( 𝑗 = 1+ < 𝑥1 𝑥2 … 𝑥 𝑏 >2 ) – 𝑥の左から𝑏ビット目までを除いた2進数を𝑤とおく ( 𝑤 ≔ 𝑥 𝑏+1 𝑥 𝑏+2 …) – 𝜌(𝑤)が𝑀[𝑗]より大きければ𝑀[𝑗]の値を𝜌(𝑤)に更新 (𝑀 𝑗 ≔ max(𝑀 𝑗 , 𝜌 𝑤 ) ) indicator functionを計算する – 𝑍 ≔ 𝑗=1 𝑚 2−𝑀[𝑗] −1 M のCardinalityの推定値を計算する – 𝐸 ≔ 𝛼 𝑚 𝑚2 𝑍 – 𝛼 𝑚 ≔ 𝑚 0 ∞ (log2( 2+𝑢 1+𝑢 )) 𝑚 𝑑𝑢 −1 HyperLogLogの一般的なアルゴリズム(3) ハッシュ関数は1つ だが、bビット目ま でのハッシュ値を レジスタの決定に 用いる。 つまり擬 似的に後半のビッ ト列が別のハッ シュ関数によって 出た値と考える。 ※ここから具体的な推定値計算に入る レジスタごとに出た推定 値の平均を取りたいが、 指数になっているため単 純な平均ではなく、 normalized bias corrected harmonic meanをとっている。 18
19.
Copyright © BrainPad
Inc. All Rights Reserved. 元論文のFig. 3参照 – http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf cardinalityが 𝟎. . 𝟏𝟎 𝟗 の範囲の場合の実用的なアルゴリズムと パラメータ(𝒎)が載っている 一般的アルゴリズム(前述)との相違点を次スライド以降に記載 19 HyperLogLogの実用的なアルゴリズム(1)
20.
Copyright © BrainPad
Inc. All Rights Reserved. 𝒎の値とその際の𝜶 𝒎の値 – 𝛼16 = 0.673 – 𝛼32 = 0.697 – 𝛼64 = 0.709 – 𝛼 𝑚 = 0.7213/(1 + 1.079/𝑚) 𝑓𝑜𝑟 𝑚 ≥ 128 ハッシュ値は32ビットの2進数 – 元は無限長 レジスタの初期値は0 – 元は−∞ 20 HyperLogLogの実用的なアルゴリズム(2) 各レジスタに保存する整数 の範囲は 0. . L + 1 − log2 𝑚 となる(ここでは 𝐿 = 32 )。 つまり各レジスタでメモリ は5ビットもあれば十分。 よって全体でもメモリは5𝑚 ビットあれば足りる。 驚きの省メモリ!
21.
Copyright © BrainPad
Inc. All Rights Reserved. 推定値(𝑬)に対して補正をかけて最終的な推定値(𝑬∗)とする – 𝐸 ≤ 5 2 𝑚の場合(ただし𝑚 ≥ 16) • もしレジスタの値が0であるようなレジスタの数(𝑉)が0でない場合 – 𝐸∗ ≔ 𝑚 log(𝑚/𝑉) • そうでない場合 – 𝐸∗ ≔ 𝐸 – 5 2 𝑚 ≤ 𝐸 ≤ 1 30 232の場合 • 𝐸∗ ≔ 𝐸 – 𝐸 ≥ 1 30 232の場合 • 𝐸∗ ≔ −232 log(1 − 𝐸/232) 標準誤差は 𝟏.𝟎𝟒 𝒎 – cardinalityが極大化すれば 21 HyperLogLogの実用的なアルゴリズム(3) Hit Counting(Linear Counting)と呼ばれる アルゴリズム。 Kyu-young Whang, Brad T. Vander-zanden and Howard M. Taylor, A Linear-Time Probabilistic Counting Algorithm for Database Applications, 1990. http://dblab.kaist.ac.kr/Prof/pdf/Whang199 0%28linear%29.pdf • 𝑚個の入れ物に𝑛個の球を投げて、球が 一つも入らない入れ物の数は𝑚𝑒−𝜇 個 • つまり𝜇 ≔ 𝑛 𝑚 • 空の入れ物の数を𝑉とおけば、 𝑛 = 𝑚 log(𝑚/𝑉)と推定できる
22.
Copyright © BrainPad
Inc. All Rights Reserved. 誤差をさらに小さくするための手法がいくつか考案されている – 閾値を設定し、途中でアルゴリズムを切り替える • Stefan Heule, Marc Nunkesser, Alexander Hall , HyperLogLog in Practice: Algorithmic Engineering of a State of The Art Cardinality Estimation Algorithm, 2013. • https://stefanheule.com/papers/edbt13-hyperloglog.pdf – 事前に推定値補正用のテーブルを作成しておく • 同上 • https://docs.google.com/document/d/1gyjfMHy43U9OWBXxfaeG- 3MjGzejW1dlpyMwEYAAWEI/view?fullscreen – ハッシュ値が最小のものだけを用いるのではなく、計算過程で出てき たものも利用する (そのときそのようなハッシュ値が出る確率を考慮) • Edith Cohen, All-Distances Sketches, Revisited: HIP Estimators for Massive Graphs Analysis, 2014. • http://arxiv.org/pdf/1306.3284.pdf 22 HyperLogLogの改善
23.
Copyright © BrainPad
Inc. All Rights Reserved. 5. HyperLogLogのPrestoにおける実装 23
24.
Copyright © BrainPad
Inc. All Rights Reserved. 24 approx_distinctはHyperLogLogを利用 approx_distinctでは HyperLogLogが利用されている – https://github.com/prestodb/p resto/blob/master/presto- main/src/main/java/com/face book/presto/operator/aggregat ion/ApproximateCountDistinctA ggregations.java – ソースコードにそのまま HyperLogLogという名前がある • 内部ではAirliftというパッケージ を利用 • Airlift : RESTサービスを構築する ためのフレームワーク
25.
Copyright © BrainPad
Inc. All Rights Reserved. https://github.com/airlift/airlift/blob/master/stats/docs/hl l.md ハッシュ関数はMurmurHash3-128bit – 衝突困難性、一様性、計算コストに優れている – 実際に利用するのは128ビットではなく64ビットもしくは26ビット LinearCounting用のメソッドも準備 – https://github.com/airlift/airlift/blob/master/stats/src/main/ja va/io/airlift/stats/cardinality/Utils.java 推定値補正用のテーブルも準備 – https://github.com/airlift/airlift/blob/master/stats/src/main/ja va/io/airlift/stats/cardinality/BiasCorrection.java 25 AirliftにおけるHyperLogLogの実装
26.
Copyright © BrainPad
Inc. All Rights Reserved. 8. 参考文献 26
27.
Copyright © BrainPad
Inc. All Rights Reserved. Philippe Flajolet, Éric Fusy, Oliver Gandouet and Frederic Meunier, HyperLogLog: the analysis of a near-optimal cardinality estimation algorithm, 2007. – http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf Stefan Heule, Marc Nunkesser, Alexander Hall , HyperLogLog in Practice: Algorithmic Engineering of a State of The Art Cardinality Estimation Algorithm, 2013. – https://stefanheule.com/papers/edbt13-hyperloglog.pdf Edith Cohen, All-Distances Sketches, Revisited: HIP Estimators for Massive Graphs Analysis, 2014. – http://arxiv.org/pdf/1306.3284.pdf Kyu-young Whang, Brad T. Vander-zanden and Howard M. Taylor, A Linear-Time Probabilistic Counting Algorithm for Database Applications, 1990. – http://dblab.kaist.ac.kr/Prof/pdf/Whang1990%28linear%29.pdf RedisのBitCountとHyperLogLogを使用した超高速Unique User数集計 – http://recruit.gmo.jp/engineer/jisedai/blog/redis_fast_counting/ 乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩- – http://www.slideshare.net/iwiwi/minhash 27 参考文献
28.
Copyright © BrainPad
Inc. All Rights Reserved. 株式会社ブレインパッド 〒108-0071 東京都港区白金台3-2-10 白金台ビル3F TEL:03-6721-7001 FAX:03-6721-7010 info@brainpad.co.jp Copyright © BrainPad Inc. All Rights Reserved. www.brainpad.co.jp