Авторы: Андреас Латтнер и Йозефин Кука (Otto Group data.works GmbH)

tl; dr: Кластеризация посетителей магазина на основе атрибутов профиля (например, на основе покупательского поведения) может использоваться для предоставления персонализированного рейтинга продуктов с целью отображения более релевантных продуктов на верхних позициях в интернет магазин. Хотя наш подход позволяет повторно использовать большую часть нашей модели ранжирования, основанной на регрессии, мы столкнулись с новыми проблемами в персонализированной настройке на пути фактического предоставления желаемых сегментов и рейтингов пользователей.

Покупая в Интернете, покупатели сталкиваются с множеством вариантов. Просматривая рейтинг продуктов, например, список всей обуви или платьев в интернет-магазине, покупатель может выбирать между различными вариантами сортировки: по убыванию и возрастанию цены или рейтинга, новейших продуктов или популярности продукта, тогда как последнее часто используется по умолчанию. Мы считаем, что для предоставления пользователям более релевантных товаров в интернет-магазине персонализация этого рейтинга очень полезна. Приведем пример (рис. 1): две женщины одного возраста, но с очень разными характеристиками и интересами. Цель состоит в том, чтобы предоставить обоим пользователям рейтинг продуктов, который соответствует их потребностям.

В этой статье мы стремимся представить варианты персонализации для ранжирования продуктов, препятствия, которые могут возникнуть на пути, и подход к решению, который мы успешно реализовали в Otto Group.

Otto Group - это глобально активная группа розничных продавцов и поставщиков розничных услуг, представленная более чем в 30 странах. Otto Group с объемом продаж в Интернете 8,1 млрд евро из 14,3 млрд евро (2019/20) является одним из крупнейших в мире розничных онлайн-магазинов. Otto Group data.works GmbH отвечает за хранение, анонимность и обработку данных розничной торговли в соответствии с GDPR, а также за предоставление передовых решений для машинного обучения и обработки данных.

Отправная точка: прогнозное ранжирование продуктов

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

Ранжирование нашей отправной точки следует прогнозирующему, но неперсонализированному подходу. Основная идея заключается в том, что продукты с высокой вероятностью покупки должны иметь более высокий рейтинг, чем продукты с более низкими ожидаемыми продажами. Таким образом, реализованная модель обеспечивает прогноз продаж для каждого продукта на предстоящий день. Затем элементы ранжируются в порядке убывания, исходя из предположения, что такой подход к реализации приводит к лучшим коэффициентам конверсии и увеличению объема продаж.

С теоретической точки зрения существует три различных подхода к обучению ранжированию: точечный, попарный и списочный. Мы выбрали точечный метод, который предполагает, что каждый элемент в данных обучения имеет числовую или порядковую оценку, в нашем случае ожидаемые продажи или доход. Таким образом, проблема ранжирования сводится к простой задаче регрессии.

Установив цель и тип модели, теперь мы можем сосредоточиться на создании полезных функций, созданных на основе сведений о продукте, данных транзакций и отслеживания, например:

  • Категория продукта,
  • новизна продукта,
  • временной ряд исторических продаж,
  • цена и изменение цен.

Чтобы оценить качество наших прогнозов, мы выбрали два основных подхода. Чтобы улучшить и оценить производительность модели, мы использовали общий показатель для задач ранжирования, называемый нормализованной дисконтированной совокупной прибылью (nDCG). Он измеряет прирост прогнозируемого ранжирования по отношению к идеальному ранжированию, в нашем случае фактическое количество продаж в порядке убывания. Используя исторические данные, мы смогли оценить, что наш новый рейтинг показал лучшие результаты с точки зрения nDCG по сравнению с результатами предыдущего базового рейтинга на основе правил.

Однако мы не знали, действительно ли рейтинги более полезны на практике и эффективен ли общий подход в интернет-магазине. Чтобы оценить поведение и удовлетворенность клиентов, мы реализовали несколько тестов AB, разделив посетителей интернет-магазина на две группы, чтобы сравнить рейтинг на основе правил с новым рейтингом на основе прогнозов. После нескольких раундов постепенного развития и непрерывных улучшений мы смогли измерить значительный рост в нескольких магазинах в отношении желаемых показателей, например конверсия или общие продажи. Это подводит нас к следующему важному шагу - персонализации.

Персонализация

Параметры персонализации

Обдумывая решение, позволяющее предоставить пользователям рейтинг, соответствующий их потребностям и интересам, мы можем выделить несколько вариантов:

  • Глубина персонализации. Персонализацию можно полностью индивидуализировать или адаптировать для группы клиентов со схожими интересами. Первый вариант обычно сложнее и дороже с точки зрения реализации, но может быть более полезным для отдельного пользователя.
  • Неявная или явная персонализация. С одной стороны, посетителей можно явно спросить об их интересах, что может занять много времени и раздражать пользователя. С другой стороны, неявно собранные данные могут использоваться для оценки интересов пользователей, но это может привести к ложным выводам.
  • Ситуативные, поведенческие и клиентские данные. По типу данных мы можем различать три типа данных:
    ситуативные данные: информация о браузере, время, местоположение или погода,
    статические данные пользователя: пол, возраст или адрес,
    данные о поведении: предпочтения в определенных категориях, брендах или ценовых диапазонах.
    Какие данные использовать, зависит от их доступности, но также и от их полезности для желаемых вариант использования.
  • Адаптация в реальном времени. Помимо общего наличия (исторических) данных, службы персонализации могут иметь возможность адаптироваться к данным в реальном времени, как только станет доступна новая информация о пользователе. Однако следует учитывать, что изменения в реальном времени, связанные с персонализацией, не могут мешать работе пользователя во внешнем интерфейсе.

