Регистрация

«Лаборатория поисковой аналитики»: превращаем советы в деньги. Часть 2

0
0
1 113 0
Аудио Текст
5 апреля 2013

В продолжении передачи об облачной системе товарных рекомендаций Михаил Сливинский беседует с директором по аналитике стартапа RetailRocket Романом Зыковым и техническим директором RetailRocket Андреем Чижом о технических деталях проекта.

Из передачи вы узнаете:
— зачем рядовому интернет-магазину проводить триллионы расчетов для формирования рекомендаций;
— в чем недостатки схемы «с этим товаром также покупают» и стандартных «рекомендательных» модулей-надстроек;
— какие алгоритмы и данные используются для построения рекомендаций в RetailRocket;
— какие события на сайте являются наиболее ценными с точки зрения формирования рекомендаций;
— сколько параметров следует отдавать в облачный сервис, чтобы алгоритмы работали наилучшим образом;
— при каких масштабах бизнеса возникает необходимость в сервисе рекомендаций для потенциальных покупателей;
— и многое другое.

Первую часть передачи вы можете посмотреть здесь.

Михаил Сливинский: Здравствуйте, дорогие зрители SeoPult.TV. И снова в эфире «Лаборатория поисковой аналитики» и я, ее ведущий, Михаил Сливинский. Сегодня мы продолжим наш разговор о стартапе RetailRocket. Это система, которая позволяет небольшому или большому интернет-магазину получить товарные рекомендации. И сегодня у меня в гостях Рома Зыков, chief scientist проекта, и Андрей Чиж, технический директор. Ребята, привет!
Андрей Чиж: Привет!
Роман Зыков: Привет!
М. С.: Спасибо, что пришли. Я думаю, нашим зрителям будет очень интересно услышать какие-то технические детали. Мы с Колей уже обсуждали системные вопросы: как вообще устроен проект, зачем нужен и т. д. Конечно, нашу аудиторию интересуют подробности. Ну, во-первых, Андрей, наверное, к тебе вопрос: а почему магазин не может сделать это сам, зачем ему вы?
А. Ч.: Давай представим среднестатистический магазин в Рунете: это 15 тыс. товаров, это 10 тыс. уникальных посетителей в неделю, которые будут ему генерировать примерно 30 тыс. различных поведенческих событий. База, от которой ему придется отталкиваться, — это 15 тыс. товаров умножить на 15 тыс. товаров, получится около 200 млн итераций расчета.
М. С.: Такая матрица «товар в товар», да?
А. Ч.: Да, все верно, это матрица «товар в товар», 200 млн таких ячеек. А сейчас мы добавляем к ним еще поведенческий анализ, это еще 10 тыс., значит, уже триллионы расчетов, которые необходимо провести рядовому интернет-магазину. Если представить, что он хостится на виртуальном хостинге, ему мощностей не хватит, ему придется покупать отдельный сервер. Со всеми вытекающими отсюда последствиями.
М. С.: Слушай, я, честно говоря, давно не вникал в нюансы построения маленьких интернет-магазинов, но наверняка существуют какие-то типовые решения, какие-то плагины ко всяким CMS, которые как-то позволяют рекомендации строить?
А. Ч.: Да, все верно, они есть. Они все равно действуют в рамках ограниченных ресурсов виртуального хостинга, может быть, виртуально выделенного сервера. Они ограничены алгоритмами, которые могут использовать, и в основном это алгоритм «С этим товаром также покупают». И представим, что у этого небольшого магазина в месяц купили из всего его товарного ряда примерно 20%, из этих 20% только половину покупали совместно, и оказывается, что в конце месяца мы можем выдать рекомендации только 10% товаров, и эти рекомендации будут не очень хорошими. Представим себе, что с диваном кто-то один купил сковородку, и теперь к сковородке они будут рекомендовать ему диван. Чтобы делать расчеты более точные и более понятные, нужно больше мощностей, нужны отдельные сервера. Стандартными модулями это не получится сделать.
М. С.: Рома, больше к тебе вопрос: а какие, собственно, алгоритмы используете вы и какие данные используются для построения рекомендаций?
Р. З.: Спасибо за вопрос. Для построения алгоритмов рекомендаций в проекте RetailRocket мне пришлось переосмыслить мой пятилетний опыт работы в Ozon.ru, трехлетний — в Wikimart, где я как раз занимался построением рекомендаций. Хотелось какие-то свои идеи реализовать.

