SlideShare a Scribd company logo
Обработка данных в RTB: 
быстро, дешево и на 98% точно
Павел Калайдин 
@facultyofwonder
данных очень много 
памяти разумно мало 
хотим все знать за один проход 
время обработки - константно
max, min, mean
Как посчитать медиану?
Случайная выборка?
reservoir sampling? 
возможно
Вероятностные алгоритмы
сойдет приблизительный ответ 
хотим знать распределение ошибки
frugal <- function(stream) { 
m <- 0 
for (val in stream) { 
if (val > m) 
m <- m + 1 
else if (val < m) 
m <- m - 1 
} 
return(m) 
}
def frugal(stream): 
m = 0 
for val in stream: 
if val > m: 
m += 1 
elif val < m: 
m -= 1 
return m
Ограничение по 
памяти - 1 int! 
def frugal(stream): 
m = 0 
for val in stream: 
if val > m: 
m += 1 
elif val < m: 
m -= 1 
return m 
Реально работает
Персентили?
def frugal_1u(stream, m=0, q=0.5): 
for val in stream: 
Демо: bit.ly/frugalsketch 
r = np.random.random() 
if val > m and r > 1 - q: 
m += 1 
elif val < m and r > q: 
m -= 1 
return m
Потоковый + вероятностный = скетч
Что мы хотим? 
Знать число уникальных 
пользователей 
aka мощность множества или кардинальное число
Что мы хотим? 
Знать число уникальных 
пользователей 
по сайтам, интересам, временным 
интервалам
Когда мы это хотим? 
Прямо сейчас
Данные: 
1010 элементов, 
109 уникальных int32 
40Гб
Решение в лоб: хеш-таблица
Хеш-таблица: 
4Гб
HyperLogLog: 
1.5кб, 2% ошибка
Все начинается с алгоритма LogLog
Представьте, что сегодня утром я 
бросал монетку и записал, какое 
максимальное число раз подряд 
выпала решка
2 раза 
100 раз
В каком случае я бросал дольше?
Нас интересуют паттерны в хешах 
входных значений 
(число 0 = решек в начале)
Хешируем, не семплируем!* 
* нужна хорошая хеш-функция
Ждем: 
0xxxxxx хешей - ~50% 
1xxxxxx хешей - ~50% 
00xxxxx хешей - ~25% 
и т.д.
оценка - 2R, 
где R - максимальное число 
лидирующих нулей
Я могу провести несколько 
экспериментов с подбрасыванием 
монетки и записать результаты на 
листок бумаги
И взять среднее число
Этот способ называется - 
стохастическое усреднение
Напомню, текущая оценка - 2R, 
где R - максимальное число 
лидирующих нулей
Будем использовать M корзин, в 
каждой из которой будем запоминать 
свой R
где ɑ - нормирующая константа
Это и есть LogLog алгоритм
LogLog 
SuperLogLog
LogLog 
SuperLogLog 
HyperLogLog 
среднее гармоническое, а не арифметическое 
+ некоторые поправки
Число корзин и длина хеша - 
определяют ошибку
LogLog 
SuperLogLog 
HyperLogLog 
HyperLogLog++ 
Google, 2013 
32 -> 64bit + поправки для маленьких мощностей 
bit.ly/HLLGoogle
LogLog 
SuperLogLog 
HyperLogLog 
HyperLogLog++ 
Discrete Max-Count 
Facebook, 2014 
bit.ly/DiscreteMaxCount
Large scale?
Объединение без потери точности!
У нас есть два HLL-скетча, возьмем 
максимальное значение из каждой 
корзины
Voila! Результирующий скетч не 
потерял в точности
Код: 
bit.ly/hyperloglog
Временное окно 
bit.ly/SlidingHLL
Проверка на вхождение - старый 
добрый фильтр Блума
i 
h 
1 
h 
2 
h 
k 
0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0
Сколько раз мы встречали человека 
в интернете за эту неделю?
Ответ - Count-Min скетч 
bit.ly/CountMinSketch
w 
i 
+1 
+1 
+1 
h1 
h4 
hd 
d 
Оценка - возьмем минимум из d значений.
хешируем, не семплируем 
даем приблизительный ответ 
экономим память 
обрабатываем по мере поступления 
этот слайд - “скетч” всего доклада
Много разных скетчей для разных 
задач: 
персентили, 
частоты, 
коэффициент Жаккара (похожесть 
множеств)
Это развивающаяся область: 
stay tuned!
Еще по теме: 
Блог Neustar Research: 
bit.ly/NRsketches 
Обзор скетчей: 
bit.ly/SketchesOverview 
Лекции по потоковым алгоритмам: 
bit.ly/streaming-lectures
Спасибо за внимание 
и 
happy sketching! 
Знаете, как посчитать экономнее и точнее? 
pavel@rutarget.ru
Бонус: 
HyperLogLog на SQL: 
bit.ly/HLLinSQL

