Крупнейшая digital-премия в Европе

Предиктивная аналитика для ЛитРес

Заказчик: ЛитРес
Исполнитель: «МедиаНация»
Share
Предиктивная аналитика для ЛитРес

Главное о кейсе


Мы предположили, что наша система сможет увеличить процент конверсий (CR - Conversion Rate), при этом снизить стоимость достижения самой конверсии (CPO - Cost Per Order).

Гипотеза вокруг CR и CPO строилась на двух идеях:

1. зная уровень готовности пользователя совершить покупку, мы интенсивнее работаем с клиентами, для которых мы предсказываем высокую вероятность покупки, стараясь вернуть их и удержать на сайте (повышая таким образом CR);
2. для неготовых к покупке клиентов мы значительно снижаем ставки за рекламные объявления (улучшая CPO).

Совместно с ЛитРес и Яндекс.Директ мы провели изолированный A/B-тест, в котором

- Группа A - рекламная кампания, в которой использовались одновременно автостратегия Яндекс.Директа и наша система предсказаний;
- Группа B - рекламная кампания, в которой работала только автостратегия Яндекс.Директ.

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

В результате тестирования мы получили подтверждение нашей гипотезы:

- процент конверсий в группе A увеличился на 33% по сравнению с группой B;
- стоимость конверсии снизилась на 14,5%.

Иначе говоря, мы смогли добиться того, чтобы больше приходящих по рекламным каналам людей совершали покупки, при том, что привлечение клиентов стало дешевле.
--
We assumed that our system could increase the Conversion Rate, while reducing the Cost Per Order.

The hypothesis involving CR and CPO was based on two ideas:

1. knowing the level the user's readiness to make a purchase, we work more intensively with customers for whom we predict a high purchase probability, trying to return and retain them (thus increasing CR);
2. for customers who are not ready to buy, we significantly reduce advertising bids (thus improving CPO).

We conducted an isolated A/B test together with LitRes and Yandex.Direct, in which:

- Group A was a promo campaign that simultaneously used the autostrategy by Yandex.Direct and our prediction system;
- Group B was a promo campaign that only used the autostrategy by Yandex.Direct.

The campaigns were otherwise identical, and traffic was distributed equally between them. Testing took place over a month, involving a total of 80,000 users.

The results corroborated our hypothesis:

- the conversion rate in group A increased by 33% compared to Group B;
- the cost per order decreased by 14.5%.

In other words, we ensured that more people coming through advertising channels made purchases, while attracting customers became cheaper.

Бизнес-задача и ее решение


ЗАДАЧИ:

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

РЕШЕНИЕ:

- Создание потоков данных и их объединение
- Сбор сессий на основе хитов
- Обновление и синхронизация таблиц
- Разработка системы предиктивной аналитики
- Сегментация пользователей на основе вероятности покупки
- Использование сегментов в Яндекс.Директе
- A/B-тестирование и результаты

ЭТАП I: сбор и объединение данных из рекламных и аналитических систем, а также приложений и сайта

Создание потоков данных и их объединение

Прежде всего нам нужно было собрать данные из рекламных и аналитических систем. Потоков по передаче и сбору данных было множество, например, рекламные системы Google Ads и Яндекс.Директ и аналитические системы Google Analytics и Appsflyer.

Нам также нужно было собрать данные из мобильных приложений клиента: два приложения ЛитРес Читай (Andriod и iOS) и два приложения ЛитРес Слушай (Andriod и iOS) и связать их с данными из CRM-системы.

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

1. Импортируем данные по расходам из рекламных кабинетов ЛитРес (Facebook, Google Ads, RTB House, MyTarget, VK, Я.Директ), а также данные по купленным товарам и доходам с них из товарной базы данных (MySQL) с помощью разработанных нами коннекторов в Google BigQuery.

2. Одновременно с импортом данных мы выгружаем хиты, которые собираются в сессии и также попадают в BigQuery.

3. Склеиваем эти данные между собой по общим ключам с помощью специального SQL-запроса, написанного в BigQuery. В результате мы получаем сессии пользователя с его кросс-платформенными переходами, стоимостью его привлечения и доходом с транзакций.

Рисунок 1. Сбор данных