У нас получился сейчас некий гибридный алгоритм рекомендаций, он многозвенный, он использует и контентные параметры, и поведенческие. Какие данные мы сейчас используем? Ну, прежде всего, самые важные данные — это транзакции.

М. С.: Самое дорогое событие.
Р. З.: Да. Другие события (как раз Коля рассказывал в прошлой передаче) — второстепенные: когда добавляют в «Корзину», может быть, вишлист. Менее ценное, конечно, событие, но более ценное, чем просто веб-статистика. Мы сразу стали использовать именно данные веб-статистики, потому что, если средняя конверсия по интернет-магазину, например, 1%, то у нас по веб-статистике получается в 100 раз больше данных, чем транзакций.
М. С.: Под веб-статистикой ты в данном случае имеешь в виду факторы просмотров?
Р. З.: Да-да, факторы просмотров конкретными пользователями конкретных товаров. Плюс мы используем всякие параметры из YML-файлов, которые нам дают интернет-магазины, и вот хотел бы сразу дать совет нашим будущим потенциальным клиентам, чтобы они в YML-файл как можно больше параметров отдавали. Чем больше они нам параметров отдадут, тем больше алгоритм обучится, и рекомендации будут значительно лучше.
М. С.: Слушай, кстати, а как вообще подключиться к вашей системе? Это сложно?
А. Ч.: Все достаточно просто: нужно зайти на сайт, зарегистрироваться, там есть несколько JavaScript, которые нужно вставить на страницу, и, в принципе, на этом подключение закончено, и примерно через шесть часов можно забирать свои рекомендации у нас. Если вы хотите еще немножко упростить интеграцию с отображением рекомендаций, у нас есть виджеты, которые вы можете создать прямо на сайте, и нужно будет разместить еще один JavaScript на своей страничке, и там будут отображаться рекомендации.
М. С.: Я так понимаю, есть какой-то фид, вы отгружаете эти рекомендации. В каком он формате, как его можно взять?
А. Ч.: У нас два формата, XML и JSON, можно забирать и работать с ними.
М. С.: Понял. Рома, но для построения рекомендаций вы, наверное, взвешиваете события разной значимости, сравнивая их? Ну, все-таки добавление в «Корзину» и просмотр — это немножко разные вещи, да? Это настраиваемо на стороне пользователя?
Р. З.: Ну, сейчас пока не настраиваемо, у нас довольно жесткий многозвенный алгоритм, точнее, ансамбль алгоритмов.

Опыт Netflix показал, что именно ансамбль алгоритмов дает лучшие результаты. Например, первая выигравшая их конкурс команда улучшила алгоритм рекомендаций Netflix на 8,46%, они использовали ансамбль из 107 алгоритмов. У нас тоже сейчас ряд алгоритмов используется, и они, естественно, взвешиваются. Например, факт заказа имеет гораздо больший вес, чем факт просмотра.