Реализованное решение

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

Таким образом, мы решили создать персонализированный рейтинг на основе групп пользователей. Мы разделили задачу на две части: кластеризацию посетителей магазина по пользовательским сегментам и прогнозирование их рейтингов с помощью регрессии (рис. 2). На последнем этапе мы можем использовать существующую модель с начальной точки с небольшими изменениями и сохранить общую базу кода для глобального и персонализированного ранжирования.

Для создания пользовательских сегментов посетители магазина группируются на основе атрибутов профиля из предыдущих взаимодействий с магазином, таких как интерес к конкретному ассортименту или чувствительность к цене. Чтобы создать рейтинг на основе пользовательских сегментов, для разных сегментов вычисляются характеристики, и для каждого сегмента прогнозируются персонализированные рейтинги продуктов.

Препятствия

При составлении персонализированного рейтинга продуктов мы столкнулись с рядом проблем. В то время как некоторые из них были ожидаемы заранее, другие были скорее неожиданностью на нашем пути.

При разработке модели сегментации мы столкнулись с проблемой, как оценить качество определенных атрибутов профиля и результирующих сегментов. Сходство посетителей в пространстве атрибутов профиля и результирующих пользовательских сегментах не обязательно отражает схожее покупательское поведение. Хотя можно было работать с предположением, что результирующие кластеры, как ожидается, приведут к полезным сегментам для персонализированного ранжирования, мы решили оценить пригодность атрибутов профиля, а также сегментов, просмотрев соответствующие покупки в исторических данных.

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

Очевидно, нам нужен способ идентифицировать посетителей и назначать соответствующий сегмент пользователей на основе вышеупомянутых сегментов. Наши данные отслеживания магазинов содержат идентификатор посетителя, но мы также хотели бы распознать посетителя, пришедшего из другого контекста. События входа в систему могут использоваться, чтобы определить, действительно ли посетители принадлежат одной и той же учетной записи. Чтобы отнести посетителя к сегменту, нам нужна информация из предыдущих сессий (или внутри сессии). Переход ранее неизвестного посетителя к посетителю, которому назначен поведенческий сегмент, может привести к ситуации, когда в начале сеанса персонализированное ранжирование не используется до тех пор, пока не будет получен соответствующий сегмент. Это может привести к нежелательным эффектам, таким как разный рейтинг одной и той же категории продукта, что может сбить с толку посетителя.

В нашем подходе мы автоматически объединяем посетителей магазина в поведенческие кластеры. После того, как будет создана обученная модель сегментации, неизвестных посетителей также можно будет легко отнести к одному из пользовательских сегментов в будущем. Однако, если модель сегментации будет повторно обучена позже, результирующая модель и сопоставление идентификаторов сегментов для посетителей в общем случае будут выглядеть иначе. Таким образом, всякий раз, когда сегментирование обновляется, известные посетители могут получать «неправильные» списки своих предыдущих идентификаторов сегментов до тех пор, пока не будет получено обновление сопоставления. Сроки рабочих процессов - важная проблема, поскольку предоставленные рейтинги для пользовательских сегментов должны совпадать с отображением активных пользователей в магазине. В худшем случае неправильная синхронизация может привести к отображению ранжирования другого пользовательского сегмента, что потенциально приведет к худшей производительности, чем могло бы быть произведено неперсонализированным решением.

Во время различных тестов AB нам также пришлось столкнуться с рядом препятствий. Помимо регулярных проверок, таких как наличие сбалансированных и постоянных тестовых групп, мы узнали, что есть несколько мест, где что-то может пойти не так, хотя общая архитектура не кажется очень сложной. По нашему опыту, полезно проверить, правильно ли назначены сегменты посетителям, правильно ли их обновления работают в магазине и используются ли соответствующие рейтинги на протяжении всего сеанса. Наличие персонализированного сервиса приводит к сложной ситуации для проверок или отладки, поскольку недостаточно проверять только изолированные контексты. Создание некоторого автоматизированного мониторинга, если в магазине действительно используются правильные рейтинги, может помочь быстро выявить проблемы.

Вывод

После анализа потенциальных путей к персонализации рейтингов продуктов мы решили реализовать прагматическое решение с неявным персонализированным ранжированием для поведенческих сегментов пользователей. Решение хорошо соответствует нашему существующему подходу к ранжированию продуктов и не требует серьезных изменений в системах магазинов для наших интернет-магазинов. Во время нашего путешествия мы узнали, что даже такое простое решение для персонализации имеет свою сложность, приводящую к ряду проблем.

В настоящее время мы используем наши рейтинговые решения в различных версиях, неперсонализированные и персонализированные, для нескольких магазинов Otto Group в зависимости от их конкретных потребностей. Каждый магазин может использовать собственное целевое значение (например, оборот или объем продаж), чтобы соответствовать определенным требованиям. В будущей работе атрибуты ситуативного профиля могут быть дополнительно приняты во внимание для сегментации пользователей. Другие возможные следующие шаги могут касаться адаптации или персонализации в реальном времени на индивидуальном уровне, т. Е. Создания персонализированного рейтинга для каждого посетителя магазина.