SlideShare a Scribd company logo
Эффективная кластеризация товарного каталога
из 18 млн. товаров для рекомендательного
сервиса
Александр Сербул
Руководитель направления
Битрикс24 - упрощенно
Битрикс24 - цифры
• Сотни тысяч баз данных клиентов
• Десятки тысяч активных компаний: от единиц до
тысяч сотрудников в каждой
• Несколько датацентров в AWS. Один - в России.
Регистрация Хранение
Сервис персональных рекомендаций
~1000 запросов/сек
bitrix.info
Обработка,
анализ
Batch
процессинг
On-line
процессинг
Выдача ключевой
информации
analytics.bitrix.info
Событие
• Кука Пользователя
• Хэш лицензии
• Домен
• ID товара
• Название Товара
• Категории Товара
• ID рекомендации
• ряд других
Просмотр
товара
Добавление
в корзину
Заказ Оплата
Заказа
Сервис персональных рекомендаций
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)
Лог событий
Пользователи
Домены
Сервис персональных рекомендаций
Amazon
DynamoDB
Лог событий
Пользователи
Домены
Apache Spark
Сервер (spot)
Amazon S3
Файл данных
Файл данных
Сервер (spot)
Сервер (spot)
Сервер (spot)
…
Кластер
рекомендаций
Apache
Tomcat
Apache
Mahout
«Мозги»
Выдача
analytics.bitrix.info
Сервис персональных рекомендаций
Сервис персональных рекомендаций
• Десятки тысяч магазинов
• ~1000 событий в секунду
• Коллаборативная фильтрация
• Кластеризованный товарный каталог (миллионы
товаров)
• Java, Apache Spark, Apache Mahout, DymanoDB,
Kinesis
Технологический roadmap
• Мульти-модальность
• Content-based – рекомендации
• Кластеризация
• Machine learning, deep learning
• Увеличение конверсии
• Эффективность работы с клиентами
• Таргеттинг
Карл…
Карл, я нашел
страшный подвох в
MapReduce
Не может быть,
пап!
Карл… Карл, я специалист по
BigData….
Это очень круто,
пап!
Большинство алгоритмов
придется изобретать
заново! ЗАНОВО!!!
Алгоритмическая «западня»
• Большинство алгоритмов для
MapReduce нужно изобретать заново
• Новый технологический стек
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, …
«Готовые» решения для кластеризации
• Spark MLlib
(scala/java/python) –
много данных
• scikit-learn.org (python) –
мало данных
• R
Подходы к кластеризации - просто
• Иерархическая
• K-means
• C-means
• Spectral
• Density-based (DBSCAN)
• Вероятностные
• Для «больших данных»
Что мы кластеризуем
• 18 млн. названий и кратких описаний
Товаров
• Описание Товара: 2-10 слов
• Bag of words
• Stemming, морфология?
• Kernel hack?
• TF/IDF
• Word2Vec?!
K-means
• Просто, понятно
• Долго!!!
n = 10 000 000 (товаров)
k = 1 000 000 (кластеров)
d = <1 000 000 (видов слов)
i = 100 (итераций)
Время работы ~ 10^21
Возраст Земли ~ 1,4*10^17 сек
Apache Mahout
• «Туго» с алгоритмами
• Нет для Spark
• Нужно дописывать свои
Spark MLLib
• Ура, на кластере!
• Увы, очень медленно
• Падения «по памяти»
• Зависания
• Свой вариант k-means
(«Clustering by Bootstrap
Averaging»)
Александр Сербул —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
Text shingling
1) Shingle – «черепица»
2) Устойчивость к вариантам, опечаткам
«Штаны красные махровые в полоску»
{«штан», «таны», «аны », «ны к», «ы кра», «крас», …}
«Красные полосатые штаны»
Векторизация описания Товара
Текст: «Штаны красные махровые в полоску»
Вектор «bag of words»: [0,0,0,1,0,…0,1,0] – ~ 10000 -
1000000 элементов (kernel hack)
Minhash-сигнатура после shingling:
[1243,823,-324,12312,…] – 100-500 элементов,
совместима с LSH
Locality-Sensitive Hashing (LSH)
• Вероятностный метод снижения
размерности
• Использовали для minhashed-
векторов
• Banding:
b – корзины, r – элементов в корзине.
P{“Векторы совпадут хотя-бы в одной корзине”}:
«Mining of Massive Datasets»: Leskovec, Rajaraman, Ullman (Stanford University)
Кластеризация каталога
• Apache Spark
• 2-4 часа, 8-12 spot-серверов
• 18 млн. Товаров => 1 млн. кластеров
• Адекватные по смыслу кластера
• Персональные рекомендации - стали в
разы «лучше» (доказали математически)
• DynamoDB – хранение кластроидов
«Простота — это то, что труднее всего на свете; это крайний
предел опытности и последнее усилие гения»
Леонардо да Винчи
Спасибо за внимание!
Вопросы?
Александр Сербул
@AlexSerbul
serbul@1c-bitrix.ru