Однако все было не так гладко. В ходе работ мы столкнулись с рядом проблем в передаче и переносе данных. Например, при создании потоков и на этапе передачи данных из Appsflyer в BigQuery, а также при объединении данных с разных серверов в BigQuery. Данные из системы Firebase хранились на американском сервере, а сам проект с таблицами — на европейском. Чтобы обойти ограничения BigQuery при переносе данных, нам потребовалось сделать выгрузку Firebase в наше собственное представление в BQ, и только после этого загрузить их в представление ЛитРес.

Сбор сессий на основе хитов

Для получения данных веб-сессий по пользователям мы разработали уникальный алгоритм, который преобразовывает данные хитов из Google Analytics в сессии с учетом идентификаторов пользователя. Для билдинга сессий мы

1. выгрузили хитовые данные из Google Analytics в промежуточную базу данных.

2. отработали алгоритм, который преобразует хитовые данные в сессионные с учетом идентификаторов пользователя userID, clientID пользователя и даты и времени, когда он был онлайн.

3. выгрузили созданные сессии в СУБД BQ (система управления базой данных BigQuery), где находятся данные из остальных источников.


ЭТАП II: разработка системы предиктивной аналитики

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

Можно выделить основные этапы работы системы:

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

- Дообучение модели - дообучение существующей модели, используя новые данные за один день.

- Создание предсказаний - создание предсказаний о вероятности покупки в течение будущих семи дней для клиентов, которые посещали сайт за последние шесть дней.

- Кластеризация пользователей - определение центра кластеров и разбиение множества пользователей на пять групп на основе вероятности совершения покупки.

- Создание аудиторий по ClientID - создание аудиторий в Яндекс.Аудитории, используя ClientID Яндекс.Метрики как идентификатор.

- Обогащение CRM данными - сопоставление каждому ClientID идентификатор пользователя на сайте (UserID), номер мобильного телефона и адрес электронной почты в хешированном виде, если таковые имеются.

- Создание аудиторий по CRM данным - использование UserID, номер мобильного телефона и адрес электронной почты в качестве идентификаторов для создания аудиторий в Яндекс.Аудитории.

- Корректировка ставок - автоматическое изменение величины корректирующей ставки для каждой из аудиторий на основе показателей эффективности аудиторий.

Рисунок 2. Схема работы системы предсказаний

Сегментация пользователей на основе вероятности покупки

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

- очень высокая вероятность покупки;
- высокая вероятность покупки;
- средняя вероятность покупки;
- низкая вероятность покупки;
- околонулевая вероятность покупки.

Такое количество групп обусловлено двумя факторами:

1. удобство работы и размер отдельно взятой группы: с одной стороны, такие системы, как Яндекс.Аудитории, имеют ограничение на минимальное количество людей в одной группе, а с другой — там, где с созданными сегментами нужно работать вручную, будет проблематично оперировать, например, сразу пятьюдесятью группами;
2. наилучшее разбиение пользователей по группам: чем меньше вероятность каждого из пользователей в группе отклоняется от среднего значения вероятности в группе, тем более однородны пользователи в группе, тем лучше выполнено разбиение.

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

Использование сегментов в Яндекс.Директ

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

Существует множество сценариев использования этих данных — ремаркетинг на поиске и рекламных системах, push-уведомления, email-рассылки, специальные предложения на веб-сайте или в приложении, персональные скидки и обзвоны и другое специфическое для каждого бизнеса применение.

Например, мы можем использовать предсказания в реальном времени и корректировать стоимость товара или услуги в зависимости от вероятности покупки, или создать аудитории в Яндекс.Аудитории, Google Analytics или VK и использовать их в таргетированной рекламе, варьируя величину корректирующей ставки таким образом, чтобы добиться поставленных целей, которыми могут быть:

- Увеличение количества и/или доли конверсий.
- Увеличение эффективности рекламных вложений.
- Увеличение прибыли.

Во время работы с ЛитРес мы использовали предсказания для ремаркетинга в Яндекс.Директе. Опираясь на таблицу с сегментами, мы создавали в Яндекс.Аудитории по API 10 аудиторий - пять с идентификатором ClientID, пять с CRM идентификаторами.

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

- например, если мы активно боремся за пользователей с предсказанной высокой вероятностью покупки, то увеличим ставку по ним на 50%;
- клиентам с низкой вероятностью покупки мы, наоборот, будем реже показывать наши объявления, снизив ставку на 30%.
--
GOALS:

- Create an analytical platform that would collect great amounts of data from the client's own customer communication channels and advertising systems, and then combine them for subsequent marketing analysis.
- Develop a user purchase predicting system that will boost Internet marketing effectiveness.

