SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Downloaden Sie, um offline zu lesen
Copyright © BrainPad Inc. All Rights Reserved.
DeltaCubeにおけるユニークユーザー集計高速化
(理論編)
2016年6月10日
Copyright © BrainPad Inc. All Rights Reserved.
1. DeltaCubeとは
2
Copyright © BrainPad Inc. All Rights Reserved. 3
 DMPのセグメント作成に特化したデータマネジメントツール
 プライベートDMP 「Rtoaster」とシームレスに連携可能
 Rtoasterの様々なデータを組み合わせて新たなセグメントを高速に作成することが可能
 作成したセグメントのユーザー数をスピーディーに確認可能
DeltaCube(デルタキューブ)とは
プライベートDMP
外部DSP外部DSPCRMデータ
サイト デジタル広告 メールアプリ
新規セグメントデータ
行動データ、
セグメントデータ等
DeltaCube で作成したセグメントに
最適なアクションを実施!
外部DSP外部DSPパブリックDMP
Yahoo! DMP 等
会員属性等
直感的にセグメントを作成!
Copyright © BrainPad Inc. All Rights Reserved.
 セグメント作成機能
– DMPに蓄積されたデータ(行動データ、CRMデータ、外部データ、
セグメントデータ等)を元に、ユーザー数を確認しながら直感的な
操作でセグメントを作成することが可能
– 作成したセグメント同士を掛け合わせ可能
 クラスタリング機能
– これまでの弊社データ分析の知見を活かし、DMPに蓄積されたデータ
を用いた自動クラスタリング機能
– 類似ユーザー同士を自動分類してセグメントを作成
– 自動作成された各セグメントの特徴(どのようなユーザーが含まれる
か)を推定して表示
– サイト全体のユーザー像を把握可能
4
DeltaCubeの主な機能
今回はこちらのユーザー数を確認
する機能の高速化についてのお話
Copyright © BrainPad Inc. All Rights Reserved.
 DeltaCubeは、蓄積されたデータ(Webサイトのトラッキングログ等)
を元に、ユーザーのセグメントを作成するツール
– 様々な条件設定が可能
• 集計期間、閲覧URL、デバイスなど
 結果を確認しながら、ストレスなくセグメントを作成するには、設定し
た条件に一致するユニークユーザーの数を高速に確認したい
– しかし、集計対象のデータは膨大で厳密に集計していては遅い
• Webサイトの全てのユーザーのサイト内での全ての行動ログなど
• 1日で数百~数百万ユーザーの全てのログが出てくる
• これをDeltaCubeでは最大180日間までの期間で集計可能
– 1人単位まで厳密に出す必要はなく、ボリューム感がわかれば良い
• 推定値で良い
5
ユニークユーザー数確認機能
Copyright © BrainPad Inc. All Rights Reserved.
 DeltaCubeではPrestoという分散処理ミドルウェアを集計に利用
– Prestoを用いて厳密に集計を行っている
– これを概算値でよいので高速化したい
6
ユニークユーザー数確認機能の高速化
この数値を
高速に求め
たい!
DeltaCubeセグメント作成時の例
Copyright © BrainPad Inc. All Rights Reserved.
2. Prestoとは
7
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とは
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テーブルのイメージ
Copyright © BrainPad Inc. All Rights Reserved.
3. approx_distinctとは
10
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
(絞り込みたい条件)
;
厳密に
集計
概算で
集計
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)
Copyright © BrainPad Inc. All Rights Reserved.
4. HyperLogLogとは
13
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とは
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つでは乱暴
Copyright © BrainPad Inc. All Rights Reserved.
 下記元論文のFig. 2参照
– http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf
HyperLogLogの一般的なアルゴリズム(1)
16
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の数を記録しておくもの
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
Copyright © BrainPad Inc. All Rights Reserved.
 元論文のFig. 3参照
– http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf
 cardinalityが 𝟎. . 𝟏𝟎 𝟗 の範囲の場合の実用的なアルゴリズムと
パラメータ(𝒎)が載っている
 一般的アルゴリズム(前述)との相違点を次スライド以降に記載
19
HyperLogLogの実用的なアルゴリズム(1)
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𝑚
ビットあれば足りる。
驚きの省メモリ!
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(𝑚/𝑉)と推定できる
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の改善
Copyright © BrainPad Inc. All Rights Reserved.
5. HyperLogLogのPrestoにおける実装
23
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サービスを構築する
ためのフレームワーク
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の実装
Copyright © BrainPad Inc. All Rights Reserved.
8. 参考文献
26
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
参考文献
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

Weitere ähnliche Inhalte

Was ist angesagt?

トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)Takahiro Inoue
 
トレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解するトレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解するTakahiro Inoue
 
事例で学ぶトレジャーデータ 20140612
事例で学ぶトレジャーデータ 20140612事例で学ぶトレジャーデータ 20140612
事例で学ぶトレジャーデータ 20140612Takahiro Inoue
 
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返りSotaro Kimura
 
Hadoop for programmer
Hadoop for programmerHadoop for programmer
Hadoop for programmerSho Shimauchi
 