More Related Content

Viewers also liked

Large-scale real-time analytics for everyone
Large-scale real-time analytics for everyoneLarge-scale real-time analytics for everyone
Large-scale real-time analytics for everyone
Pavel Kalaidin
 
Global wan prez-ru.mini
Global wan prez-ru.miniGlobal wan prez-ru.mini
Global wan prez-ru.mini
TWD Industries AG
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop Vladimir Klimontovich
 
TrustLeap GWAN - The multicore Future requires Parallelism Programming tools
TrustLeap GWAN - The multicore Future requires Parallelism Programming toolsTrustLeap GWAN - The multicore Future requires Parallelism Programming tools
TrustLeap GWAN - The multicore Future requires Parallelism Programming tools
TWD Industries AG
 
The Allen AI Science Challenge
The Allen AI Science ChallengeThe Allen AI Science Challenge
The Allen AI Science Challenge
Pavel Kalaidin
 
Александр Иванов. Programmatic: новая эра в digital-рекламе
Александр Иванов. Programmatic: новая эра в digital-рекламеАлександр Иванов. Programmatic: новая эра в digital-рекламе
Александр Иванов. Programmatic: новая эра в digital-рекламе
Auditorius
 
Global-WAN - The Swiss Neutral Data Haven
Global-WAN - The Swiss Neutral Data HavenGlobal-WAN - The Swiss Neutral Data Haven
Global-WAN - The Swiss Neutral Data Haven
TWD Industries AG
 
eTarget 2015. Антикризисный программатик: как заставить медийную рекламу рабо...
eTarget 2015. Антикризисный программатик: как заставить медийную рекламу рабо...eTarget 2015. Антикризисный программатик: как заставить медийную рекламу рабо...
eTarget 2015. Антикризисный программатик: как заставить медийную рекламу рабо...
Auditorius
 
Мифы об RTB и Programmatic
Мифы об RTB и ProgrammaticМифы об RTB и Programmatic
Мифы об RTB и Programmatic
HUBRUS
 
Dmp - cookie synching (11-15-11)
Dmp - cookie synching (11-15-11)Dmp - cookie synching (11-15-11)
Dmp - cookie synching (11-15-11)
Marcus Tewksbury
 
Простой programmatic для высокой результативности performance-кампаний
Простой programmatic для высокой результативности performance-кампанийПростой programmatic для высокой результативности performance-кампаний
Простой programmatic для высокой результативности performance-кампаний
AdRiver
 
Bluekai: Data Management Platforms (dmp) for Publishers
Bluekai: Data Management Platforms (dmp) for PublishersBluekai: Data Management Platforms (dmp) for Publishers
Bluekai: Data Management Platforms (dmp) for Publishers
Brian Crotty
 
Real time bidding (DSP, SSP, DMP, ATD, ITD)
Real time bidding (DSP, SSP, DMP, ATD, ITD)Real time bidding (DSP, SSP, DMP, ATD, ITD)
Real time bidding (DSP, SSP, DMP, ATD, ITD)
Mutlu Dogus Yildirim
 
