13 сентября 2017
4735
18 мин
3.32
Пример "eSputnik Frequency Recommendation Engine"
В этой статье мы продолжаем разговор о применении искусственного интеллекта в email-маркетинге. Сейчас в центре нашего внимания - система ранжирования пользователей по прогнозируемой активности в прочтениях email-писем (Frequency Recommendation Engine). Эта система разработана и активно используемой в eSputnik Intelligence. Раньше мы уже говорили про:
Сегодня же я хочу рассмотреть простой пример системы FRE, основанной на разработанных нами фильтрах.
Структурные элементы Frequency Recommendation Engine
В основе любой такой системы лежит алгоритм, который классифицирует пользователей по их ожидаемой в будущем активности в прочтении писем, переходах по ссылкам, отписках от рассылок и т. п. Разработка и настройка такого алгоритма - дело тонкое, требующее истории всех предыдущих активностей клиентов той или иной компании за довольно большой промежуток времени. В результате работы алгоритма в диапазоне от 0 до 1 определяется вероятность того, что конкретный пользователь откроет следующий email (перейдет по ссылке) в рамках конкретной массовой рассылки. Как вариант, также можно определять вероятность того, что пользователь не откроет письмо. Оба подхода равновозможны, и мы в дальнейшем будем использовать второй вариант.
Важно отметить, что разные алгоритмы могут прогнозировать разные значения вероятности - это связано с особенностями математических моделей, лежащих в их основе. Поэтому предположим, что все расчеты проводятся в рамках одного и того же алгоритма. В машинном обучении существуют специальные техники объединения разных алгоритмов в один ансамбль, но о том, зачем это нужно, и какие преимущества можно от этого получить, мы поговорим в одной из следующих публикаций.
Простейший вариант использования описанных выше алгоритмов - система бинарного деления пользователей на тех, кто прочтет или не прочтет следующее письмо в рамках конкретной рассылки. Результат - отправляем письма только тем, кто потенциально прочтет. Но такая методика имеет ряд слабых мест:
- во-первых, бинарная классификация реализуется через выбор вероятностного барьера отсечения. Выберем в качестве барьера значение 95%. Тогда всех пользователей, которым алгоритм выдает значение вероятности не ниже 95%, мы отнесем к тем, кто потенциально не прочтет письмо. Но очевидно, что значение вероятностей в 95% и 99,9% принципиально отличаются. В среднем только один из 1000 пользователей, для которых значение вероятности составляет 99,9%, прочтет письмо, тогда как в случае 95% - уже 5 из 100;
- во-вторых, если алгоритм пересчета вероятностей реализован на показателях активности пользователей только в рамках одной рассылки, то необходимо вводить дополнительное ручное управление в процесс фильтрации. Это связано с тем, что, получив для какого-то пользователя значение вероятности (например, в 97%), мы не будем отправлять ему следующее письмо, а значит, у пользователя не будет шанса изменить это значение, прочитав неполученное письмо. Таким образом, придется вводить дополнительные условия фильтрации в ручном режиме;
- в-третьих, отсутствует дополнительная гибкость в управлении психологической усталостью пользователей от рассылки и, соответственно, уменьшается возможность влиять на решение пользователей отписаться от нее или отметить письмо как спам.
Один из возможных подходов в преодолении этих минусов - скоринговая рекомендательная система email-рассылок, в основе которой лежат описанные выше алгоритмы прогнозирования активности пользователей. Основная идея таких систем - регулярно отправлять письма пользователям, которые дают высокий % прочтений и потенциально совершат целевые действия (перейдут по ссылке, купят), и разгрузить тех, кто малоактивен или психологически устал от рассылки.
В основе любой такой FRE, кроме описанных выше алгоритмов машинного обучения по прогнозированию активности пользователей, лежат еще два основных модуля:
- модуль ранжирования пользователей по прогнозируемой активности;
- модуль истории, который содержит всю актуальную информацию о предыдущих рассылках под руководством FRE, а также методы для ее динамического пополнения и обновления.
Не стоит также забывать, что на бэк-энде FRE должна быть специально организованная база данных, которая будет хранить всю необходимую информацию для работы алгоритмов искусственного интеллекта. Один из наиболее простых примеров такой системы мы опишем в следующем разделе.
Эффективный email-маркетинг с eSputnik
Пример eSputnik FRE
Мы рассмотрим вариант FRE, которая может быть реализована для компаний, проводящих ежедневные массовые email-рассылки. Как мы уже описывали выше, работа над такой системой начинается с алгоритма классификации пользователей по их активности. Здесь важно отметить, что каким бы хорошим не был алгоритм машинного обучения, он все равно допускает некоторый процент ошибочных классификаций. Понятно, что чем меньше - тем лучше, но нулевого значения ошибки все равно не будет. С другой стороны, величина ошибки напрямую зависит от выбора барьера отсечения. Также от этого зависит и объем пользователей, которые будут исключаться из рассылки.
Ниже приведены два графика, иллюстрирующие картину, которую можно получить в реальной ситуации.
Первый график показывает зависимость количества пользователей (в процентах от всех подписчиков по одной рассылке), которые могут быть отфильтрованы нашим алгоритмом от вероятности (в процентах) непрочтения очередного письма.
Второй график содержит информацию по ошибкам, которые допускает алгоритм, а именно - процент потерь по переходам.
Из сопоставления этих двух графиков можно получить важную информацию. Из первого можно понять, насколько мы можем сократить трафик по рассылке и, соответственно, сэкономить на этом. Второй показывает, какими при этом будут потенциальные потери по переходам. Зная соответствующий коэффициент конверсии, мы можем оценить возможные потери в денежном эквиваленте. В результате можно подобрать наиболее подходящее значение барьера отсечения, которое будет использоваться в FRE.
Предположим, что было принято решение о том, что оптимально фильтровать до 25% пользователей, совершая при этом ошибку по переходам около 1,5%. В этом случае в качестве барьера отсечения можно выбрать значение 98% (на выборе барьера отсечения мы еще остановимся далее). При этом выбрано дополнительное условие, чтобы каждый пользователь в течение 5 дней получал хотя бы одно письмо по рассылке. Тогда может быть реализована такая FRE:
- Перед запланированной рассылкой на вход фильтра поступает список уникальных идентификаторов (например, электронных адресов) пользователей, которые потенциально удовлетворяют необходимым критериям данной рассылки. Алгоритм проводит необходимые расчеты по каждому пользователю в отдельности и на выходе имеем список идентификаторов с соответствующими расчетными вероятностями не прочтения следующего письма по рассылке.
- Все пользователи, для которых расчетная вероятность ниже 98%, автоматом попадают в список следующей (сегодняшней) рассылки. Таким подписчикам мы рекомендуем отсылать письма по рассылке каждый день.
- Разбиваем интервал вероятностей от 98% до 100% на 4 равные части по 0,5% каждая.
- Пользователям, для которых расчетная вероятность попадает в промежуток от 98% до 98,5%, рекомендуем отправлять письма раз в два дня. Для значений вероятностей от 98,5% до 99% рекомендованная частота отправки писем - раз в три дня и т.д. Таким образом, получаем такую схему рекомендаций, которая базируется на текущем применении фильтра:
Значение вероятности | Дата отправки |
---|---|
ниже 98% | каждый день |
от 98% до 98,5% | раз в два дня |
от 98,5% до 99% | раз в три дня |
от 99% до 99,5% | раз в четыре дня |
99,5% и выше | раз в пять дней |
- Информация выгружается из истории фильтрования для пользователей, по которым проводился текущий анализ. Если в истории нет релевантной информации (для данной группы пользователей расчеты не проводились или информация устарела и неактуальна), то формируем список сегодняшней рассылки из всех анализируемых адресов. В противном случае для каждого пользователя, по которому в истории есть информация о дате получения последнего письма по рассылке, принимается решение о включении его в список сегодняшней рассылки. Например, пусть 10 августа пользователь Х был проанализирован нашим алгоритмом и получено значение вероятности в 99,27%. Предположим, что в истории есть запись для этого пользователя и последнее письмо по рассылке он получил 8 августа. Для значения вероятности 99,27% рекомендованная частота отправки писем -- раз в 4 дня. Так как с 8 августа прошло всего два дня, то этот пользователь не попадет в список сегодняшней рассылки.
- На основе рассчитанных вероятностей и истории фильтрования формируется окончательный список адресов для сегодняшней рассылки.
Все расчеты проводятся в автоматическом режиме. Каждый раз динамически обновляется история расчетов и создается список рассылки на момент расчета из анализируемых адресов. И так каждый день, изо дня в день.
Инновации, модификации, следующие шаги...
Выше была описана схема со статическим выбором барьера отсечения, но можно также реализовать FRE на основе динамического выбора этого показателя. В этом случае ключевым моментом будет выбор процента пользователей, которые должны отфильтровываться каждый день. После того, как задается определенное значение (в нашем примере - 25%), каждый раз при пересчете вероятностей подбирается значение барьера так, чтобы именно 25% анализируемых пользователей отфильтровывались, с учетом всей истории предыдущих расчетов. Разбивка пользователей по категориям также может быть реализована в динамическом ключе, если задать изначально процент пользователей, которые должны попасть в ту или иную категорию по дате рассылки.