SlideShare a Scribd company logo
Эффективные
алгоритмы поиска
подобных объектов
для терабайтов данных
Евгений Журин,
data scientist,
Segmento
2
Манхэттенское и евклидово
расстояние
3
Расстояние Джаккарда
А ВА В
U
А ВА U В
4
Look aLike
5
Задача: Look aLike
Вся аудитория,
которую
мы видим
Интересная аудитория,
которую надо найти
example.com
просмотрели >=2
страниц
6
7
У нас было
1. 250 000 000 + профилей
2. 1 000 000 +- площадок
3. 30000 RPS (2.5 млрд. в
день)
8
Что такое для нас профиль?
offline данные
История поведения
в интернете
Контекстная
информация
(где, откуда,
с какого устройства)
9
Как можно представить профиль
kaggle.com westerns.ru
habrahabr.ruguns.ru
10
Движение трафика
11
Чистим данные
1. Выкидываем профили
с недостаточной статистикой
2. И сайты, с которых идет больше
всего и меньше всего трафика
12
MinHash и расстояние
Джаккарда
13
Матричное
представление профилей
hosts/profiles index
kaggle.com 1 1 0 1
habrahabr.ru 2 0 1 0
machinelearning.
ru
3 1 0 1
analyticsvidhya.c
om
4 0 1 0
14
Jaccard = 0 Jaccard = 1
Jaccard = 0
15
Хэш функции
index
kaggle.com 1
machinelearning.ru 3
index
kaggle.co
m
machinelearning.ru Minhash
(index + 1) mod 3 2 1 1
(2*index + 1) mod 3 0 1 0
16
MinHash представление
(x + 1) mod 3 1 0 1
(2x + 1) mod 3 0 0 0
17
Jaccard = 0,5 Jaccard = 1
Jaccard = 0,5
18
Как выбрать количество
хэш функций
0.0 0.02 0.04 0.06 0.08 0.10
200000
400000
600000
800000
1000000
Numberofhashfunctions
Error
Например: мы хотим ошибку не больше, чем 10% ,
для этого нам нужно 100 хэш функций,
а для ошибки 1% процент нам нужно уже 10000 функций.
19
Как выбрать параметры
хэш функций?
a, b — случайные целые числа < max(x)
c — простое число, чуть большее чем max(x), общее для всех
h(x) = (ax + b) mod c
20
Locality Sensitive Hashing
21
Banding
hash1 1 1
hash2 3 3
hash3 1 1
hash4 2 4
band1
band2
22
Этап выделения профилей
для расчета расcтояний
Band 1 Band 2 Band 3 Band 4
целевая аудитория (просмотрел
на example.com >=2 страниц)
Фильтруем
Интересный бэнд
Фильтруем
23
k — ближайших
соседей в пределах
интересного бэнда.
J J
J
J
J
J
J
J J
J
24
1 – (1-s^10)^10
Jaccard similarty of profiles
0.0 0.2 0.4 0.6 0.8 1.0
1.0
0.8
0.6
0.4
0.2
0.0
Probabilityofbecomingacandidate
1 – (1-s^5)^20
Как выбрать количество
бэндов?
25
Но эксперимент никто
не отменял
Долго, дорого и очень хорошо  Быстро, дешево и не очень хорошо 
26
Куда еще смотрим?
27
28
DIMSUM
Dimension Independent Matrix
Square using MapReduce
29
Что у нас есть?
machinelearning.ru habrahabr.ru
1 4
8 1
7 9
Матрица A
размерности MxN, где M >> N и 0 <= a <=1 и
кол-во ненулевых элементов в строке <= L << N
30
Что хотим найти?
Похожесть сайтов на основе
их посещения аудиторией.
Более формально и в более общем виде –
задача расчета матрицы расстояний
между столбами.
31
Зачем?
1) Снижение размерности
2) Нужно в маркетинговых исследованиях
32
Наивно, долго, точно
Dimsum, быстро и почти точно
33
Стэк используемых
технологий:
1.Python
2.Hadoop
3.Luigi
4.Hbase
34
Спасибо !

