Решение для предиктивной аналитики AppsFlyer

Автор: Michel Hayet
Построение решения предиктивной аналитики

Формула пожизненной ценности (LTV)

Создание решения с использованием существующих активов

Валидация процесса

После того как мы с дизайн партнерами проверили оптимальность выбранных нами точек данных для наилучшего описания LTV пользователя, мы проверили их распределение в выбранном датасете.
Распределение функций или целей в наборе данных имеет большое значение для точного машинного обучения.
Работа с неполным набором данных, где почти все «цели» распределены вокруг одной и той же точки, не даст хороших результатов.
Например, если разработчик приложения сообщает об уровне прогресса, только, когда пользователь достигает уровня 500, но по факту 99,9% всех пользователей приложения никогда не достигнут этого уровня, мы получим распределение функций / целей, которые невозможно будет использовать для прогнозирования вовлеченности.

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

Убедившись в том, что процесс, который мы создали для преобразования сырых данных клиента в компоненты LTV, которые мы хотим спрогнозировать, работает хорошо, мы сосредоточились на том, чтобы проверить, что балльная система, которую мы хотим использовать, подходит для нашего случая, а именно, что эта система точно описывает анализируемые данные (с точки зрения допустимого отклоненияи распределения), и может быть наиболее полезной для наших клиентов для принятия оптимальных решений по UA.

Stanine scoring distribution
Stanine scoring distribution

Мы решили использовать систему Станайн с оценками по шкале от 1 до 9.

В некоторых случаях, если распределение данных было не «абсолютно нормальным», мы использовали преобразование Бокса-Кокса, чтобы перераспределить данные ближе к нормальному графику. Зависимая от времени природа LTV подтолкнула нас к гипотезе о том, что наилучшие результаты мы получим в решении на основе Рекуррентной нейронной сети (RNN). 

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

Построение продукта

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

 

example of how Amazon SageMaker

“ Это отличный пример того, как можно использовать Amazon SageMaker для упрощения и ускорения масштабной разработки продуктов, основанных на машинном обучениии. Amazon SageMaker предоставил AppsFlyer гибкость, позволяющую внедрять собственные запатентованные алгоритмы машинного обучения и при этом пользоваться преимуществами управляемого сервиса. SageMaker используется для обучения, оптимизации и развертывания нескольких моделей машинного обучения масштабируемым, автоматизированным и экономичным способом. Кроме того, благодаря использованию многомодельных конечных точек AppsFlyer удалось снизить нагрузку на организацию развертывания и обновления нескольких моделей, просто скопировав их в S3”.

Orit Alul and Chaitanya Hazarey, AWS Solutions Architects

Мы также приняли решение  использовать сервисы AWS, такие, как Lambda, SQS и DynamoDB, чтобы ускорить процесс разработки, продолжая при этом увеличивать необходимые масштабируемость и стабильность продукта.

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

Затем данные события загружаются в функцию Lambda, преобразуются для машинного обучения и отправляются в Sagemaker для составления вывода. После получения результат сохраняется в другой таблице DynamoDB. Этот процесс генерирует баллы пользователей, которые могут запрашиваться с SDK клиента как значения конверсии SKAdNetwork в любое время, и часто обновляются с течением времени для достижения максимальной точности прогнозов.

Обучение модели

 Amazon sagemarker тренинг с

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

Точность модели проверяется с помощью нескольких статистических данных; MAE – средняя абсолютная ошибка модели (по категории), RMSE – среднеквадратичная ошибка и Каппа Коэна для обеспечения достоверности и целостности модели.

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

Predict рассчитывает оценку пользователя (user’s benefit score) на основе 3 параметров: вовлеченности, удержания и монетизации. Эта оценка (benefit score) рассчитывается в сравнении со стоимостью кампании.

ежедневная переоценка LTV

Процесс переоценки баллов постоянно повторяется в течение окна измерения пользователя (обычно 24 часа) с целью получения точного балла. 

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

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

Michel Hayet

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

Follow Michel Hayet

