28
Эффективная кластеризация товарного каталога из 18 млн. товаров для рекомендательного сервиса Александр Сербул Руководитель направления

Александр Сербул —1С-Битрикс — ICBDA 2015

  • Upload
    rusbase

  • View
    1.980

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Александр Сербул —1С-Битрикс — ICBDA 2015

Эффективная кластеризация товарного каталогаиз 18 млн. товаров для рекомендательного

сервиса

Александр СербулРуководитель направления

Page 2: Александр Сербул —1С-Битрикс — ICBDA 2015

Битрикс24 - упрощенно

Page 3: Александр Сербул —1С-Битрикс — ICBDA 2015

Битрикс24 - цифры

• Сотни тысяч баз данных клиентов

• Десятки тысяч активных компаний: от единиц до

тысяч сотрудников в каждой

• Несколько датацентров в AWS. Один - в России.

Page 4: Александр Сербул —1С-Битрикс — ICBDA 2015

Регистрация Хранение

Сервис персональных рекомендаций

~1000 запросов/сек

bitrix.info

Обработка, анализ

Batch процессинг

On-lineпроцессинг

Выдача ключевой информации

analytics.bitrix.info

Page 5: Александр Сербул —1С-Битрикс — ICBDA 2015

Событие

• Кука Пользователя

• Хэш лицензии

• Домен

• ID товара

• Название Товара

• Категории Товара

• ID рекомендации

• ряд других

Просмотр товара

Добавление в корзину

Заказ Оплата Заказа

Сервис персональных рекомендаций

Page 6: Александр Сербул —1С-Битрикс — ICBDA 2015

Amazon DynamoDB

nginx+Lua Amazon Kinesis

~1000 запросов/сек

Буфер

bitrix.info

worker’s cluster

worker (PHP)~100 запросов/секфильтрация

worker (PHP)

worker (PHP)

worker (PHP)

worker (PHP)

worker (PHP)

worker (PHP)

worker (PHP)

Лог событий

Пользователи

Домены

Сервис персональных рекомендаций

Page 7: Александр Сербул —1С-Битрикс — ICBDA 2015

Amazon DynamoDB

Лог событий

Пользователи

Домены

Apache Spark

Сервер (spot)

Amazon S3

Файл данных

Файл данных

Сервер (spot)

Сервер (spot)

Сервер (spot)

…Кластер

рекомендаций

Apache Tomcat

Apache Mahout

«Мозги»

Выдача

anal

ytics

.bitr

ix.in

fo

Сервис персональных рекомендаций

Page 8: Александр Сербул —1С-Битрикс — ICBDA 2015

Сервис персональных рекомендаций

• Десятки тысяч магазинов

• ~1000 событий в секунду

• Коллаборативная фильтрация

• Кластеризованный товарный каталог (миллионы

товаров)

• Java, Apache Spark, Apache Mahout, DymanoDB,

Kinesis

Page 9: Александр Сербул —1С-Битрикс — ICBDA 2015

Технологический roadmap

• Мульти-модальность

• Content-based – рекомендации

• Кластеризация

• Machine learning, deep learning

• Увеличение конверсии

• Эффективность работы с клиентами

• Таргеттинг

Page 10: Александр Сербул —1С-Битрикс — ICBDA 2015

Карл… Карл, я нашел страшный подвох в MapReduce

Не может быть, пап!

Page 11: Александр Сербул —1С-Битрикс — ICBDA 2015

Карл… Карл, я специалист по BigData….

Это очень круто, пап!

Большинство алгоритмов придется изобретать заново! ЗАНОВО!!!

Page 12: Александр Сербул —1С-Битрикс — ICBDA 2015

Алгоритмическая «западня»

• Большинство алгоритмов для

MapReduce нужно изобретать заново

• Новый технологический стек

Page 13: Александр Сербул —1С-Битрикс — ICBDA 2015

4 «воюющих» лагеря БД

• SQL на MapReduce: Hive, Pig, Spark SQL

• SQL на MPP (massive parallel processing):

Impala, Presto, Amazon RedShift, Vertica

• NoSQL: Cassandra, Hbase, Amazon

DynamoDB

