Глубокая персонализация - залог высокой эффективности любой системы. Предиктивная аналитика в StreamMyData базируется на использовании машинного обучения и индивидуального подхода к каждому клиенту, чтобы максимизировать эффективность вложений в интернет-маркетинг. Мы потратили много сил и времени, чтобы построить сквозную аналитику и на основе собираемых данных разработать систему предиктивной аналитики для крупнейшего книжного сервиса в России и странах СНГ ЛитРес.
Данный материал, являясь продолжением предыдущих публикаций, раскрывает больше деталей касательно устройства системы, описывает данные, с которыми мы работали, и результаты A/B тестирования эффективности рекламных кампаний, которое мы провели совместно с ЛитРес и Яндекс.Директ.
A/B-тестирование (англ. A/B testing, Split testing) — метод маркетингового исследования, суть которого заключается в том, что контрольная группа элементов сравнивается с набором тестовых групп, в которых один или несколько показателей были изменены для того, чтобы выяснить, какие из изменений улучшают целевой показатель. Таким образом, в ходе теста сравнивается вариант «A» и вариант «B», и целью является определение лучшего из двух протестированных вариантов.
Проведение A/B теста было призвано оценить реальное влияние нашей системы на показатели эффективности рекламных кампаний в сравнении с тем подходом, который используется в данный момент - комбинация собственных корректировок и автостратегий Яндекс.Директ.
Работа с данными
Исходными данными стали хиты (от англ. hit - обращение) из Google Analytics, которые по нашим собственным алгоритмам собираются в сессии на выделенном сервере. Это большой объем самых разных данных, в которых нужно найти ту информацию, которая будет релевантна поставленной задаче. Этот процесс похож на поиск драгоценных металлов золотоискателями. Конструирование признаков (от англ. Feature Engineering) является одним из самых важных и трудоемких процессов в разработке модели машинного обучения. Мы подошли к этому этапу со следующими вводными:
у нас есть много сырых данных, которые содержат в себе информацию о совершенных действиях пользователя (например, какие страницы посещал и что покупал) и техническая информация (с какого устройства, браузера зашел, в какое время и так далее);
важность большинства из них интуитивно оценивается неверно;
большая часть информации не подходит для эффективного использования в машинном обучении (рис. 1).
В процессе создания признаков мы протестировали огромное множество их комбинаций, создали много собственных признаков и еще от большего количества отказались. В конечном итоге, мы можем выделить четыре категории:
исторические (накопительные) признаки - количество посещений веб-сайта за период, количество просмотренных страниц и тому подобные;
признаки, оценивающие последовательность действий пользователя на сайте - какие действия, в каком порядке и с какой скоростью совершает пользователь в каждой конкретной сессии;
технические признаки - длительность сессии, время входа, браузер, устройство, город и прочие;
признаки, связанные с транзакциями.
Совокупность отобранных признаков образует поведенческий портрет пользователя (рис. 2), на основе которого мы оцениваем вероятность совершения пользователем покупки.
Настоящей находкой стало пространство поведенческих признаков, которые основаны на информации о покупках клиентов. Внедрение всего пяти таких признаков сразу улучшило качество модели на 18 %.
Этапы работы системы
Разработанное решение состоит из конвейера обработки данных систем аналитики, модулей машинного обучения и работы с рекламными системами.
Можно выделить основные этапы работы системы:
Выгрузка данных - предобработка данных с сессиями пользователей и выгрузка получившейся выборки из BigQuery на сервер, где находится модель машинного обучения.
Дообучение модели - дообучение существующей модели, используя новые данные за один день.
Создание предсказаний - создание предсказаний о вероятности покупки в течение будущих семи дней для клиентов, которые посещали сайт за последние шесть дней.
Кластеризация пользователей - определение центра кластеров и разбиение множества пользователей на пять групп на основе вероятности совершения покупки.
Создание аудиторий по ClientID - создание аудиторий в Яндекс.Аудитории, используя ClientID Яндекс.Метрики как идентификатор.
Обогащение CRM данными - сопоставление каждому ClientID идентификатор пользователя на сайте (UserID), номер мобильного телефона и адрес электронной почты в хешированном виде, если таковые имеются.
Создание аудиторий по CRM данным - использование UserID, номер мобильного телефона и адрес электронной почты в качестве идентификаторов для создания аудиторий в Яндекс.Аудитории.
Корректировка ставок - автоматическое изменение величины корректирующей ставки для каждой из аудиторий на основе показателей эффективности аудиторий.
Схематично этапы работы системы предсказаний изображены на рисунке 3.
Как сегменты используются в Яндекс.Директ
После того, как предобработанные данные были загружены на сервер, предсказания сделаны и разбиты на сегменты, мы получаем таблицу, в которой каждая строчка содержит идентификаторы клиента и сегмент, к которому относится данный пользователей согласно предсказанию. Используя эту таблицу, в Яндекс.Аудитории по API создается 10 аудиторий - пять с идентификатором ClientID, пять с CRM идентификаторами (рис. 4).
Готовые аудитории можно использовать в Яндекс.Директ, указывая нужную корректирующую ставку:
например, мы активно боремся за пользователей с предсказанной высокой вероятностью покупку, поэтому мы увеличим ставку по ним на 50%;
клиентам с низкой вероятностью покупки мы, наоборот, будем реже показывать наши объявления, снизив ставку на 30%.
Наша конечная цель - оптимизация использования маркетингового бюджета и улучшение показателей рекламных кампаний, которые выражаются в проценте конверсий, стоимости достижения конверсий, возвратности инвестиций и прибыли.
A/B тестирование и результаты
Мы выдвинули гипотезу, согласно которой наша система сможет увеличить процент конверсий (CR - Conversion Rate), при этом снизив стоимость достижения самой конверсии (CPO - Cost Per Order).
Выстраивание гипотезы вокруг CR и CPO происходит по двум причинам (рис. 5):
определяя уровень готовности пользователя совершить покупку, мы интенсивнее работаем с клиентами, для которых мы предсказываем высокую вероятность покупки, стараясь вернуть их и удержать на сайте (повышая таким образом CR);
для неготовых к покупке клиентов мы значительно снижаем ставки за рекламные объявления (улучшая CPO).
Совместно с ЛитРес и Яндекс.Директ мы провели изолированный A/B тест, в котором
Группа A - рекламная кампания, в которой используется наша система предсказаний;
Группа B - рекламная кампания, в которой работает только автостратегия Яндекс.Директ.
В остальном кампании идентичны друг другу, трафик между ними распределялся поровну. Тестирование проходило на протяжении месяца, всего в него было вовлечено 80 тысяч пользователей.
В результате тестирования мы получили подтверждение нашей гипотезы (рис. 6):
процент конверсий в группе A увеличился на 33% по сравнению с группой B;
стоимость конверсии снизилась на 14,5%.
Иначе говоря, мы смогли добиться того, чтобы больше приходящих по рекламным каналам людей совершали покупки, при том, что привлечение клиентов стало дешевле.
Заключение
Использование машинного обучения в интернет-маркетинге позволяет значительно увеличить эффективность рекламных кампаний. Используя данные о действиях пользователя на сайте, регулярно обновляя модель и предсказания, мы увеличили процент конверсий и снизили их стоимость. Система ежедневно оценивает эффективность работы аудиторий в рекламных кампаниях и корректирует ставки с учетом актуальных показателей. Актуальное изменение корректировок позволяет значительно эффективнее использовать рекламный бюджет и подстраиваться под актуальные тренды в поведении пользователей.
Отдельным достижением является автономность системы - после первичной настройки выгрузка данных, обучение, создание предсказаний и корректировка ставок происходит автоматически по расписанию, что позволяет сильно удешевить сопровождение работы системы.