More Related Content

PDF
Александр Киров — Acronis — ICBDA 2015
PPTX
Андрей Созыкин — ИММ УрО РАН — ICDBA2016
PDF
Построение системы аналитики
PDF
Василий Суханов — SAP — ICBDA 2015
PDF
Где сегодня использовать ElasticSearch
PDF
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
PDF
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
PPTX
Azure for retails
Александр Киров — Acronis — ICBDA 2015
Андрей Созыкин — ИММ УрО РАН — ICDBA2016
Построение системы аналитики
Василий Суханов — SAP — ICBDA 2015
Где сегодня использовать ElasticSearch
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
Azure for retails

What's hot (18)

PDF
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
PDF
Александр Соловьёв, Griddynamics.com
PPTX
Azure for IT pro - TechDays Armenia
PDF
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
PPTX
Azure
PDF
High load++2016.highlights (dropbox+clickhouse)
PDF
Modern apps Windows Azure
PDF
TCO аренда облачной IT инфраструктуры Онланты vs покупка серверов
PDF
Реактивный кэш в Android, Андрей Мельников, Rambler&Co, Москва
PDF
кри 2014 elastic search рациональный подход к созданию собственной системы а...
PPTX
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
PDF
Автоматизация анализа логов на базе Elasticsearch
PDF
Аналитика над петабайтами в реальном времени
PDF
Clickhouse
PDF
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
PDF
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
PDF
Мощнее или умнее? Возможности оптимизации ИТ-инфраструктуры для сейсмики
PDF
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
Александр Соловьёв, Griddynamics.com
Azure for IT pro - TechDays Armenia
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
Azure
High load++2016.highlights (dropbox+clickhouse)
Modern apps Windows Azure
TCO аренда облачной IT инфраструктуры Онланты vs покупка серверов
Реактивный кэш в Android, Андрей Мельников, Rambler&Co, Москва
кри 2014 elastic search рациональный подход к созданию собственной системы а...
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
Автоматизация анализа логов на базе Elasticsearch
Аналитика над петабайтами в реальном времени
Clickhouse
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Мощнее или умнее? Возможности оптимизации ИТ-инфраструктуры для сейсмики
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Ad

Viewers also liked (20)

PPTX
Антон Попович — Segmento —ICBDA 2015
PDF
Владислав Флакс — OWOX — IСBDA 2015
PDF
Евгений Смирнов — Numbuster — ICBDA 2015
PDF
Артем Плешаков — Intency DSP — ICBDA 2015
PDF
Евгений Власов — CallTouch — ICBDA 2015
PDF
Ксения Ачкасова — TNS Россия — ICBDA 2015
PDF
Антон Бут — Auditorius — ICBDA 2015
PDF
Михаил Кечинов — REES46 — ICBDA 2015
PDF
Кирилл Чистов — Data-Centric Alliance — ICBDA 2015
PDF
Александр Фонарев — Rubbles — ICBDA 2015
PPTX
Сергей Кашпоров — Frank Research Group — ICBDA 2015
PPTX
Тимур Кузеев — Meta System — ICBDA 2015
PPTX
Александр Емешев — Tinkoff — ICBDA 2015
PPTX
Александр Мигаловский — ГНИВЦ ФНС России — ICBDA 2015
PPTX
Николай Птицын — Synesis — ICBDA 2015
PDF
Роман Постников — «Мегафон» — ICBDA 2015
PDF
Сергей Чернов — Yandex Data Factory — ICBDA 2015
PDF
ETL со Spark
PDF
FareBor Presentation
PDF
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Антон Попович — Segmento —ICBDA 2015
Владислав Флакс — OWOX — IСBDA 2015
Евгений Смирнов — Numbuster — ICBDA 2015
Артем Плешаков — Intency DSP — ICBDA 2015
Евгений Власов — CallTouch — ICBDA 2015
Ксения Ачкасова — TNS Россия — ICBDA 2015
Антон Бут — Auditorius — ICBDA 2015
Михаил Кечинов — REES46 — ICBDA 2015
Кирилл Чистов — Data-Centric Alliance — ICBDA 2015
Александр Фонарев — Rubbles — ICBDA 2015
Сергей Кашпоров — Frank Research Group — ICBDA 2015
Тимур Кузеев — Meta System — ICBDA 2015
Александр Емешев — Tinkoff — ICBDA 2015
Александр Мигаловский — ГНИВЦ ФНС России — ICBDA 2015
Николай Птицын — Synesis — ICBDA 2015
Роман Постников — «Мегафон» — ICBDA 2015
Сергей Чернов — Yandex Data Factory — ICBDA 2015
ETL со Spark
FareBor Presentation
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Ad

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