Background
array(4) {
  ["title"]=>
  string(60) "Готовы сделать правильный выбор?"
  ["buttons"]=>
  array(2) {
    ["button1"]=>
    array(7) {
      ["enabled"]=>
      bool(true)
      ["style"]=>
      string(34) "btn btn-primary btn-primary--white"
      ["size"]=>
      string(6) "btn-lg"
      ["text"]=>
      string(25) "Заказать демо"
      ["url"]=>
      string(40) "https://www.appsflyer.com/ru/start/demo/"
      ["target"]=>
      string(5) "_self"
      ["id"]=>
      string(0) ""
    }
    ["button2"]=>
    array(7) {
      ["enabled"]=>
      bool(true)
      ["style"]=>
      string(39) "btn btn-text btn-arrow btn-arrow--white"
      ["size"]=>
      string(3) "btn"
      ["text"]=>
      string(43) "Бесплатная регистрация"
      ["url"]=>
      string(35) "https://www.appsflyer.com/ru/start/"
      ["target"]=>
      string(5) "_self"
      ["id"]=>
      string(0) ""
    }
  }
  ["image"]=>
  array(24) {
    ["ID"]=>
    int(20792)
    ["id"]=>
    int(20792)
    ["title"]=>
    string(11) "img-cta-ziv"
    ["filename"]=>
    string(15) "img-cta-ziv.svg"
    ["filesize"]=>
    int(12525)
    ["url"]=>
    string(68) "https://www.appsflyer.com/wp-content/uploads/2021/04/img-cta-ziv.svg"
    ["link"]=>
    string(70) "https://www.appsflyer.com/ru/trust/privacy/attachment/img-cta-ziv-3-2/"
    ["alt"]=>
    string(4) "blog"
    ["author"]=>
    string(1) "3"
    ["description"]=>
    string(0) ""
    ["caption"]=>
    string(0) ""
    ["name"]=>
    string(15) "img-cta-ziv-3-2"
    ["status"]=>
    string(7) "inherit"
    ["uploaded_to"]=>
    int(40380)
    ["date"]=>
    string(19) "2021-04-27 14:36:47"
    ["modified"]=>
    string(19) "2022-10-02 14:16:22"
    ["menu_order"]=>
    int(0)
    ["mime_type"]=>
    string(13) "image/svg+xml"
    ["type"]=>
    string(5) "image"
    ["subtype"]=>
    string(7) "svg+xml"
    ["icon"]=>
    string(62) "https://www.appsflyer.com/wp-includes/images/media/default.png"
    ["width"]=>
    int(576)
    ["height"]=>
    int(469)
    ["sizes"]=>
    array(18) {
      ["thumbnail"]=>
      string(68) "https://www.appsflyer.com/wp-content/uploads/2021/04/img-cta-ziv.svg"
      ["thumbnail-width"]=>
      int(290)
      ["thumbnail-height"]=>
      int(170)
      ["medium"]=>
      string(68) "https://www.appsflyer.com/wp-content/uploads/2021/04/img-cta-ziv.svg"
      ["medium-width"]=>
      int(300)
      ["medium-height"]=>
      int(300)
      ["medium_large"]=>
      string(68) "https://www.appsflyer.com/wp-content/uploads/2021/04/img-cta-ziv.svg"
      ["medium_large-width"]=>
      int(768)
      ["medium_large-height"]=>
      int(1)
      ["large"]=>
      string(68) "https://www.appsflyer.com/wp-content/uploads/2021/04/img-cta-ziv.svg"
      ["large-width"]=>
      int(1024)
      ["large-height"]=>
      int(1024)
      ["1536x1536"]=>
      string(68) "https://www.appsflyer.com/wp-content/uploads/2021/04/img-cta-ziv.svg"
      ["1536x1536-width"]=>
      int(576)
      ["1536x1536-height"]=>
      int(469)
      ["2048x2048"]=>
      string(68) "https://www.appsflyer.com/wp-content/uploads/2021/04/img-cta-ziv.svg"
      ["2048x2048-width"]=>
      int(576)
      ["2048x2048-height"]=>
      int(469)
    }
  }
  ["section_settings"]=>
  bool(false)
}
Готовы сделать правильный выбор?