今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)Toru Takizawa
 
FluentdやNorikraを使った データ集約基盤への取り組み紹介
FluentdやNorikraを使った データ集約基盤への取り組み紹介FluentdやNorikraを使った データ集約基盤への取り組み紹介
FluentdやNorikraを使った データ集約基盤への取り組み紹介Recruit Technologies
 
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-Yasuyuki Sugai
 
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)Hadoop / Spark Conference Japan
 
並列データベースシステムの概念と原理
並列データベースシステムの概念と原理並列データベースシステムの概念と原理
並列データベースシステムの概念と原理Makoto Yui
 
Treasure Data × Wave Analytics EC Demo
Treasure Data × Wave Analytics EC DemoTreasure Data × Wave Analytics EC Demo
Treasure Data × Wave Analytics EC DemoTakahiro Inoue
 
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 FallAmazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 FallShinpei Ohtani
 
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)Takeshi Mikami
 
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...MapR Technologies Japan
 
クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術Koichi Fujikawa
 
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Yasuyuki Sugai
 
Amazon Redshift ベンチマーク Hadoop + Hiveと比較
Amazon Redshift ベンチマーク  Hadoop + Hiveと比較 Amazon Redshift ベンチマーク  Hadoop + Hiveと比較
Amazon Redshift ベンチマーク Hadoop + Hiveと比較 FlyData Inc.
 

Was ist angesagt? (20)

トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)
 
トレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解するトレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解する
 
事例で学ぶトレジャーデータ 20140612
事例で学ぶトレジャーデータ 20140612事例で学ぶトレジャーデータ 20140612
事例で学ぶトレジャーデータ 20140612
 
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
 
Hadoop for programmer
Hadoop for programmerHadoop for programmer
Hadoop for programmer
 
今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)
 
Azure Search 大全
Azure Search 大全Azure Search 大全
Azure Search 大全
 
Azure Datalake 大全
Azure Datalake 大全Azure Datalake 大全
Azure Datalake 大全
 
FluentdやNorikraを使った データ集約基盤への取り組み紹介
FluentdやNorikraを使った データ集約基盤への取り組み紹介FluentdやNorikraを使った データ集約基盤への取り組み紹介
FluentdやNorikraを使った データ集約基盤への取り組み紹介
 
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
 
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
 
並列データベースシステムの概念と原理
並列データベースシステムの概念と原理並列データベースシステムの概念と原理
並列データベースシステムの概念と原理
 
Treasure Data × Wave Analytics EC Demo
Treasure Data × Wave Analytics EC DemoTreasure Data × Wave Analytics EC Demo
Treasure Data × Wave Analytics EC Demo
 
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 FallAmazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
 
Hadoopカンファレンス2013
Hadoopカンファレンス2013Hadoopカンファレンス2013
Hadoopカンファレンス2013
 
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
 
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
 
クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術
 
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
 
Amazon Redshift ベンチマーク Hadoop + Hiveと比較
Amazon Redshift ベンチマーク  Hadoop + Hiveと比較 Amazon Redshift ベンチマーク  Hadoop + Hiveと比較
Amazon Redshift ベンチマーク Hadoop + Hiveと比較
 

Ähnlich wie DeltaCubeにおけるユニークユーザー集計高速化(理論編)

Big data解析ビジネス
Big data解析ビジネスBig data解析ビジネス
Big data解析ビジネスMie Mori
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展Recruit Technologies
 
データサイエンティスト協会 木曜勉強会 #02 講演2:『ビッグデータの0次分析手法と適用例のご紹介 ~俯瞰から始まる企業内ビッグデータの活用~』
データサイエンティスト協会 木曜勉強会 #02 講演2:『ビッグデータの0次分析手法と適用例のご紹介 ~俯瞰から始まる企業内ビッグデータの活用~』データサイエンティスト協会 木曜勉強会 #02 講演2:『ビッグデータの0次分析手法と適用例のご紹介 ~俯瞰から始まる企業内ビッグデータの活用~』
データサイエンティスト協会 木曜勉強会 #02 講演2:『ビッグデータの0次分析手法と適用例のご紹介 ~俯瞰から始まる企業内ビッグデータの活用~』The Japan DataScientist Society
 
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎Insight Technology, Inc.
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムRecruit Technologies
 
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) hamaken
 
20120822_dstn技術交流会_DataSpider接続先技術動向
20120822_dstn技術交流会_DataSpider接続先技術動向20120822_dstn技術交流会_DataSpider接続先技術動向
20120822_dstn技術交流会_DataSpider接続先技術動向dstn
 
【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューション
【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューション【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューション
【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューションDell TechCenter Japan
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナーTakahiro Iwase
 
Googleの基盤クローン Hadoopについて
Googleの基盤クローン HadoopについてGoogleの基盤クローン Hadoopについて
Googleの基盤クローン HadoopについてKazuki Ohta
 
データ入力が終わってから分析前にすること
データ入力が終わってから分析前にすることデータ入力が終わってから分析前にすること
データ入力が終わってから分析前にすることMasaru Tokuoka
 