Performance marketing 2016
Performance marketing 2016Performance marketing 2016
Performance marketing 2016
iabrussiaprez
 
All about Programmatic buying(RTB), DSP,SSP, DMP & DCT - A complete digital ...
All about Programmatic buying(RTB), DSP,SSP, DMP & DCT -  A complete digital ...All about Programmatic buying(RTB), DSP,SSP, DMP & DCT -  A complete digital ...
All about Programmatic buying(RTB), DSP,SSP, DMP & DCT - A complete digital ...
Karunakar Ravirala
 

Viewers also liked (15)

Large-scale real-time analytics for everyone
Large-scale real-time analytics for everyoneLarge-scale real-time analytics for everyone
Large-scale real-time analytics for everyone
 
Global wan prez-ru.mini
Global wan prez-ru.miniGlobal wan prez-ru.mini
Global wan prez-ru.mini
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop
 
TrustLeap GWAN - The multicore Future requires Parallelism Programming tools
TrustLeap GWAN - The multicore Future requires Parallelism Programming toolsTrustLeap GWAN - The multicore Future requires Parallelism Programming tools
TrustLeap GWAN - The multicore Future requires Parallelism Programming tools
 
The Allen AI Science Challenge
The Allen AI Science ChallengeThe Allen AI Science Challenge
The Allen AI Science Challenge
 
Александр Иванов. Programmatic: новая эра в digital-рекламе
Александр Иванов. Programmatic: новая эра в digital-рекламеАлександр Иванов. Programmatic: новая эра в digital-рекламе
Александр Иванов. Programmatic: новая эра в digital-рекламе
 
Global-WAN - The Swiss Neutral Data Haven
Global-WAN - The Swiss Neutral Data HavenGlobal-WAN - The Swiss Neutral Data Haven
Global-WAN - The Swiss Neutral Data Haven
 
eTarget 2015. Антикризисный программатик: как заставить медийную рекламу рабо...
eTarget 2015. Антикризисный программатик: как заставить медийную рекламу рабо...eTarget 2015. Антикризисный программатик: как заставить медийную рекламу рабо...
eTarget 2015. Антикризисный программатик: как заставить медийную рекламу рабо...
 
Мифы об RTB и Programmatic
Мифы об RTB и ProgrammaticМифы об RTB и Programmatic
Мифы об RTB и Programmatic
 
Dmp - cookie synching (11-15-11)
Dmp - cookie synching (11-15-11)Dmp - cookie synching (11-15-11)
Dmp - cookie synching (11-15-11)
 
Простой programmatic для высокой результативности performance-кампаний
Простой programmatic для высокой результативности performance-кампанийПростой programmatic для высокой результативности performance-кампаний
Простой programmatic для высокой результативности performance-кампаний
 
Bluekai: Data Management Platforms (dmp) for Publishers
Bluekai: Data Management Platforms (dmp) for PublishersBluekai: Data Management Platforms (dmp) for Publishers
Bluekai: Data Management Platforms (dmp) for Publishers
 
Real time bidding (DSP, SSP, DMP, ATD, ITD)
Real time bidding (DSP, SSP, DMP, ATD, ITD)Real time bidding (DSP, SSP, DMP, ATD, ITD)
Real time bidding (DSP, SSP, DMP, ATD, ITD)
 
Performance marketing 2016
Performance marketing 2016Performance marketing 2016
Performance marketing 2016
 
All about Programmatic buying(RTB), DSP,SSP, DMP & DCT - A complete digital ...
All about Programmatic buying(RTB), DSP,SSP, DMP & DCT -  A complete digital ...All about Programmatic buying(RTB), DSP,SSP, DMP & DCT -  A complete digital ...
All about Programmatic buying(RTB), DSP,SSP, DMP & DCT - A complete digital ...
 

Similar to Обработка данных в RTB: быстро, дешево и на 98% точно

Haskell
HaskellHaskell
Haskell
DevDay
 