More Related Content

PDF
Эффективные Алгоритмы Поиска Подобных Объектов Для Терабайтов Данных
SPb_Data_Science
 
ODP
Открытые ГИС: понемногу обо всём
Maxim Dubinin
 
PDF
Big Data aggregation techniques
Valentin Logvinskiy
 
PDF
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
Nikolay Samokhvalov
 
PDF
2014.10.15 блиц-доклад PostgreSQL kNN search
Nikolay Samokhvalov
 
PDF
«Система защиты от парсинга API 2ГИС» — Дмитрий Бархатов, 2ГИС
2ГИС Технологии
 
PDF
Машинное обучение в Яндексе
Alexandra Kaminskaya
 
PDF
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...
2ГИС Технологии
 
Эффективные Алгоритмы Поиска Подобных Объектов Для Терабайтов Данных
SPb_Data_Science
 
Открытые ГИС: понемногу обо всём
Maxim Dubinin
 
Big Data aggregation techniques
Valentin Logvinskiy
 
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
Nikolay Samokhvalov
 
2014.10.15 блиц-доклад PostgreSQL kNN search
Nikolay Samokhvalov
 
«Система защиты от парсинга API 2ГИС» — Дмитрий Бархатов, 2ГИС
2ГИС Технологии
 
Машинное обучение в Яндексе
Alexandra Kaminskaya
 
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...
2ГИС Технологии
 

What's hot (6)

PPTX
Найти иглоку в стоге сена
Alexey Tokar
 
PPT
система эль гамаля
hmyrhik nikita
 
PPTX
обеспечение безопасности программного продукта на различных стадиях жизненног...
hmyrhik nikita
 
PPT
Задача распределения ресурсов ЦОД и алгоритмы ее решения
ARCCN
 
PPTX
Хранилище данных Avito: аналитика для микросервисной архитектуры / Артем Дани...
Ontico
 
PDF
Антон Корзунов «Как разместить тысячи объектов на карте без увеличения нагруз...
Yandex
 
Найти иглоку в стоге сена
Alexey Tokar
 
система эль гамаля
hmyrhik nikita
 
обеспечение безопасности программного продукта на различных стадиях жизненног...
hmyrhik nikita
 
Задача распределения ресурсов ЦОД и алгоритмы ее решения
ARCCN
 
Хранилище данных Avito: аналитика для микросервисной архитектуры / Артем Дани...
Ontico
 
Антон Корзунов «Как разместить тысячи объектов на карте без увеличения нагруз...
Yandex
 
Ad

Viewers also liked (11)

PDF
машинное обучение и анализ данных
Yandex
 
PPTX
Реалистичные стратегии ИТ-компании в кризис / Сергей Рыжиков (1C-Битрикс)
Ontico
 
PDF
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Ontico
 
PDF
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
Ontico
 
PPTX
Trace Lessons Learned H4Dip Stanford 2016
Stanford University
 
PPTX
Aggregate db Lessons Learned H4Dip Stanford 2016
Stanford University
 
PPTX
Peacekeeping Lessons Learned H4Dip Stanford 2016
Stanford University
 
PPTX
Space Evaders Lessons Learned H4Dip Stanford 2016
Stanford University
 
PPTX
Exodus Lessons Learned H4Dip Stanford 2016
Stanford University
 
PPTX
Hacking CT Lessons Learned H4Dip Stanford 2016
Stanford University
 
PPTX
Fatal journeys (Team 621) Lessons Learned H4Dip Stanford 2016
Stanford University
 
машинное обучение и анализ данных
Yandex
 
Реалистичные стратегии ИТ-компании в кризис / Сергей Рыжиков (1C-Битрикс)
Ontico
 
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Ontico
 
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
Ontico
 