企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案Toshiyuki Shimono
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料Recruit Technologies
 
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜Yasuyuki Sugai
 
Jubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォーム
Jubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォームJubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォーム
Jubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォームPreferred Networks
 
ハンズオン セッション 3: リカレント ニューラル ネットワーク入門
ハンズオン セッション 3: リカレント ニューラル ネットワーク入門ハンズオン セッション 3: リカレント ニューラル ネットワーク入門
ハンズオン セッション 3: リカレント ニューラル ネットワーク入門NVIDIA Japan
 
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)NTT DATA OSS Professional Services
 
DB TechShowcase Tokyo - Intelligent Data Platform
DB TechShowcase Tokyo - Intelligent Data PlatformDB TechShowcase Tokyo - Intelligent Data Platform
DB TechShowcase Tokyo - Intelligent Data PlatformDaiyu Hatakeyama
 

Ähnlich wie DeltaCubeにおけるユニークユーザー集計高速化(理論編) (20)

Big data解析ビジネス
Big data解析ビジネスBig data解析ビジネス
Big data解析ビジネス
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展
 
データサイエンティスト協会 木曜勉強会 #02 講演2:『ビッグデータの0次分析手法と適用例のご紹介 ~俯瞰から始まる企業内ビッグデータの活用~』
データサイエンティスト協会 木曜勉強会 #02 講演2:『ビッグデータの0次分析手法と適用例のご紹介 ~俯瞰から始まる企業内ビッグデータの活用~』データサイエンティスト協会 木曜勉強会 #02 講演2:『ビッグデータの0次分析手法と適用例のご紹介 ~俯瞰から始まる企業内ビッグデータの活用~』
データサイエンティスト協会 木曜勉強会 #02 講演2:『ビッグデータの0次分析手法と適用例のご紹介 ~俯瞰から始まる企業内ビッグデータの活用~』
 
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
 
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
 
20120822_dstn技術交流会_DataSpider接続先技術動向
20120822_dstn技術交流会_DataSpider接続先技術動向20120822_dstn技術交流会_DataSpider接続先技術動向
20120822_dstn技術交流会_DataSpider接続先技術動向
 
【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューション
【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューション【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューション
【講演資料】ビッグデータ時代の経営を支えるビジネスアナリティクスソリューション
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナー
 
Googleの基盤クローン Hadoopについて
Googleの基盤クローン HadoopについてGoogleの基盤クローン Hadoopについて
Googleの基盤クローン Hadoopについて
 
データ入力が終わってから分析前にすること
データ入力が終わってから分析前にすることデータ入力が終わってから分析前にすること
データ入力が終わってから分析前にすること
 
企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
 
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
 
Jubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォーム
Jubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォームJubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォーム
Jubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォーム
 
ハンズオン セッション 3: リカレント ニューラル ネットワーク入門
ハンズオン セッション 3: リカレント ニューラル ネットワーク入門ハンズオン セッション 3: リカレント ニューラル ネットワーク入門
ハンズオン セッション 3: リカレント ニューラル ネットワーク入門
 
jubatus pressrelease
jubatus pressreleasejubatus pressrelease
jubatus pressrelease
 
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)
 
DB TechShowcase Tokyo - Intelligent Data Platform
DB TechShowcase Tokyo - Intelligent Data PlatformDB TechShowcase Tokyo - Intelligent Data Platform
DB TechShowcase Tokyo - Intelligent Data Platform
 
tut_pfi_2012
tut_pfi_2012tut_pfi_2012
tut_pfi_2012
 

Mehr von BrainPad Inc.

Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...BrainPad Inc.
 
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方BrainPad Inc.
 
機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルトBrainPad Inc.
 
機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介BrainPad Inc.
 
れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々 れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々 BrainPad Inc.
 
DMPの分析機能を実現する技術
DMPの分析機能を実現する技術DMPの分析機能を実現する技術
DMPの分析機能を実現する技術BrainPad Inc.
 
機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事BrainPad Inc.
 
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシシステム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシBrainPad Inc.
 
Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-BrainPad Inc.
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かうBrainPad Inc.
 
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料BrainPad Inc.
 
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部APIGKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部APIBrainPad Inc.
 
実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)BrainPad Inc.
 
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善BrainPad Inc.
 
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発BrainPad Inc.
 
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例BrainPad Inc.
 
エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年BrainPad Inc.
 
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発BrainPad Inc.
 
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?BrainPad Inc.
 

Mehr von BrainPad Inc. (20)

Oss LT会_20210203
Oss LT会_20210203Oss LT会_20210203
Oss LT会_20210203
 
Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...
 
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方
 
機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト
 
機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介
 
れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々 れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々
 
DMPの分析機能を実現する技術
DMPの分析機能を実現する技術DMPの分析機能を実現する技術
DMPの分析機能を実現する技術
 
機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事
 
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシシステム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
 
Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
 
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
 
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部APIGKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
 
実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)
 
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
 
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
 
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
 
エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年
 
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
 
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
 

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