Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени на базе Amazon Kinesis/Lucene / Александр Сербул (1С-Битрикс)
В докладе мы поделимся опытом создания content-based рекомендательной системы для электронной коммерции, работающей на семантическом ядре рунета (десятки миллионов профилей). Расскажем, как организовали централизованный сбор и обработку информации о посещении пользователями более 100 000 сайтов различной направленности на основе Amazon Kinesis. Поделимся опытом многопоточной онлайн-индексации потоков данных в Lucene. Продемонстрируем используемые базовые алгоритмы ранжирования и формирования персональных рекомендаций для посетителей более 20 000 интернет-магазинов.
Поговорим о плюсах и минусах лямбда-архитектур и обоснуем выбранное нами архитектурное решение. Отдельно остановимся на тонкостях технической реализации многопоточных алгоритмов и особенностях обеспечения реального времени - поступившая информация о действиях посетителя практически мгновенно учитывается рекомендательным движком, обеспечивая максимальную конверсию.
Порядок для скорости. Система структурирования фронтендовой части веб-приложе...
Similar to Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени на базе Amazon Kinesis/Lucene / Александр Сербул (1С-Битрикс)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)Pavel Tsukanov
Similar to Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени на базе Amazon Kinesis/Lucene / Александр Сербул (1С-Битрикс) (20)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени на базе Amazon Kinesis/Lucene / Александр Сербул (1С-Битрикс)
1. Семантическое ядро рунета - высоконагруженная
сontent-based рекомендательная система
реального времени на базе Amazon Kinesis/Lucene
Александр Сербул
Руководитель направления
3. Карл… Карл, я специалист по
BigData….
Это очень круто,
пап!
Но я до сих пор не
понимаю, как работает
обратный индекс и
вздрагиваю от термина
«реляционная алгебра»
4. О чем поговорим
1. Типы и алгоритмы рекомендательных систем –
кратко
2. Как мы собираем данные о действиях клиентов
3. Архитектура нашей рекомендательной системы
4. Статистика использования
5. Советы как писать свои рекомендательные системы
4 / 37
5. Типы и алгоритмы рекомендательных
систем
1. Релевантный контент – «угадываем мысли»
2. Релевантный поиск
3. Предлагаем то, что клиенту нужно как раз
сейчас
4. Увеличение лояльности, конверсии
5 / 37
7. Объем продаж товаров
1. Best-sellers
2. Топ-продаж…
3. С этим товаром покупают
4. Персональные рекомендации
7 / 37«Mining of Massive Datasets», 9.1.2: Leskovec, Rajaraman, Ullman (Stanford University)
8. Коллаборативная фильтрация
1. Предложи Товары/Услуги, которые есть
у твоих друзей (User-User)
2. Предложи к твоим Товарам другие
связанные с ними Товары (Item-Item):
«сухарики к пиву»
8 / 37
9. Возможности коллаборативной фильтрации
1. Персональная рекомендация (рекомендуем посмотреть
эти Товары)
2. С этим Товаром покупают/смотрят/… (глобальная)
3. Топ Товаров на сайте
Apache Spark MLlib (als), Apache Mahout (Taste) + неделька
Объем данных
Объем модели, требования к «железу»
9 / 37
10. Content-based рекомендации
1. Купил пластиковые окна – теперь их предлагают на
всех сайтах и смартфоне.
2. Купил Toyota, ищу шины, предлагают шины к Toyota
- Поисковый «движок»: Sphinx, Lucene (Solr)
- «Обвязка» для данных
- Хранение профиля Клиента
- Реализация: неделька. Риски – объем данных, языки.
10 / 37
11. Тюнинг рекомендательных систем
1. Рекомендовать постоянно «возобновляемые»
Товары (молоко, носки, …)
2. Рекомендовать фильм/телевизор – один раз до
покупки
3. Учет пола, возраста, размера, …
11 / 37
12. Как собирать данные от клиентов?
1.Как собирать?
2.Куда собирать?
3.Как обрабатывать?
4.Потоковые алгоритмы...
12 / 37
13. Технологии - Apache Kafka
http://kafka.apache.org/
1. “LinkedIn”
2. Не совсем очередь
3. Совсем не очередь!
4. Клиентское приложение
«держит» курсор потока
5. Scala!
13 / 37
20. Инвертированный (обратный) индекс
20 / 37Christopher D. Manning, Prabhakar Raghavan and Hinrich Schutze, "Introduction to Information Retrieval", Cambridge
University Press. 2008.
21. IR, NLP
21 / 37Christopher D. Manning, Prabhakar Raghavan and Hinrich Schutze, "Introduction to Information Retrieval", Cambridge
University Press. 2008.
25. Карл… Карл, я специалист по
BigData….
Это очень круто,
пап!
Но я так ничего
серьезного и не
написал. НИ-ЧЕ-ГО...
26. Кофе или … марихуана?
1. Много хороших программистов — C++
2. Много тестировщиков — C++
3. Много свободного времени на разработку — C++
4. Много сводобных ночей на отладку - C++
5. Предметная область формализована — C++
6. Требования не меняются - C++
Иначе: java ;-)
26 / 37
28. Apache Lucene: +/-
1. (-) Нет нормальной поддержки русского языка
2. (-) Нет русской морфологии
3. (-) Документация иногда оставляет желать лучшего
4. (-) Нет решения для 100% онлайн индексации
5. (+) Компактный индекс (гигабайты)
6. (+) Лаконичное API
7. (+) Транзакционность
8. (+) Thread-safety
28 / 37
32. Цифры
1.“Потребители”: десятки тысяч интернет-магазинов
2.“Поставщики”: все сайты на Битрикс, больше 100к
3.Тэги Профиля: название страницы, h1
4.Индекс Товаров: название, разделы
5.Индекс: гигабайты, сотня файлов в папке
32 / 37