YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

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

Эффективные

алгоритмы поиска

подобных объектов

для терабайтов данных

Евгений Журин,

data scientist,

Segmento

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

2

Манхэттенское и евклидово

расстояние

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

3

Расстояние Джаккарда

А ВА В

U

А ВА U В

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

4

Look aLike

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

5

Задача: Look aLike

Вся аудитория,

которую

мы видим

Интересная аудитория,

которую надо найти

example.com

просмотрели >=2

страниц

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

6

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

7

У нас было

1. 250 000 000 + профилей

2. 1 000 000 +- площадок

3. 30000 RPS (2.5 млрд. в

день)

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

8

Что такое для нас профиль?

offline данные

История поведения

в интернете

Контекстная

информация

(где, откуда,

с какого устройства)

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

9

Как можно представить профиль

kaggle.com westerns.ru

habrahabr.ruguns.ru

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

10

Движение трафика

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

11

Чистим данные

1. Выкидываем профили

с недостаточной статистикой

2. И сайты, с которых идет больше

всего и меньше всего трафика

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

12

MinHash и расстояние

Джаккарда

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

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

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

14

Jaccard = 0 Jaccard = 1

Jaccard = 0

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

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

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

16

MinHash представление

(x + 1) mod 3 1 0 1

(2x + 1) mod 3 0 0 0

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

17

Jaccard = 0,5 Jaccard = 1

Jaccard = 0,5

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

18

Как выбрать количество

хэш функций

0.0 0.02 0.04 0.06 0.08 0.10

200000

400000

600000

800000

1000000

Nu

mb

er

of

ha

sh f

un

ctio

ns

Error

Например: мы хотим ошибку не больше, чем 10% ,

для этого нам нужно 100 хэш функций,

а для ошибки 1% процент нам нужно уже 10000 функций.

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

19

Как выбрать параметры

хэш функций?

a, b — случайные целые числа < max(x)

c — простое число, чуть большее чем max(x), общее для всех

h(x) = (ax + b) mod c

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

20

Locality Sensitive Hashing

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

21

Banding

hash1 1 1

hash2 3 3

hash3 1 1

hash4 2 4

band1

band2

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

22

Этап выделения профилей

для расчета расcтояний

Band 1 Band 2 Band 3 Band 4

целевая аудитория (просмотрел

на example.com >=2 страниц)

ФильтруемИнтересный бэнд

Фильтруем

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

23

k — ближайших

соседей в пределах

интересного бэнда.

J J

JJ

J

J

J

J J

J

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

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

Pro

ba

bil

ity o

f b

eco

min

g a

ca

nd

ida

te

1 – (1-s^5)^20

Как выбрать количество

бэндов?

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

25

Но эксперимент никто

не отменял

Долго, дорого и очень хорошо Быстро, дешево и не очень хорошо

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

26

Куда еще смотрим?

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

27

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

28

DIMSUM

Dimension Independent Matrix

Square using MapReduce

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

29

Что у нас есть?machinelearning.ru habrahabr.ru

1 4

8 1

7 9

Матрица A

размерности MxN, где M >> N и 0 <= a <=1 и

кол-во ненулевых элементов в строке <= L << N

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

30

Что хотим найти?

Похожесть сайтов на основе

их посещения аудиторией.

Более формально и в более общем виде –

задача расчета матрицы расстояний

между столбами.

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

31

Зачем?

1) Снижение размерности

2) Нужно в маркетинговых исследованиях

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

32

Наивно, долго, точно

Dimsum, быстро и почти точно

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

33

Стэк используемых

технологий:

1.Python

2.Hadoop

3.Luigi

4.Hbase

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

34

Спасибо !


Related Documents