SOLUTION:

- Creating data streams and combining them
- Collecting sessions based on hits
- Updating and syncing tables
- Developing a predictive analytics system
- Segmenting users based on purchase probability
- Using segmentation in Yandex.Direct
- Running A/B tests and obtaining results


PHASE I: collecting and combining data from advertising and analytical systems, as well as from apps and the website

Creating and combining data streams

First of all, we needed to collect data from advertising and analytical systems. There were multiple data transfer and collection flows, e.g., the Google Ads and Yandex.Direct advertising systems, as well as the Google Analytics and Appsflyer analytics systems.

We also needed to collect data from the client's mobile apps: two LitRes Read! apps (Android and iOS) and two LitRes Listen! apps (Android and iOS), and also link them to data from the CRM system.

The data flow system we envisioned implementing can be represented as the following steps:

1. Import data on expenses from LitRes's advertising profiles (Facebook, Google Ads, RTB House, myTarget, VK, Yandex.Direct), as well as data on the purchased products and resulting revenue, from the MySQL product database using the connectors developed by us in Google BigQuery.

2. At the same time as importing data, load hits, combine them into sessions and also put them into BigQuery.

3. Combine all the data by shared keys using a special SQL query written in BigQuery. The result would be user sessions with cross-platform traffic, the cost of attracting them, and transaction revenue.

Figure 1. Data collection

However, things were not perfectly smooth. While on the job, we encountered certain issues in transmitting and transferring data - for example, when creating streams and at the stage of transferring data from Appsflyer to BigQuery, as well as when combining data from different servers in BigQuery. Data from the Firebase system was stored on a US-based server, and the project itself, complete with tables, on a European one. In a bid to bypass BigQuery's limitations when transferring data, we needed to upload Firebase to our own BQ view; only then could we upload them to the LitRes view.

Collecting sessions based on hits

We developed a unique algorithm to get web session data by users. It converts data in hits from Google Analytics into user ID-based sessions. To set up session building, we:

1. uploaded the hit data from Google Analytics to an intermediate database.

2. worked out an algorithm to convert hit data into session data, accounting for user ID and ClientID, as well as the date and time when the user was online.

3. uploaded the created sessions to the BigQuery database management system, where data from other sources is stored.


PHASE II: developing predictive analytics

The predictive analytics system we developed consists of a data processing pipeline, machine learning modules, and interaction with advertising systems.

Here are the main stages of system operation:

- Data loading: preprocessing data with user sessions and uploading the resulting sample from BigQuery to the server running the ML model.

- Model retraining: retraining an existing model using new data in just one day.

- Making predictions about the purchase probability over the next seven days for customers who have visited the website in the previous six days.

- User clustering: defining the cluster hub and splitting the array of users into five groups based on the purchase probability.

- Creating audiences in Yandex.Audience using the Yandex.Metrica ClientID.

- CRM data enrichment: mapping the website user ID, mobile phone number and email address in hashed form, if available, to each ClientID.

- Creating audiences based on CRM data: using UserID, mobile phone number and email address as IDs for creating audiences in Yandex.Audience.

- Bid adjustment: automatic adjustment of the correction bid value for each of the audiences based on audience performance indicators.

Figure 2. Prediction system operation scheme

Segmenting users based on purchase probability

A prediction was made for each user, and a group was matched to them depending on the estimated purchase probability. There are a total of five groups:

- very high purchase probability;
- high purchase probability;
- average purchase probability;
- low purchase probability;
- near-zero purchase probability.

This number of groups owes to two factors:

1. ease of use and size of a single group: on the one hand, systems such as Yandex.Audience have a limit on the minimum number of people per group; on the other hand, if you need to do manual work with the created segments, it will be problematic to operate something like fifty groups at once;
2. best partitioning of users into groups: the less the probability of each user deviates from the average probability value in the group, the more homogeneous the users in the group are, and the better the partitioning is.

Each person's intent to make a purchase is determined by their behavioral factors. On top of the obvious indicators such as the viewing depth or the number of sessions per month, there are hundreds of other parameters to help identify the user's true plans, even if they don't yet know about them. What actions the user performs, in what order and at what speed, and also how regularly - all this helps us determine the user's behavioral pattern. User behavior is represented as a sequence of numbers in a huge space of features, each affecting the final assessment of the user's readiness to perform the action we are interested in.

Using segments in Yandex.Direct