Haskell Lite - presentation for DevDay about Haskell language
Haskell Lite - presentation for DevDay about Haskell languageHaskell Lite - presentation for DevDay about Haskell language
Haskell Lite - presentation for DevDay about Haskell language
Alexander Granin
 
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)Low-level C/C++ Optimization by Anrew Axenov (Sphinx)
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)Vadim Kosov
 
Низкоуровневая Оптимизация (Андрей Аксенов)
Низкоуровневая Оптимизация (Андрей Аксенов)Низкоуровневая Оптимизация (Андрей Аксенов)
Низкоуровневая Оптимизация (Андрей Аксенов)Ontico
 
BigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: PersonalizationBigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: PersonalizationAnton Gorokhov
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-Studio
Andrey Karpov
 
Sergii Tsypanov: "Tricky enterprise"
Sergii Tsypanov: "Tricky enterprise"Sergii Tsypanov: "Tricky enterprise"
Sergii Tsypanov: "Tricky enterprise"
LogeekNightUkraine
 
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Fwdays
 
Управление памятью в GO
Управление памятью в GOУправление памятью в GO
Управление памятью в GO
ssuserb5dd93
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Platonov Sergey
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Yandex
 
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...CodeFest
 
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Ontico
 
Анализ количества посетителей на сайте [Считаем уникальные элементы]
Анализ количества посетителей на сайте [Считаем уникальные элементы]Анализ количества посетителей на сайте [Считаем уникальные элементы]
Анализ количества посетителей на сайте [Считаем уникальные элементы]
Qrator Labs
 
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Ontico
 
Тонкости работы трассирующего JIT-компилятора / Антон Солдатов (IPONWEB)
Тонкости работы трассирующего JIT-компилятора / Антон Солдатов (IPONWEB)Тонкости работы трассирующего JIT-компилятора / Антон Солдатов (IPONWEB)
Тонкости работы трассирующего JIT-компилятора / Антон Солдатов (IPONWEB)
Ontico
 
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Ontico
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
Badoo Development
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Yandex
 

Similar to Обработка данных в RTB: быстро, дешево и на 98% точно (20)

Haskell
HaskellHaskell
Haskell
 
Haskell Lite - presentation for DevDay about Haskell language
Haskell Lite - presentation for DevDay about Haskell languageHaskell Lite - presentation for DevDay about Haskell language
Haskell Lite - presentation for DevDay about Haskell language
 
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)Low-level C/C++ Optimization by Anrew Axenov (Sphinx)
Low-level C/C++ Optimization by Anrew Axenov (Sphinx)
 
Низкоуровневая Оптимизация (Андрей Аксенов)
Низкоуровневая Оптимизация (Андрей Аксенов)Низкоуровневая Оптимизация (Андрей Аксенов)
Низкоуровневая Оптимизация (Андрей Аксенов)
 
Cpp
CppCpp
Cpp
 
BigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: PersonalizationBigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: Personalization
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-Studio
 
Sergii Tsypanov: "Tricky enterprise"
Sergii Tsypanov: "Tricky enterprise"Sergii Tsypanov: "Tricky enterprise"
Sergii Tsypanov: "Tricky enterprise"
 
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
 
Управление памятью в GO
Управление памятью в GOУправление памятью в GO
Управление памятью в GO
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
 
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
 
Анализ количества посетителей на сайте [Считаем уникальные элементы]
Анализ количества посетителей на сайте [Считаем уникальные элементы]Анализ количества посетителей на сайте [Считаем уникальные элементы]
Анализ количества посетителей на сайте [Считаем уникальные элементы]
 
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
 
Тонкости работы трассирующего JIT-компилятора / Антон Солдатов (IPONWEB)
Тонкости работы трассирующего JIT-компилятора / Антон Солдатов (IPONWEB)Тонкости работы трассирующего JIT-компилятора / Антон Солдатов (IPONWEB)
Тонкости работы трассирующего JIT-компилятора / Антон Солдатов (IPONWEB)
 
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
 

Обработка данных в RTB: быстро, дешево и на 98% точно