Trace Lessons Learned H4Dip Stanford 2016
Stanford University
 
Aggregate db Lessons Learned H4Dip Stanford 2016
Stanford University
 
Peacekeeping Lessons Learned H4Dip Stanford 2016
Stanford University
 
Space Evaders Lessons Learned H4Dip Stanford 2016
Stanford University
 
Exodus Lessons Learned H4Dip Stanford 2016
Stanford University
 
Hacking CT Lessons Learned H4Dip Stanford 2016
Stanford University
 
Fatal journeys (Team 621) Lessons Learned H4Dip Stanford 2016
Stanford University
 
Ad

Similar to Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгений Журин (Segmento) (20)

PPTX
JS Fest 2019/Autumn. Дмитрий Жарков. Blockchainize your SPA or Integrate Java...
JSFestUA
 
PDF
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Yandex
 
PDF
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Yandex
 
PPTX
BigData Week Moscow 2013 - Case: Personalization
Anton Gorokhov
 
PDF
Не бойся, это всего лишь данные... просто их много
Roman Dvornov
 
PDF
Правильная организация клиент-карточного взаимодействия — Антон Корзунов
Yandex
 
PPTX
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
Ontico
 
PPTX
ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачк...
Ontico
 
PPTX
Convert this: peculiarities of cross-platform mobile game development at Vizor
DevGAMM Conference
 
PPTX
«Облачный» сервис интеллектуального анализа данных. графический интерфейс пос...
Анастасия Вязьмина
 
PPTX
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
Ontico
 
PDF
Алексей Захаров "Архитектура Яндекс.Фоток"
Yandex
 
PPTX
Stream API: рекомендации лучших собаководов
tvaleev
 
PDF
Miasm defcon russia 23
DefconRussia
 
PDF
Detecting logged in user's abnormal activity
Arvids Godjuks
 
PDF
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
Омские ИТ-субботники
 
PDF
Xodus: a Database to Store YouTrack Bugs. Maxim Mazin, YouTrack Team Lead
JetBrains Russia
 
PDF
Java осень 2014 занятие 6
Technopark
 
PDF
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Yandex
 
PDF
Андрей Устюжанин - Технологии обработки данных из Большого адронного коллайдера
Yandex
 
JS Fest 2019/Autumn. Дмитрий Жарков. Blockchainize your SPA or Integrate Java...
JSFestUA
 
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Yandex
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Yandex
 
BigData Week Moscow 2013 - Case: Personalization
Anton Gorokhov
 
Не бойся, это всего лишь данные... просто их много
Roman Dvornov
 
Правильная организация клиент-карточного взаимодействия — Антон Корзунов
Yandex
 
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
Ontico
 
ElasticSearch и Heka: как мы учились просеивать слона через сито / Адель Сачк...
Ontico
 
Convert this: peculiarities of cross-platform mobile game development at Vizor
DevGAMM Conference
 
«Облачный» сервис интеллектуального анализа данных. графический интерфейс пос...
Анастасия Вязьмина
 
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
Ontico
 
Алексей Захаров "Архитектура Яндекс.Фоток"
Yandex
 
Stream API: рекомендации лучших собаководов
tvaleev
 
Miasm defcon russia 23
DefconRussia
 
Detecting logged in user's abnormal activity
Arvids Godjuks
 
2013-02-02 03 Голушко. Полнотекстовый поиск с Elasticsearch
Омские ИТ-субботники
 
Xodus: a Database to Store YouTrack Bugs. Maxim Mazin, YouTrack Team Lead
JetBrains Russia
 
Java осень 2014 занятие 6
Technopark
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Yandex
 
Андрей Устюжанин - Технологии обработки данных из Большого адронного коллайдера
Yandex
 

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico
 
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico
 
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico
 
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico
 
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico
 
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico
 
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico
 
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico
 
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico
 
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico
 
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico
 
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico
 
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico
 
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 

Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгений Журин (Segmento)