• Классика: MySQL, MS SQL, Oracle, …

Page 14: Александр Сербул —1С-Битрикс — ICBDA 2015

«Готовые» решения для кластеризации

• Spark MLlib

(scala/java/python) –

много данных

• scikit-learn.org (python) –

мало данных

• R

Page 15: Александр Сербул —1С-Битрикс — ICBDA 2015

Подходы к кластеризации - просто

• Иерархическая

• K-means

• C-means

• Spectral

• Density-based (DBSCAN)

• Вероятностные

• Для «больших данных»

Page 16: Александр Сербул —1С-Битрикс — ICBDA 2015

Что мы кластеризуем

• 18 млн. названий и кратких описаний

Товаров

• Описание Товара: 2-10 слов

• Bag of words

• Stemming, морфология?

• Kernel hack?

• TF/IDF

• Word2Vec?!

Page 17: Александр Сербул —1С-Битрикс — ICBDA 2015

K-means

• Просто, понятно

• Долго!!!

n = 10 000 000 (товаров)

k = 1 000 000 (кластеров)

d = <1 000 000 (видов слов)

i = 100 (итераций)

Время работы ~ 10^21

Возраст Земли ~ 1,4*10^17 сек

Page 18: Александр Сербул —1С-Битрикс — ICBDA 2015

Apache Mahout

• «Туго» с алгоритмами

• Нет для Spark

• Нужно дописывать свои

Page 19: Александр Сербул —1С-Битрикс — ICBDA 2015

Spark MLLib

• Ура, на кластере!

• Увы, очень медленно

• Падения «по памяти»

• Зависания

• Свой вариант k-means

(«Clustering by Bootstrap

Averaging»)

Page 20: Александр Сербул —1С-Битрикс — ICBDA 2015
Page 21: Александр Сербул —1С-Битрикс — ICBDA 2015

Цитрамон – хорошо помогает от головной боли

Page 22: Александр Сербул —1С-Битрикс — ICBDA 2015

Minhash

Min-wise independent permutations locality sensitive hashing scheme

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

2) Совместима с LSH (следующий слайд)

Pr[ hmin(A) = hmin(B) ] = J(A,B)

Размер сигнатуры: 50-500

simhash

Page 23: Александр Сербул —1С-Битрикс — ICBDA 2015

Text shingling

1) Shingle – «черепица»

2) Устойчивость к вариантам, опечаткам

«Штаны красные махровые в полоску»

{«штан», «таны», «аны », «ны к», «ы кра», «крас», …}

«Красные полосатые штаны»

Page 24: Александр Сербул —1С-Битрикс — ICBDA 2015

Векторизация описания Товара

Текст: «Штаны красные махровые в полоску»

Вектор «bag of words»: [0,0,0,1,0,…0,1,0] – ~ 10000 -

1000000 элементов (kernel hack)

Minhash-сигнатура после shingling:

[1243,823,-324,12312,…] – 100-500 элементов,

совместима с LSH

Page 25: Александр Сербул —1С-Битрикс — ICBDA 2015

Locality-Sensitive Hashing (LSH)

• Вероятностный метод снижения

размерности

• Использовали для minhashed-

векторов

• Banding:b – корзины, r – элементов в корзине.

P{“Векторы совпадут хотя-бы в одной корзине”}:

«Mining of Massive Datasets»: Leskovec, Rajaraman, Ullman (Stanford University)

Page 26: Александр Сербул —1С-Битрикс — ICBDA 2015

Кластеризация каталога

• Apache Spark

• 2-4 часа, 8-12 spot-серверов

• 18 млн. Товаров => 1 млн. кластеров

• Адекватные по смыслу кластера

• Персональные рекомендации - стали в

разы «лучше» (доказали математически)

• DynamoDB – хранение кластроидов

Page 27: Александр Сербул —1С-Битрикс — ICBDA 2015

«Простота — это то, что труднее всего на свете; это крайний

предел опытности и последнее усилие гения»Леонардо да Винчи

Page 28: Александр Сербул —1С-Битрикс — ICBDA 2015

Спасибо за внимание! Вопросы?

Александр Сербул @[email protected]