Данные, оставляемые нами в Сети, становятся «пищей» для самых различных сервисов, и в первую очередь для решений цифрового маркетинга. Именно они позволяют бизнесу узнать о желаниях потребителя раньше его самого и приносят интернет-магазинам дополнительные продажи. Ярким представителем таких систем является сервис персонализации электронной коммерции, разработанный компанией Retail Rocket. Эту систему мультиканальной персонализации используют более тысячи интернет-магазинов от Европы до Южной Америки.
Retail Rocket выявляет потребности посетителя магазина с помощью анализа его поведения и товарной матрицы ретейлера. Для формирования персональных рекомендаций используются контентная и коллаборативная фильтрация, предсказательные модели на основе машинного обучения и цепей Маркова, байесовская статистика, а также алгоритмы гибридной персонализации в реальном времени. Как развивается эта рекомендательная система и с какими трудностями сталкивается бизнес, основанный на больших данных, рассказал Роман Зыков, Chief Data Scientist компании Retail Rocket и претендент на премию CDO Award 2020.
— С чего началось создание рекомендательной системы?
Мне просто было интересно. Я занимался ее разработкой в порядке хобби еще c 2004 года, работая в Ozon.ru и Wikimart.ru. Важную роль сыграли личные встречи с Андреасом Вейгендом, одним из создателей рекомендательной системы Amazon, ДиДжей Патилом, Chief Data Scientist Белого дома при Бараке Обаме, а также с Эриком Колсоном, в ту пору директором по алгоритмам Netflix. Общение с ними произвело на меня сильное впечатление, стало понятно, как развиваться, чтобы получить не собранное «на коленке» решение, а технологию «как в лучших домах» Калифорнии. Потом я присоединился к Николаю Хлебинскому и Андрею Чижу, которые пытались построить аналогичный сервис, и хобби превратилось в бизнес.
— Какова ваша роль в компании сегодня?
Акционер, директор по аналитике. Также по-прежнему занимаюсь разработкой в качестве руководителя небольшого научно-инженерного подразделения из трех человек. Мы соединяем науку с инженерией и бизнесом. Поскольку понятие data scientist несколько размытое, я бы назвал себя директором по алгоритмам, но и данными я тоже занимаюсь — администрирую огромный пласт информации, который у нас есть.
— Что представляет собой ваш продукт и для чего он предназначен?
У интернет-магазина, как правило, очень большой ассортимент — иногда сотни тысяч наименований товаров, которые надо как-то продвигать. В свою очередь, интернет-пользователь что-то ищет. Надо эти интересы сложить и быстро вытащить из каталога то, что нужно потребителю.
Система мультиканальной персонализации — комплекс алгоритмов больших данных, результат работы которых выдается пользователям в любых каналах коммуникации с клиентом. Информация о поведении пользователей собирается в нашем облаке и из него же отправляется клиенту в форме товарных рекомендаций или в виде других продуктов, чтобы показывать их на сайте или доставлять покупателям по каналам коммуникации: сайт, электронная почта, SMS, push-уведомления и т. д.
— Какие данные используете и какие ресурсы задействуете для их обработки?
Мы собираем и обрабатываем данные о поведении пользователей на сайтах (логи), а также каталоги интернет-магазинов, которые мы обслуживаем. Это настоящие большие данные — петабайты информации. За сутки системой «переваривается» больше ста миллионов приходящих извне событий. Для этого мы построили аналитический вычислительный кластер из 140 серверов. Стараемся минимизировать затраты на техническое обслуживание, оптимизируя вычислительные задачи.
Программы пишем на функциональном языке Scala, который, в отличие от широко распространенного Python, мало кто использует. Из-за этого, с одной стороны, возникают очень высокие требования к профессионализму программистов, но с другой — система получается инженерно продуманной и устойчивой.
— Специалистов по Scala ищете на рынке?
Нет. Пробовали, но это нереально сложно. Я освоил Scala сам, и сотрудники тоже учатся самостоятельно, для этого разработана внутренняя программа обучения. Программисту на это требуется около полугода.
— Значит, приходится работать над их удержанием?
У нас довольно интересная работа. Мы очень сильно отличаемся от других компаний в плане инженерной составляющей алгоритмов, их тестирования и доставки клиенту. К примеру, когда пишется код на Scala, компилятор сообщает, где примерно совершена ошибка. Плюс лаконичность языка и инженерные практики, которым нас научила инженерная команда. Например, мы очень сильно дробим задачи, а чтобы уточнить их трудоемкость, беремся за карты Planning Poker. Для исследователя данных это следующий уровень — работа инженера по машинному обучению.
Кроме того, Retail Rocket — это площадка для развития, где каждый сотрудник может взяться за стратегические задачи и претендовать на позицию управленца через прозрачно выстроенную систему планов развития и конкурсов. В прошлом году у нас кардинально изменилась оргструктура: появился своего рода корпоративный университет, кующий управленцев. Через него прошло немало сотрудников, которые стали менеджерами.
— Используете ли методы глубинного обучения?
В некоторых задачах анализа текстов (описаний товаров, каталога, характеристик) используем. Глубокая нейронная сеть помогает сделать рекомендации лучше. Но обычно сложные методы стараемся не применять. Потому что, запуская в продуктивную эксплуатацию систему для тысяч клиентов, приходится помнить о стоимости вычислений. Сложные алгоритмы увеличивают время вычислений и нагрузку на сервер, не давая соответствующего эффекта.
Мы постоянно анализируем научные статьи по рекомендательным системам, пишем по ним алгоритмы и тестируем на небольшой выборке магазинов. Для этого выстроен специальный процесс. Но крайне редко видим, чтобы суперсложные методы давали прибыль при A/B-тестах на реальных продажах.
— Как функционирует система? Из каких технологических компонентов она построена?
Все технологические решения обработки больших данных — Open Source. Мы за этот софт не платим.
У нас есть скрипт, работающий в браузерах на стороне заказчиков, которые передают нам данные о поведении своих покупателей. Мы их собираем, и через систему Apache Kafka, которая используется как транспорт, эти данные поступают на серверы Hadoop в аналитическую среду Apache Spark, где их обрабатывают алгоритмы, написанные на Scala. После этого переработанная информация заливается в базы данных Redis и MongoDB. Далее с ней работают системы, задача которых — выдать статичные рекомендации или персонализировать выдачу.
Для технической поддержки, исследований и быстрой аналитики используем также ClickHouse от «Яндекса», так как Spark и Hadoop довольно медленные для такого рода задач.
— То есть какие-то задачи решаются в реальном времени?
Да, персональные рекомендации, которые команда, обслуживающая фронтэнд, реализует на платформе .NET и распределенных базах данных. Здесь основные алгоритмы (товарной сегментации аудитории и др.) склеиваем с персонализацией и получаем алгоритмы персональных рекомендаций, работающие онлайн.
— С какими трудностями пришлось столкнуться при создании технологии?
Могу назвать трудности с масштабированием и с тем, что клиенты часто недооценивают сложность этой сферы, всех ее нюансов. Кроме того, прямой эффект от товарных рекомендаций очень сложно подсчитать.
Еще одна проблема — несоответствие научных статей об эффективности рекомендательных алгоритмов реальной жизни. У глубинного обучения, нейронных сетей есть удачные сферы применения — звук, изображение, текст. В таких областях, как рекомендательные системы, их эффективность хромает. Мы создавали такие поведенческие рекомендательные системы, но не увидели прибыли на реальных A/B-тестах.
— Но если опыт невоспроизводим, наука ли это?
Это бич для науки о рекомендательных системах.
— Каких результатов позволяет добиться ваше решение?
Retail Rocket помогает интернет-магазинам вывести маркетинг на новый уровень, повысив их продажи через внедрение технологии персонализации. Подстройка сайта и email-рассылок под интересы пользователя осуществляется в реальном времени. Таким образом, это поднимает уровень конверсии и показатель удержания пользователей, а также увеличивает размер среднего чека и количество товаров в заказе.
Степень увеличения конверсии зависит от специфики магазина, от того, как настроены и размещены блоки рекомендаций на сайте. Специальная команда следит за тем, чтобы наши клиенты всегда были в плюсе — получали больше, чем они вложили в систему.
Но для меня более важна другая метрика: сколько человек воспользовались нашими рекомендациями, насколько они были интересны, когда пользователь кликнул на наш виджет и приобрел этот товар. Таких продаж в прошлом году только в России было совершено на сумму более 21 млрд руб. Если взять оценку российского рынка интернет-торговли от Data Insight, это 1,1% его объема. Но такой подход — косвенный показатель нужности рекомендаций, более правильной метрикой считается все-таки A/B-тест. Так как с позиции научного скептицизма никто точно не знает, насколько изменились бы продажи в отсутствие рекомендательной системы.
— Как обстоят дела с конкуренцией в области создания рекомендательных сервисов?
За рубежом конкурентов много, магазины часто покупают западные решения, ориентируясь на известность брендов. Но мы способны конкурировать и конкурируем. Например, в числе наших клиентов Decathlon в Голландии, Mothercare в Ирландии. В России мы лидируем с большим отрывом от остальных компаний, наш главный конкурент — собственная разработка магазинов.
Пройти обучение на курсах по машинному обучению, на первый взгляд, совсем не сложно, поэтому возникает большой соблазн написать алгоритмы самостоятельно. Но проблема в том, что написание алгоритма, которому учат на курсах, — это лишь 10% работы, а его «обвязка», склейки, корректировки, правила использования дополнительной информации сильно увеличивают трудоемкость. Затем созданное ядро нужно протестировать и поддерживать его устойчивость — для этого у нас есть специальные тесты, и мы каждый день проверяем, все ли в порядке.
Кроме того, продукт, который не развивается, — мертвый продукт. Меняется персонал заказчика, меняются требования. Любой алгоритм всегда нужно улучшать.
— То есть персонализация производится не только под нужды покупателей, но и под запросы бизнес-пользователей?
Да, и это играет большую роль. Специалисты, долго работающие в своей области, убеждены в том, что знают «лучше, чем машина». Однако на практике неожиданные и даже странные рекомендации программы в параллельных A/B-тестах оказываются более эффективными, чем предложенные экспертами. «Машина» и big data часто выигрывают. При этом некоторые рекомендации выглядят абсурдно: например, показывают вместе с туалетной бумагой наждачную бумагу. Это не шутка, такие случаи на самом деле были. А машина не обладает разумом, поэтому алгоритмы дополнительно приходится «обвешивать» правилами, чтобы таких ситуаций было меньше.
— Какова рыночная потребность в подобных решениях?
Система, повышающая конверсию, — это обязательный компонент в каждом онлайн-магазине. Если бы я был владельцем магазина, то предпочел бы готовое решение, потому что им проще управлять, видеть затраты и оценивать эффективность. Затраты на внутреннюю разработку чрезвычайно сложно подсчитать.
— Чем ваша система отличается от других?
У нас огромная экспертиза. Мы сделали тысячи тестов разных вариаций алгоритмов, что эквивалентно примерно 50 человеко-годам. Специальное подразделение из пяти человек занимается исключительно тестированием рекомендаций, пробуя различные комбинации алгоритмов и идеи, которые мы почерпнули на конференциях, у клиентов или придумали сами. Интересные гипотезы кодируем и прогоняем на старых логах, проверяя, что меняется в итоге. Сомневаюсь, что у каждого интернет-магазина хватит на это времени, ресурсов и знаний.
— Человека, купившего диван, всю следующую неделю, по милости рекомендательных сервисов, «бомбят» рекламой диванов. В вашей системе эта проблема решена?
Есть рекомендательные системы статические и персонализированные. В персонализированных мы эту проблему решили: мы знаем, по каким категориям определять повторные покупки. Типичный пример — кошачий корм. Для таких категорий есть специальные рекуррентные алгоритмы. Если человек купил дрель, мы знаем, когда ему понадобятся сверла.
Но есть загвоздка. Мы проводим эксперименты офлайн: если бы показали другие товары, получили бы больше продаж или нет? Такой анализ используется в большинстве научных статей, и это — большая ошибка, потому что алгоритм реально меняет поведение людей! В научных статьях по обучению рекомендательных систем описывается получаемый эффект, а в действительности его не видно, потому что авторы пренебрегли влиянием алгоритма на поведение пользователей. И это поведение отличается от исторических данных. Но как сделать по-другому, никто не знает.
Два года назад мы даже выложили специально сделанный дата-сет в библиотеку на Kaggle, решив, что это будет полезно для научного сообщества. Там полный набор, содержащий данные о поведении пользователей, каталог магазина и описание товаров. По нему уже книги написаны, но его до сих пор скачивают по несколько десятков раз в день, так как хорошие источники данных найти трудно. У меня в свое время такого дата-сета не было.
— Сейчас люди стремятся закрыть свое информационное пространство, спасаясь от напора рекламы: игнорируют звонки с незнакомых номеров, устанавливают программные блокировки и т. д. Эта тенденция не станет препятствием для развития рекомендательных сервисов?
Существует «черная» зона, когда собранные данные продаются непонятно кому и человека начинают спамить. В «серой» области балансируют между интересами пользователя и интернет-магазина, которому все-таки нужно продавать. Рассылки, например, иногда раздражают пользователя, но от них можно отписаться.
Мы находимся в «белой» зоне: данные никуда от нас не уходят, пользователь ищет товар, и рекомендация ему помогает. С точки зрения этики не подкопаешься. Я и сам пользуюсь рекомендациями собственных алгоритмов для выбора товара.
— Как планируете развивать вашу технологию?
В прошлом году архитектура платформы была модифицирована, благодаря этому в 2020 году мы предложим рынку инструменты для автоматизации маркетинга нового уровня. Будем наращивать количество и качество средств персонализации, пополним стек новых алгоритмов и их комбинаций. Еще раз попробуем использовать глубинное обучение в обработке текстов на естественном языке исходя из здравого смысла и накопленного опыта. Возможно, усложним систему фильтрации и правил.