Приветствуем читателей Хабра! Мы, команда дата-сайентистов и дата-аналитиков компании «ДатаЛаб»* (ГК «Автомакон»), продолжаем рассказывать о насущных проблемах ML-разработки, делимся подходами к их решению и рассуждаем на актуальные темы.  Автор статьи: Вячеслав Пандов, ведущий инженер по машинному обучению направления «ДатаЛаб». В этой статье затронем тему, как можно улучшить то, что уже работает хорошо. Делимся опытом изменения алгоритмов рекомендательной системы для повышения продаж одного из известных ритейлеров страны. В бизнесе рекомендательные системы играют важную роль в увеличении продаж и конверсии. Рекомендации продуктов или услуг, основанные на предпочтениях и покупательском поведении клиентов, способны увеличить средний чек и стимулировать дополнительные покупки. При этом важно периодически искать пути развития рекомендательной системы, чтобы иметь возможность продолжать улучшать пользовательский опыт. В статье мы описываем наш реальный опыт – проект по развитию рекомендательной системы для российской розничной сети супермаркетов «ВкусВилл». Наша предыдущая статья про предсказание покупок на основе предыдущего опыта Для того, чтобы понять, как двигаться дальше, следует обратиться к истокам – ключевым этапам рекомендательной системы. Разработку рекомендательных алгоритмов можно поделить на этапы: Определение целей бизнеса, метрик, бейзлайнов; Сбор и анализ данных; Моделирование; Тестирование. В роли бейзлайна может выступать как текущая рекомендательная система бизнеса, так и более простые статистические эвристики – рекомендация глобально-популярных товаров, рекомендация персонально-популярных товаров, их комбинация и т.п. После того как бейзлайны по целевым метрикам побиты, и все свидетельствует о том, что рекомендательная система работает и способна приносит профит, возникает вопрос — а что делать дальше? Есть ли способы развивать рекомендательный алгоритм или предел был достигнут?  Эти вопросы стали толчком к разработке более сложных алгоритмов, использованию глубокого обучения и искусственного интеллекта для создания более точной и эффективной рекомендательной системы. Зачем это может быть нужно? Бывают ситуации, когда хорошо работающий рекомендательный алгоритм в некоторых случаях считает, что какой-то конкретный товар очень релевантен для пользователя, и поэтому настойчиво его рекомендует. Но пользователю конкретно этот товар не интересен и он его игнорирует по той или иной причине. Это очень полезная информация, которая на момент разработки алгоритмов недоступна, поэтому начинать собирать подобные данные необходимо еще на этапе тестирования. Если по результатам тестов алгоритм показывает себя хорошо, вам становится доступна информация для новой итерации его улучшения. На одном из мозговых штурмов мы сформулировали простую и быструю в реализации эвристику: предложили объединять пользователей и товары в пары, и давать таким парам оценку важности, а далее в зависимости от важности регулировать частоту показов. Для лучшего понимания, предлагаем рассмотреть синтетический вариант нашей обратной связи на примере товара «Манго»: Здесь сгруппированы пары (покупатель, товар) и выведены последние 5 показов в этих группах. Мы видим, что покупатель AAAAAAA купил Манго 4 раза из 5 показов, покупатель BBBBBBB купил 2 раза из 5 показов, а покупатель CCCCCCC не купил ни разу, сколько бы ни предлагали. Было решено ввести 3 типа оценок для пар, отображающие степень значимости товара для покупателя: Горячий — если покупатель купил товар > 3 раз из последних 5 показов; Теплый — если покупатель купил товар > 1 и ≤ 3 раз из последних 5 показов; Холодный — если покупатель не купил товар ни разу из последних 5 показов. Предлагаем рассмотреть исходные синтетические векторы рекомендованных товаров для этих покупателей: После применения фильтра с учетом обратной связи вектор рекомендаций станет следующим: Для покупателя AAAAAAA ничего не изменилось, т.к. он его стабильно покупает по рекомендациям, поэтому делаем вывод, что рекомендация релевантная. Для покупателя BBBBBBB мы сместили рассматриваемый товар дальше по вектору — это значит, исходя из технической реализации наших показов рекомендаций, что в новых итерациях покупателю этот товар будет показывать позже или реже. Для покупателя CCCCCCC мы убрали показ этого товара на определенное время. Если полностью исключить непокупаемые товары из рекомендаций, покупатель очень быстро может оказаться в «пузыре рекомендаций». Как долго нужно скрывать такие товары, а потом вновь показывать — может зависеть от требований бизнеса. Применив такой алгоритм, основанный на простой эвристике, мы получили достаточный прирост по нашим бизнес-метрикам, чтобы убедиться в дальнейшей пользе исследования более сложных реализаций учета фидбека. Ниже приведены графики сравнения различных бизнес-метрик одной фокус-группы с использованием фидбека и двух других без него.  HR-маркетолог