Это все учитывается.
М. С.: Но, Рома, если мне память не изменяет, Netflix, по-моему, не внедрил самый мощный алгоритм просто потому, что он был технологически сложнее гораздо, чем следующий, но давал не такой большой выигрыш относительно него, да?
Р. З.: Да, я специально изучал этот вопрос. Например, из первой команды, из 107 субалгоритмов, из которых был собран ансамбль, они выбрали только два. Потом через несколько лет выиграла уже другая команда, она получила 10% улучшений, там было несколько сотен субалгоритмов, и в Netflix не выбрали ничего. Почему? Потому что, во-первых, бизнес у Netflix изменился: они больше перешли на clickstream, а данных стало больше, и как раз у них появилась эта самая веб-статистика. До того веб-статистики у них не было, потому что они торговали только по почте, пересылкой дисков занимались, и у них появилась эта веб-статистика, инженеры посмотрели на последние выигравшие алгоритмы и поняли, что нет технической целесообразности: их внедрение было намного дороже, чем выгода от их использования.
М. С.: Нормальное, рациональное бизнес-решение, в общем-то?
Р. З.: Да.
М. С.: На конференциях по информационному поиску, на разных других мероприятиях я слышал несколько раз идею, что сейчас трудно рассчитывать на выход какой-то новой поисковой машины на рынок, потому что ей придется конкурировать не только технологически, но еще и по накопленным данным, потому что у «Яндекса», у Google и других больших поисковых компаний накоплен гигантский clickstream, то есть клики пользователей и таким образом сформированные оценки. И вот это переплюнуть очень сложно: актив колоссальный. Такая же вещь происходит, наверное, и в ритейле, когда крупный интернет-магазин получает достаточно много трафика, он накапливает эту экспертизу пользовательской потребности восприятия, желания и т. д., и вот в этом состоит большая ценность бизнеса, вообще говоря, да? Здесь, наверное, какая логика: чем раньше войдешь в эту историю, тем больше профита в итоге получишь.
Р. З.: Да, совершенно верно. Например, компания eBay: как раз я был на их презентации в сентябре — я точно не помню, какой они clickstream, объем данных, брали, — они рассказывали о том, что раньше для поисковых подсказок использовали всего полугодовую историю. Потом технологически они позволили себе расшириться, по-моему, до трех лет, и они значительно улучшить свои поисковые подсказки. Ты прекрасно знаешь, что порядка 50% поисковых запросов уникальны.
М. С.: Да, около того.
Р. З.: А это им позволило очень сильно улучшить свой сервис подсказок, просто увеличив историю в шесть раз.
М. С.: Я недавно на Wikimart смотрел внутренние запросы, пытался понять, какая там доля уникальных подсказок, и понял, что на самом деле, удлиняя период, взяв данные за пару лет, можно достаточно большой пул запросов исчерпать, и новых не так много относительно этого появляется. Рома, к вопросу о таймлайне: а ведь рекомендации «протухают» со временем, наверное? То есть действия, которые были совершены, например, вчера и три месяца назад, для твоей системы имеют разный вес или вы это не учитываете?
Р. З.: Так как сервис у нас стартовал только недавно, пока жесткой необходимости внедрять вес по времени нет, но мы это используем, например, для бестселлеров. Вот Коля упоминал как раз, когда мы их показываем в категории «Самые популярные товары», и мы это рассчитываем не только исходя из продаж, но и исходя из трафика и тех второстепенных событий, которые происходят с этими моделями. Вот там используется уже модель, связанная с развесовкой по времени, то есть событие, которое состоялось недавно, имеет больший вес. Мы чувствуем краткосрочные тренды, если так выразиться.
М. С.: Это на самом деле, наверное, важная штука, потому что, когда регулярно представители поисковых машин спрашивают о персонализации, о такого рода вещах, видно, что они очень аккуратно заходят в эту зону, так как понимают, что интересы пользователей «протухают» очень легко: вот сейчас пользователю нужно купить пластиковые окна, а через час ему уже нужен автосервис, и вообще связи между этими событиями нет.
Р. З.: Ну да, возможно, не нужен ему сервис, вставляющий пластиковые окна в машину.
М. С.: Конечно! Существует сейчас большой, по-моему, тренд в области машинного обучения, большие инициативы по созданию каких-то больших публичных штук, позволяющих свои данные заливать и получать какой-то результат. Вы используете машинное обучение или это классические алгоритмы, в которых имеют место простые эвристики, где нет машинного обучения?
Р. З.: Да, мы используем, но это естественно, иначе хороший сервис не сделать, мы используем технологию Hadoop. Это система кластерных вычислений, и, наверное, она нам лучше всего подходит в данный момент. И по стоимости: да, это OpenSource, потому что оно не требует суперхороших серверов для построения рекомендаций. В принципе, такие сервисы есть, например Amazon Elastic MapReduce, Google Prediction API, но это стоит других денег, и, в принципе, мы это умеем сами, поэтому мы и кластер даже собираем не в «облаке», а прямо на хостинге арендуем сервера и собираем свой кластер.
М. С.: Если я правильно понимаю, колоссальное достоинство Hadoop в том, что он еще и масштабируется очень классно: там добавить новый узел вообще не проблема.
А. Ч.: Да, он полностью масштабируется горизонтально, мы просто докупаем новый сервер и увеличиваем мощности пропорционально линейным.
М. С.: Ну, насколько я понимаю, многие в поиске, по крайней мере и «Яндекс», и Google, и Mail.ru, используют такого рода технологии. А известны ли какие-то другие применения, то есть Hadoop используют только поисковые машины или есть еще какие-то другие?
Р. З.: Ну, Hadoop использует компания Netflix для хранения данных.
М. С.: А в России?
Р. З.: В России Wikimart использует.
М. С.: Wikimart! Кстати, да. У нас, правда, маленький кластер, там нет тысячи узлов, как у поисковых машин.
Р. З.: Есть еще тема, но они не сам Hadoop используют, а больше технологии, построенные сверху Hadoop: это HBase, к примеру, то есть кластерные базы данных, MySQL. Это, например, рекламными площадками сейчас начало использоваться, особенно в RTB, там нужен огромный объем данных, объемные вычисления, и как раз RTB сейчас очень хорошо потребляет такие технологии, как Hadoop и HBase.
М. С.: Вот, кстати, к вопросу об объемах. Получается какая картина: в общем-то, помимо вычислительной проблемы, существует еще и проблема достаточности данных: если я сегодня открою интернет-магазин и у меня там 100 посетителей в день из контекстной рекламы, что мне делать? Есть смысл пробовать ставить ваши рекомендации или это совсем лишено смысла? Где порог входа?
Р. З.: То, что ты назвал, называется «проблема холодного старта».
М. С.: Да.
Р. З.: У тебя нет никакой статистики. Даже, может быть, у большого магазина просто ее еще пока нет. Мы решили эту проблему.