PDF
"Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и...
PDF
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
PDF
Машинное обучение в электронной коммерции - практика использования и подводны...
PDF
Как мы храним 75 млн пользователей (Денис Бирюков)
PDF
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
PDF
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
ODP
Семантическое ядро рунета
PPTX
Александр Сербул – Разработка и эксплуатация облачных сервисов Битрикс изнутри
PDF
Обзор перспективных баз данных для highload / Юрий Насретдинов
PDF
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
PDF
Purely practical data structures
PDF
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
PPTX
Cassandra:Курс молодого бойца
PDF
Юрий Насретдинов, Badoo
PPTX
Developing highload servers with Java
PPTX
Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...
PDF
Нереляционный SQL
PDF
Нереляционный SQL / Андрей Николаенко (IBS)
PDF
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
PDF
Анатомия веб сервиса (HighLoad-2014)
"Облачный сервис персональных рекомендаций для 20 000 магазинов — алгоритмы и...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
Машинное обучение в электронной коммерции - практика использования и подводны...
Как мы храним 75 млн пользователей (Денис Бирюков)
Александр Сербул, 1С-Битрикс — Облачный сервис персональных рекомендаций для ...
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Семантическое ядро рунета
Александр Сербул – Разработка и эксплуатация облачных сервисов Битрикс изнутри
Обзор перспективных баз данных для highload / Юрий Насретдинов
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Purely practical data structures
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
Cassandra:Курс молодого бойца
Юрий Насретдинов, Badoo
Developing highload servers with Java
Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...
Нереляционный SQL
Нереляционный SQL / Андрей Николаенко (IBS)
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
Анатомия веб сервиса (HighLoad-2014)

More from rusbase (20)

