Не существует 100% точного способа предсказать поведение пользователя, но мы приближаемся к нему как можно ближе, продолжая обновлять наш процесс. Мы фокусируемся на оценке продолжительности жизни (LTV), общей денежной стоимости игрока в течение определенного периода времени после установки, который обычно называют «окупаемостью». LTV является центральным фактором при принятии многих решений. Например, он определяет, сколько маркетинговая команда может потратить на привлечение новых пользователей. Он также служит способом измерения общей производительности каждой мобильной игры и помогает командам определять подмножества пользователей, которым может потребоваться особое внимание.

Получение ранней оценки LTV очень важно для нас, чтобы быстро реагировать на изменения в поведении пользователей, а не ждать несколько месяцев, пока не истечет полное окно окупаемости. Мы достигаем этого, создавая модели машинного обучения для каждой из наших игр. Один из наших лучших хитов, War Dragons, имеет модель LTV, которую мы значительно улучшили. Мы подробно рассмотрим этот процесс для тех, кто может настраивать свою собственную стратегию LTV.

Модель

В целях иллюстрации предположим, что окно окупаемости «Боевых драконов» составляет 180 дней. Если мы хотим сделать прогноз LTV через семь дней после того, как пользователь установит игру, то проблему можно смоделировать в виде следующего уравнения:

X - это вектор характеристик, который суммирует поведение пользователя в течение окна наблюдения (с 0 по 7 день), а целевая переменная - это совокупный доход, который пользователь генерирует в течение окна прогноза (с 8 по 180 день).

Проблемы

Когда дело доходит до прогнозирования LTV для War Dragons, есть три основных ограничения.

  1. Этот процесс требует, чтобы мы профилировали поведение пользователя в небольшом окне наблюдения, а затем делали прогнозы на протяжении всего жизненного цикла пользователя. Это оставляет нам возможность делать долгосрочные прогнозы на основе краткосрочных данных.
  2. Бесплатные игры получают большую часть своего дохода от небольшой части пользователей. Это часто приводит к чрезвычайно асимметричному распределению LTV с высокой дисперсией.
  3. Мы узнаем целевую переменную только через 180 дней после установки, поэтому наша модель LTV всегда будет устаревшей как минимум через шесть месяцев.

Базовая эффективность

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

Первоначальная модель была отличным началом, но вскоре мы стали недовольны систематическим завышением прогнозов на 14%. По прошествии года мы отправились в путешествие, чтобы улучшить его.

Улучшения модели

Функциональная инженерия

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

Поскольку короткое окно наблюдения предоставляет такие ограниченные данные, мы решили, что эффективность разработки функций сделала его лучшим способом извлечения характеристик поведения игрока. Затем мы разделили эти характеристики по трем параметрам: удержание, монетизация и вовлеченность / социальное взаимодействие. Мы предположили, что модель также выиграет от дополнительной информации в этих сферах, чтобы фиксировать прогресс пользователей. Итак, мы добавили больше динамических функций, которые будут учитывать изменения в поведении игрока с течением времени. Вот некоторые примеры:

  • Градиент ежедневных покупок: тратит ли этот пользователь больше или меньше с течением времени?
  • Стандартное отклонение количества ежедневных сеансов: этот пользователь входит в систему каждый день и играет по привычке, или он играет только во время события?

Эти характеристики оказались сильными индикаторами LTV и значительно улучшили характеристики модели.

Альтернативы функции потерь

По умолчанию модель была обучена минимизировать среднеквадратичную ошибку (потери L2), которая представляет собой среднее значение квадрата разницы между целью и прогнозом. Этот тип модели чувствителен к выбросам. К сожалению, природа бесплатных игр, таких как War Dragons, делает их распределение LTV сильно смещенным в сторону тех, кто тратит много денег. Это особенно проблематично для моделей с повышением градиента, поскольку они строят деревья на основе предыдущих ошибок и поэтому уделяют непропорционально много внимания выбросам.

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

Найти золотую середину, которая уравновешивает типичных пользователей и выбросов, может быть непросто. На практике речь всегда идет о бизнес-цели. L2 выигрывает, когда компания намеревается набрать больше тех, кто тратит больше денег, тогда как L1 предпочтительнее, когда модель используется для точно настроенных маркетинговых кампаний, которые точно нацелены на определенные группы пользователей. К счастью, есть функция потерь, сочетающая в себе лучшие свойства обоих: Huber Loss. Он квадратичный (L2) для меньших ошибок и линейный (L1) в противном случае. Выбирая параметр δ, соответствующий бизнес-модели, модель может поддерживать устойчивость к большим остаткам и быть дифференцируемой как минимум.

Обновленная производительность

Внедрив указанные выше изменения в модель, мы смогли улучшить ее производительность примерно на 20%.

Еще кое-что…

Наша работа не была выполнена после того, как мы запустили новую модель в производство. Следует помнить еще о том, что мобильные игры развиваются очень быстро. Поведение пользователей, статистические свойства LTV и любые скрытые в нем отношения могут со временем меняться из-за обновлений контента, внутриигровых событий, рыночной конкуренции и т. Д. Мы решаем эту проблему, внимательно отслеживая производительность модели и регулярно обновляя ее, чтобы включить в нее больше всего. последние исторические данные и лучше всего фиксируют новые отношения. Мы обнаружили, что ежемесячное обновление модели может улучшить ее производительность примерно на 3%.

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

Закрытие

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

Мы надеемся, что вы нашли это проницательным! Если вы хотите узнать больше о том, чем мы занимаемся в Pocket Gems, взгляните на некоторые из наших других сообщений в блоге, или, если вы хотите присоединиться к Pocket Gems, мы нанимаем!