Мы придумали специальный алгоритм, он работает быстро и позволяет уже, как Андрей упоминал, через шесть часов получить рекомендации, они будут достаточно валидные, чтобы их можно было показывать на сайте.

М. С.: Ну, шесть часов — это очень круто! Это означает, что вы сделали технологически совершенно уникальный проект. Я имею в виду, сколько данных должен дать магазин, на чем обучиться? Сколько данных для обучения нужно и где тот предел, когда бессмысленно ставить любую систему рекомендаций, не только вашу, но и вообще любую, потому что данных нет, посчитать ничто невозможно, нет способов? Или ваша система может работать даже в условиях острого недостатка данных?
Р. З.: Система может работать практически при нулевом трафике. Два фактора: есть контентный фактор и поведенческий. Контентный фактор — это тот же самый YML-файл, как я говорил, через него нужно отдать как можно больше параметров нам, и мы благодаря этому как можно лучше сделаем рекомендации. И есть поведенческий. У каких-то магазинов может быть мало контента, но много трафика, у каких-то магазинов может быть мало трафика, но много контента, и в обоих случаях мы сделаем свою работу хорошо. Ну, конечно, хуже гораздо, когда нет нормальных технических описаний товаров в YML, их характеристик, и когда нет трафика. Это уже гораздо сложнее, и даже в данном случае наша система все равно будет работать, и адекватность ее будет зависеть от того, насколько хорошо сделан каталог у интернет-магазина.
М. С.: Ну, на самом деле это какая-то совсем мягкая ситуация. Если у вас нет трафика, ну, о’кей, сделайте хотя бы нормальное описание товаров. Рома, расскажи, пожалуйста, как вы подходите к задаче построения рекомендаций, когда у вас есть только контент, то есть товар, какие-то характеристики? Что вы считаете похожими товарами, как вы рекомендуете?
Р. З.: Ну, мы берем весь пул товаров в категории и начинаем их сравнивать с этими же товарами в той же категории, самый простой способ — по количеству совпадений характеристик. Что можно дальше сделать? Дальше можно учитывать размеры. Например, холодильник 90 см и 91 см, полного совпадения нет, но величина цифровая, размер, и их можно сравнить, 90 и 91 очень близки друг к другу. Третий вариант, когда мы можем взвесить, учитывая поведение пользователей, понять, какие характеристики самые важные, и можем привязать их, сделать развесовку свойств товара. И четвертое: например, это может быть использование text mining, когда магазин нам может просто дать описание товара, но не дать характеристики в соответствии со спецификацией YML, и даже эту задачу можно решить. Мы, к сожалению, пока еще не готовы, но в будущем это все будет сделано.
М. С.: Я недавно ездил на конференцию по искусственному интеллекту и лингвистике, в Яхроме недавно она проходила, и там много докладов было посвящено выделению фактов из текстов, и недавно, кстати, «Яндекс» анонсировал свой «Томита-парсер»; он, правда, не для коммерческого использования анонсирован. Но я даже съездил на семинар, вживую попробовал, это на самом деле какая-то фантастика, то есть можно описать правилами какую-то систему, которая позволяет вытаскивать из неструктурированного текста факты и складывать их в структурированном виде, в таблицу просто. Это очень интересное решение. Рома, смотри, есть кейсы, когда, с моей точки зрения, рекомендации сильно аффектятся с сайтом. Ну, например, как понять, по какой причине пользователь с одного товара перешел на другой? Может быть, он и не понимал, что этот холодильник шире на пять сантиметров, и кликнул не из-за того, что он шире и это его радует, а по каким-то совершенно другим мотивам. У нас такие вещи бывают, мы в листингах у себя обнаружили, например, такое: просто зашкаливал CTR у очень необычных санок, их не покупали так сильно, но CTR зашкаливал. Оказалось, на картинке это выглядело так: это натурально коляска, которая стоит на полозьях. Такой необычный формат, и, видимо, люди кликали и говорили: «Ничего себе, какая вещь!» не покупают, но кликают. Это ведь очень тонкая вещь — попытаться вытащить смыслы из действий пользователей, легко очень ошибиться. Вы даете какие-то рекомендации, может быть, магазинам по тому, как представлять правильно товар на сайте, чтобы вам было понятнее, как обрабатывать эту статистку?
Р. З.: Вот тот случай, который ты рассказал — я, кстати, эти санки видел вживую в парке, когда с ребенком гулял. Если коротко ответить, то, в конце концов, ведь какой товар они покупали? Был клик, было много кликов, но покупка была другой. Поэтому рекомендательная система автоматически это узнает и все-таки отранжирует у себя в своих электронных мозгах так, чтобы именно покупка всплыла наверх, и рекомендация сама пересчитает. Там, конечно, может возникнуть замкнутый цикл, когда они сами себя начинают раскручивать, но благодаря тому, что именно там уже появляются покупки, то есть мы знаем отношение пользователя после клика на эту рекомендацию, оно вылечится.
М. С.: На самом деле можно просто какую-нибудь обратную связь по конверсии сделать, там кликов много, а транзакций мало, чтобы это все «отжимало» эту модель вниз в рекомендательной системе.
Р. З.: Да, это все реалистично.
М. С.: Ну, в общем, это скорее был шаг в сторону, и совет такой владельцам, разработчикам интернет-магазинов: когда вы какую-то рекомендательную систему строите и устанавливаете, не забывайте со стороны пользователя на это все смотреть и обращайте внимание на то, какие данные он видит, на основании чего он может принимать решения. Потому что иногда мы смотрим со всей стороны и не совсем понимаем логику нормальных живых людей, которые по ту сторону монитора находятся.
Р. З.: Да, совершенно верно.
М. С.: Спасибо большое, ребята, что пришли! Было очень интересно услышать эти очень важные, по-моему, технические подробности. Я желаю удачи вашему проекту, верю, что у вас получится классная штука. Вернее, она уже получилась, осталось только набрать обороты как следует. У вас уже, кстати, есть какие-то заказчики, можете похвастаться? Клиенты какие-то крупные?
А. Ч.: Да, у нас есть. Похвастаться…
М. С.: Но не хотите хвастаться публично.
А. Ч.: Да, мы не хотели бы публично хвастаться. Есть, и их уже сейчас, работающих, больше десятка, и в pipeline у нас под сотню магазинов.
М. С.: Круто! А кстати говоря, какая схема комиссии — за транзакцию или?..
А. Ч.: Прямо сейчас это все бесплатно, можно подключиться и пользоваться. Так или иначе, любая оплата будет перекрыта пользой, которую мы принесем. Мы разрабатываем систему, которая должна правильно рассчитать ту пользу, которую мы приносим сайту, и исходя из этого мы будем строить нашу оплату.
М. С.: Сейчас это совершенно бесплатно, а в дальнейшем в любом случае будет вписываться в рамки той пользы, которая будет принесена.
А. Ч.: Факт.
М. С: Классно! Ну что, остается только порадоваться за ваши начинания и пригласить всех пользователей пробовать, тестировать и получать дополнительные покупки. Спасибо большое, что пришли, было, я думаю, интересно. Спасибо большое, дорогие зрители, что были с нами в эфире, и до новых встреч!

Развернуть текстовую версию
Комментарии
Похожие видео