PDF
Робоэдвайзинг
PPTX
Как чат-боты меняют банковское обслуживание
PDF
Как удаленная идентификация повлияет на бизнес модели в финансовой сфере
PDF
Как социальные сети влияют на скоринг
PDF
Искусственный интеллект в кредитном скоринге
PDF
P2P кредитование и народное поручительство
PPTX
Francis Bakos, Vitality - FinTech Russia
PDF
Руслан Юсуфов, Страхование от кибер-атак - FinTech Russia
PDF
Алексей Краснопольский, Онлайн-кассы - FinTech Russia
PPTX
Иван Беров, Digital Identity - FinTech Russia
PDF
Алексей Катрич, IoT в InsurTech - FinTech Russia
PDF
Алексей Архипов, Мастерчейн - FinTech Russia
PPTX
Максим Григорьев, Удаленная идентификация - FinTech Russia
PDF
Александр Кузьмин, PSD2 - FinTech Russia
PDF
Алексей Благирев, "Открытие" — FinTech Russia 2017
PPTX
Ханнес Чопра (Hannes Chopra) - FinTech Russia 2017
PDF
Владислав Лисицкий — Rubbles — ICBDA2016
PPTX
Александр Яшкин – FANUC Russia – ICBDA2016
PDF
Евгений Быков – Телум – ICBDA2016
PDF
Сергей Лоншаков — проект "Дрон сотрудник" — ICBDA2016
Робоэдвайзинг
Как чат-боты меняют банковское обслуживание
Как удаленная идентификация повлияет на бизнес модели в финансовой сфере
Как социальные сети влияют на скоринг
Искусственный интеллект в кредитном скоринге
P2P кредитование и народное поручительство
Francis Bakos, Vitality - FinTech Russia
Руслан Юсуфов, Страхование от кибер-атак - FinTech Russia
Алексей Краснопольский, Онлайн-кассы - FinTech Russia
Иван Беров, Digital Identity - FinTech Russia
Алексей Катрич, IoT в InsurTech - FinTech Russia
Алексей Архипов, Мастерчейн - FinTech Russia
Максим Григорьев, Удаленная идентификация - FinTech Russia
Александр Кузьмин, PSD2 - FinTech Russia
Алексей Благирев, "Открытие" — FinTech Russia 2017
Ханнес Чопра (Hannes Chopra) - FinTech Russia 2017
Владислав Лисицкий — Rubbles — ICBDA2016
Александр Яшкин – FANUC Russia – ICBDA2016
Евгений Быков – Телум – ICBDA2016
Сергей Лоншаков — проект "Дрон сотрудник" — ICBDA2016

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

  • 1. Эффективная кластеризация товарного каталога из 18 млн. товаров для рекомендательного сервиса Александр Сербул Руководитель направления
  • 3. Битрикс24 - цифры • Сотни тысяч баз данных клиентов • Десятки тысяч активных компаний: от единиц до тысяч сотрудников в каждой • Несколько датацентров в AWS. Один - в России.
  • 4. Регистрация Хранение Сервис персональных рекомендаций ~1000 запросов/сек bitrix.info Обработка, анализ Batch процессинг On-line процессинг Выдача ключевой информации analytics.bitrix.info
  • 5. Событие • Кука Пользователя • Хэш лицензии • Домен • ID товара • Название Товара • Категории Товара • ID рекомендации • ряд других Просмотр товара Добавление в корзину Заказ Оплата Заказа Сервис персональных рекомендаций
  • 6. 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) Лог событий Пользователи Домены Сервис персональных рекомендаций
  • 7. Amazon DynamoDB Лог событий Пользователи Домены Apache Spark Сервер (spot) Amazon S3 Файл данных Файл данных Сервер (spot) Сервер (spot) Сервер (spot) … Кластер рекомендаций Apache Tomcat Apache Mahout «Мозги» Выдача analytics.bitrix.info Сервис персональных рекомендаций
  • 8. Сервис персональных рекомендаций • Десятки тысяч магазинов • ~1000 событий в секунду • Коллаборативная фильтрация • Кластеризованный товарный каталог (миллионы товаров) • Java, Apache Spark, Apache Mahout, DymanoDB, Kinesis
  • 9. Технологический roadmap • Мульти-модальность • Content-based – рекомендации • Кластеризация • Machine learning, deep learning • Увеличение конверсии • Эффективность работы с клиентами • Таргеттинг
  • 10. Карл… Карл, я нашел страшный подвох в MapReduce Не может быть, пап!
  • 11. Карл… Карл, я специалист по BigData…. Это очень круто, пап! Большинство алгоритмов придется изобретать заново! ЗАНОВО!!!
  • 12. Алгоритмическая «западня» • Большинство алгоритмов для MapReduce нужно изобретать заново • Новый технологический стек
  • 13. 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, …
  • 14. «Готовые» решения для кластеризации • Spark MLlib (scala/java/python) – много данных • scikit-learn.org (python) – мало данных • R
  • 15. Подходы к кластеризации - просто • Иерархическая • K-means • C-means • Spectral • Density-based (DBSCAN) • Вероятностные • Для «больших данных»
  • 16. Что мы кластеризуем • 18 млн. названий и кратких описаний Товаров • Описание Товара: 2-10 слов • Bag of words • Stemming, морфология? • Kernel hack? • TF/IDF • Word2Vec?!
  • 17. K-means • Просто, понятно • Долго!!! n = 10 000 000 (товаров) k = 1 000 000 (кластеров) d = <1 000 000 (видов слов) i = 100 (итераций) Время работы ~ 10^21 Возраст Земли ~ 1,4*10^17 сек
  • 18. Apache Mahout • «Туго» с алгоритмами • Нет для Spark • Нужно дописывать свои
  • 19. Spark MLLib • Ура, на кластере! • Увы, очень медленно • Падения «по памяти» • Зависания • Свой вариант k-means («Clustering by Bootstrap Averaging»)
  • 21. Цитрамон – хорошо помогает от головной боли
  • 22. Minhash Min-wise independent permutations locality sensitive hashing scheme 1) Снижаем размерность 2) Совместима с LSH (следующий слайд) Pr[ hmin(A) = hmin(B) ] = J(A,B) Размер сигнатуры: 50-500 simhash
  • 23. Text shingling 1) Shingle – «черепица» 2) Устойчивость к вариантам, опечаткам «Штаны красные махровые в полоску» {«штан», «таны», «аны », «ны к», «ы кра», «крас», …} «Красные полосатые штаны»
  • 24. Векторизация описания Товара Текст: «Штаны красные махровые в полоску» Вектор «bag of words»: [0,0,0,1,0,…0,1,0] – ~ 10000 - 1000000 элементов (kernel hack) Minhash-сигнатура после shingling: [1243,823,-324,12312,…] – 100-500 элементов, совместима с LSH
  • 25. Locality-Sensitive Hashing (LSH) • Вероятностный метод снижения размерности • Использовали для minhashed- векторов • Banding: b – корзины, r – элементов в корзине. P{“Векторы совпадут хотя-бы в одной корзине”}: «Mining of Massive Datasets»: Leskovec, Rajaraman, Ullman (Stanford University)
  • 26. Кластеризация каталога • Apache Spark • 2-4 часа, 8-12 spot-серверов • 18 млн. Товаров => 1 млн. кластеров • Адекватные по смыслу кластера • Персональные рекомендации - стали в разы «лучше» (доказали математически) • DynamoDB – хранение кластроидов
  • 27. «Простота — это то, что труднее всего на свете; это крайний предел опытности и последнее усилие гения» Леонардо да Винчи
  • 28. Спасибо за внимание! Вопросы? Александр Сербул @AlexSerbul serbul@1c-bitrix.ru