Once the preprocessed data has been uploaded to the server, predictions have been made and split into segments, we get a table with each row containing client IDs and the segment this user belongs to according to the prediction.

There are countless scenarios for using this data, including remarketing in search and advertising systems, push notifications, newsletters, special offers on the website or in the app, personal discounts and targeted calls, as well as other business-specific applications.

For example, we can use real-time predictions and adjust the price of a product or service depending on the purchase probability, or create audiences in Yandex.Audience, Google Analytics, or VK and use them in targeted advertising, adjusting the correction bid to achieve our goals, which may include:

- increasing the number and/or share of conversions;
- increasing the advertising investment effectiveness;
- increasing profits.

While cooperating with LitRes, we used predictions for remarketing in Yandex.Direct. Based on the table with segmentation, we used the API to create 10 audiences in Yandex.Audience: five with the ClientID and five with CRM IDs.

A different adjustment bid was used for each segment, which helped spend the budget efficiently and increase the conversion rate:

- if we are actively fighting for users with a predicted high purchase probability, we can increase the bid on them by 50%;
- vice versa, we will show our ads less often to customers with a low purchase probability, reducing the bid by 30%.

Прочая информация о кейсе


На базе системы сквозной аналитики StreamMyData (проект агентства MediaNation) мы создали “волшебную кнопку”, которая автоматически и на постоянной основе может увеличивать эффективность рекламной кампании. Речь о системе, которая способна достоверно предсказывать вероятность совершения покупки каждым из посетителей интернет-ресурса. При этом горизонт предсказания будет связан со сроком принятия решения о покупке, который характерен для конкретного бизнеса.

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

Недавно мы протестировали ее эффективность в Яндекс.Директе. Тест показал, что использование нашего предикта увеличивает число конверсий в ремаркетинге на 33 % и снижает их стоимость на 15 %.

О КЛИЕНТЕ:

ЛитРес - сервис электронных книг №1 в России. Ежемесячная аудитория сервисов компании составляет 12,5 млн человек, которые скачивают более 1,5 млн книг в месяц. Компания имеет 25 приложений для чтения и прослушивания электронных книг, в т.ч. «ЛитРес: Читай!» и «ЛитРес: Слушай!» для мобильных платформ iOS, Android, Windows Phone 8, Windows 8 и Samsung Smart TV.
--
We used the StreamMyData end-to-end analytics system (a project by MediaNation agency) to create a “magic button” that can increase the effectiveness of an ad campaign, automatically and permanently. This system can reliably predict the probability of making a purchase by each of an Internet resource's users. Also, the prediction horizon will be associated with the purchase decision period specific to a particular business.

Our prediction system is based on the principle of segmenting users by the degree of purchase probability: from near-zero to very high. This helps approach working with each group individually. For example, users with high purchase probability are easier to entice through displaying ads or offering a tempting discount.

Recently, we tested its effectiveness in Yandex. Direct. The test showed that our predictor boosted the number of remarketing conversions by 33% and reduced their cost by 15%.

ABOUT THE CLIENT:

LitRes is the No. 1 ebook service in Russia. The monthly audience of the company's services is 12.5 million people, who download over 1.5 million books per month. The company runs 25 apps for reading and listening to ebooks. This includes LitRes: Read! and LitRes: Listen! for iOS, Android, Windows Phone 8, Windows 8 and Samsung Smart TV.

Скриншоты

Комментарий заказчика

"Коллеги из Медианации показали высокий профессионализм и отличный результат в этом сложном проекте. Благодаря таким инновационным решениям мы не только сохраняем лидирующие позиции на рынке, но и показываем существенный рост показателей в Performance-маркетинге", - Роман Митрофанов, руководитель отдела привлечения ЛитРес.
--
"Our colleagues from MediaNation showed high professionalism and excellent results when implementing this complex project. These innovative solutions help us maintain a leading position in the market, and also show a significant increase in Performance marketing indicators," - Roman Mitrofanov, Head of the LitRes Attraction Department.
Share
Серебро
• Лучшая работа с Big Data
Tagline Awards 2022

Номинации

Performance marketing → Работа с Big Data

Дата запуска

21 февраля 2022 года

Ориентировочный бюджет

200 000 ₽

Авторы

Александр Вахтин, аналитик больших данных MediaNation
Иван Барченков, коммерческий директор MediaNation, руководитель проекта StreamMyData

Ссылки

medianation.ru