BrainPad株式会社ブレインパッドのデータ活用に関する取り組みや製品・サービス開発の裏側、社員の日常などをご紹介します。マーケティングプラットフォーム本部で広告系製品の開発を担当している田頭です。前回の理論編ブログでは、大量のログから高速にユニークユーザー(以下、UU)数を推定するための背景やアルゴリズム、およびその実装部分について、「理論編」として解説させていただきました。今回は「実践編」として、実際に当社内で行ったapprox_distinct関数のパフォーマンス検証について、以下の内容を皆さんにご紹介したいと思います。今回の検証は、以下の環境で実施しました。検証データ検証に利用したデータは、以下の通りです。x))した場合と、推定(approx_distinct(x))した場合の結果を取得しました。検証結果このブログに掲載している検証結果の図は、全て横軸を真のUU数(厳密に集計したUU数)としています。凡例の意味は以下の通りです。両者が重なっているほど、誤差が小さいことを意味しています。UU数が小さい場合(グラフ左側)でも、ほぼ重なっています。凡例の意味は、以下の通りです。x)の計算時間approx_timeapprox_distinct(x)の計算時間UU数が小規模な場合には、計算時間において両者にあまり差は見られません。真のUU」で計算した絶対誤差を縦軸にプロットしました。100」で計算した相対誤差を、縦軸にプロットしました。4%以内に収まっています。3%以内に90%以上が収まっています。計算時間いくつか外れ値のようなものが含まれますが、手動で再実行したところ、外れ値前後の条件と同程度の速度でした。基本的にUU数が増加するほど差が大きくなっており、外れ値を除いて最大で1/3まで短縮されています。平均でも1/2まで短縮されています。5%以内に収まっています。4%以内に75%以上が収まっています。図(4-3-1)と同様にいくつか外れ値のようなものが含まれますが、手動で再実行した場合は前後の条件での集計と同程度の速度でした。こちらもUU数が増加するほど差が大きくなっており、外れ値を除いて最大で1/4まで短縮されています。平均でも1/3まで短縮されており、中規模の場合よりも更に短縮効果が大きくなっています。5%以内に収まっています。4%以内に99%以上が収まっています。毎回ランダムにサンプリングして推定するタイプではない入力データが同じなら同じ結果が返ってくるヘビーユーザーのような大量にログに出てくる人物に影響されないスライド今回のブログの内容とほぼ一致していますが、興味のある方はスライド資料もぜひご覧ください。Inc.まとめ今回は「実践編」として、大量ログからUU数を高速に推定するために、Prestoのapprox_distinct関数のパフォーマンス検証について、簡単にご紹介しました。懸念していたUU数が小規模な場合についても、かなりの精度で推定できており、実用的で使いやすそうですね!さらに、目標としていた「高速化」という点についても、データが小規模な場合は変化がありませんでしたが、データが大規模であるほど効果が大きいという結果を得ることができました。いえ、更に高速化できれば更に使いやすさは向上するため、引き続き高速化には取り組んでいきたいと思います。Prestoはリリースのスピードが速く、この検証中にも新バージョンが公開されていました。つなげていきたいと考えています。した先進的な取り組みをぜひ自分でもやってみたいという方を、ブレインパッドでは募集しています。...強化学習入門の第3弾。-ブレインパッド社内で実施している1on1コーチングの組み合わせ...2017-11-07深層学習で麻雀の点数を自動計算してみた!OpenCVを用いた「テンプレートマッチング」と、DeepLearningの...2017-06-23需要と最適在庫数はイコールではない!「最適在庫問題」こんにちは。アナリティクスサービス本部の多根です。採用ページスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。