Оптимизация времени отправки

Оптимизация отправки в заданное время

Знали ли вы, что оптимизация времени отправки электронной почты может увеличить открытие на 93%? Потрясающе! Или может быть всего 10%. Незначительно более достоверное исследование утверждает, что доставка сообщений в нужное время приводит к открытию на 55%, кликабельности на 30% и конверсии на 13%. Я выберу это увеличение в любой день, если оно окупится.

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

К сожалению, нет способа знать заранее, какие будут результаты оптимизации без правильных данных. Единственный способ получить эти данные – наука!

Наука + Данные = Прибыль

Давайте рассмотрим случай конверсии по электронной почте. Если мы рассматриваем сообщение, отправленное платящим клиентам (нам не важны доставляемость или текст “отправитель”), факторы, которые могут влиять на поведение клиента, выглядят как таблица ниже. Представьте эти пять факторов как переменные в алгоритме, где некоторые термины могут иметь бесконечный ряд возможных значений, и когда мы все их объединяем, мы получаем невозможно сложное множество потенциальных взаимодействий.

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

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

В нашем случае, наилучшее время означает “дает наибольший процент конверсии”.

Примечание: Говоря с нашей стороны, мы называем “временем отправки”. С точки зрения клиента, мы называем “временем доставки”.

Наука!

Посмотрите на приложение электронной почты на своем телефоне и компьютере. Мой мобильный аккаунт Gmail показывает шесть сообщений, прежде чем я прокручиваю, чтобы увидеть остальные (в зависимости от наличия вложений в сообщениях). Версия для компьютера показывает 16 сообщений. В другом мобильном приложении для электронной почты, которое я использую, показывается десять сообщений. Веб-версия электронной почты Office 365 на компьютере также показывает десять.

У нас есть непроверенное предположение, что время отправки/доставки электронного сообщения клиенту окажет влияние на процент конверсии. Другими словами, чем выше сообщение находится в списке непрочитанных сообщений, тем больше шансов его открыть, это критический первый шаг.

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

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

  • Нулевая гипотеза (время отправки не играет роли):

Между процентом конверсии и временем отправки нет связи.

  • Альтернативная гипотеза (время отправки влияет):

Процент конверсии меняется в зависимости от времени, в которое отправляется электронное сообщение.

Процент конверсии – это процент клиентов, которые открывают письмо и переходят по ссылке действия внутри письма.

Нулевая и альтернативная гипотезы связаны с двумя переменными:

  1. Независимая переменная – время отправки электронной почты.
  2. Зависимая переменная – метрика процента конверсии.

Также есть третий набор переменных, которые, если не контролируются тщательно, превратят наш эксперимент в бесполезный.

  • Путающие переменные влияют на зависимые и независимые переменные, вызывая ложную ассоциацию.

В нашем случае, влияющими переменными являются четыре перечисленных ниже:

  1. Сегменты клиентов
  2. Тема письма
  3. Содержание сообщения
  4. Содержание призыва к действию.

Могут быть еще и другие факторы, такие как настольные или мобильные приложения, но мы имеем контроль только над этими четырьмя переменными.

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

Важно: Важно, чтобы ни одна из влияющих переменных не изменялась во время эксперимента.

Эксперимент

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

Как уже упоминалось ранее, наше приложение SaaS позволяет пользователям установить предпочтительное время для доставки электронной почты. Если мы запрашиваем данные о предпочтении, используя местное время пользователя, мы получим что-то похожее на нормальное распределение:

                     Рис. 1 Нормальное распределение предпочитаемого времени доставки по электронной почте; медиана: 0730 местное время.

Согласно данным о предпочтении пользователей, медианное время доставки составляет примерно 7:30. К сожалению, существует такой широкий спектр предпочитаемых времен; пять часов – это большое окно. В идеале, мы хотим отправлять сообщения через один час. Широкое пятичасовое окно означает, что есть пять сегментов клиентов, у каждого из которых есть как минимум 1 000 человек. 

Выбор количества независимых переменных (время отправки) для тестирования сводится к числу новых клиентов, которые могут участвовать в эксперименте. В данном случае мы являемся глобальной компанией с примерно 30 000 новых клиентов в месяц, и обычно требуется целый месяц, прежде чем половина из них выберет предпочитаемое время. Это оставляет нас с 15 000 клиентами, разбросанными по всему миру, примерно половина из них находится в Соединенных Штатах. 7 000 достаточно для тестирования трех независимых переменных. Идеально, минимальное количество клиентов составляет 1 000, чтобы мы могли быть достаточно уверенными в результатах эксперимента.

Важно: Все время указано местное.

Мы отправим сообщения три раза: t1, t2 и t3.

Где:

  1. t1 – это исходное время отправки электронной почты: 0500 местное время (два с половиной часа до пикового времени 0730) местное время.
  2. t2 – через два часа после t1.
  3. t3 – через два часа после t2.

                                         Рис. 2 Три когорты, каждая с двухчасовым окном.

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

Важно: Не разбрасывайте отправку сообщений внутри окна когорты, постарайтесь отправлять все сообщения так, чтобы они доставлялись как можно ближе к каждому из трех времен t1, t2 и t3.

Сегментация клиентов, также известная как инжиниринг когорт

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

  • Пользователи мобильных устройств против десктопных
  • Android против iOS
  • Windows против Mac
  • User-agent
  • Размер организации
  • План подписки на SaaS

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

Запуск через 3, 2, ЗАДЕРЖКА ЗАПУСКА!

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

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

Когда все готово, остается только нажать на большую красную кнопку ПУСК! И собрать данные. Сколько времени нужно подождать?

Исследование и анализ данных

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

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

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

Наконец, возможно, что независимо от времени отправки электронных писем, существует определенный пик в открытии писем около 8:30 утра местного времени или 8:00 или 9:00. YMMV.

Результаты

Наконец, результаты налицо, и у вас есть однозначный результат. Вы ясно видите, что новые клиенты предпочитают читать электронную почту в 8:24 утра. С этого дня вы можете установить время отправки электронной почты по умолчанию для новых клиентов на это время. Ура!

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

Обсуждение/Предположения

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

STO с глубоким обучением

Предположим, что результаты вашего эксперимента не показывают достаточно сильного сигнала по каждой или всем когортам. Или, возможно, во время изучения данных о результатах эксперимента вы заметили сильный сигнал от клиентов в Лос-Анджелесе, которые используют свои iPhone. Они хотели бы проверять свою электронную почту позже утром – может быть после пробежки по пляжу или во время пробок на 405-м шоссе.

Затем вы смотрите на ваши данные от уже существующих клиентов, которые высказали свое предпочтение, также из Лос-Анджелеса и также используют свои iPhone. Эта группа также сильно предпочитает получать электронные письма между 9 и 10 утра. Возможно, в вашей базе данных клиентов есть и другие сильные корреляции, подобные этой – если это так, то, возможно, вы сможете обучить модель машинного обучения, чтобы предсказывать лучшее время для отправки электронных писем новым пользователям. Как это сделать, когда вы раньше никогда не проводили обучение с помощью машинного обучения? Возможно ли это вообще?

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

Два метода: надзорное или безнадзорное обучение

Ядро проблемы состоит в предсказании: какой временной интервал в течение десяти или пятнадцати минут новые пользователи, скорее всего, выберут для отправки? Эту проблему можно решить с помощью двух классов моделей машинного обучения (ML): надзорного и безнадзорного обучения. Может оказаться, что для вас лучшим путем будет использование кластеризации безнадзорного обучения для исследования и понимания ваших данных, а также поиска сходств (кластеров) в ваших данных. Если это так, вы можете использовать кластеризацию для предсказания времени отправки. Или вы можете продолжить исследование пути надзорного обучения. Какое ключевое отличие? Из вашей точки зрения, надзорное обучение требует размеченных данных, а безнадзорное обучение не требует их, поэтому безнадзорное обучение немного проще. К счастью, если данные ваших клиентов включают их предпочитаемое время отправки электронной почты (или аналогичное для вашего случая использования), то вы уже на полпути к обладанию размеченными данными.

Надзорное обучение с XGBoost

XGBoost – отличный выбор для этой проблемы. Существует множество обучающих материалов по реализации на Python и R, прямо связанных с нашей проблемой. Для его использования не требуются массовые вычислительные ресурсы, и нет необходимости в оптимизации параметров или настройке. Идеально подходит для начинающих, как вы и я.

У меня нет места в этой статье, чтобы провести вас через каждый шаг, но я настоятельно рекомендую следующий учебник на Python: Использование XGBoost в Python. Учебник сосредоточен на проблеме предсказания (классификации) цен на бриллианты. Пройдя через это руководство, вам не понадобится больше часа. Как связаны цены на бриллианты с предпочтительным временем доставки электронной почты клиентов? На самом деле, деловая или предметная область не имеет особого значения для модели машинного обучения.

Данные по бриллиантам

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

Ответы находятся в данных – или нет.

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

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

Безнадзорное обучение с использованием *–Кластеризации

Что такое кластеризация? Datacamp.com имеет очень хорошее введение в кластеризацию.

 «Кластеризация – это безнадзорная техника машинного обучения с множеством приложений в распознавании образов, анализе изображений, аналитике клиентов, сегментации рынка, анализе социальных сетей…

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

В основном, выбранный алгоритм вашей модели кластеризации обрабатывает ваши данные и производит набор результатов двумерных векторов: X и Y координаты для каждой записи в данных. Их можно представить в виде таблицы или визуализации, где намного проще увидеть кластеры:

 

Пока начнем с кластеризации K-средних, широко используемого алгоритма для задач кластеризации благодаря его интуитивному пониманию и простоте реализации. Это алгоритм, основанный на центроидах, где пользователь должен определить количество кластеров, которые он хочет создать. Количество кластеров в нашем случае – количество временных слотов отправки, для которых мы хотим получить прогнозы, например, с 7 утра до 10 утра каждые 15 минут, то есть 12 кластеров (K = 12).

Опять же, я настоятельно рекомендую начать с обучающего руководства, а затем перейти к данным вашего клиента. Я настоятельно рекомендую этот учебник с Kaggle: Сегментация клиентов с использованием k-средних.

Когда вы будете готовы использовать свои данные, общий рабочий порядок выглядит следующим образом:

  1. Изучите свои данные и попытайтесь интуитивно определить особенности, которые могут свидетельствовать о взаимосвязи с предпочтительными временами отправки существующих пользователей. Вероятно, у вас будет слишком много данных для существующих и отсутствующих предпочтений.
  1. Повторяйте атрибуты/столбцы/поля до тех пор, пока не появится некоторая кластеризация.
  1. Уточняйте до тех пор, пока не будет достаточное количество кластеров, чтобы охватывать большую часть предпочтительных времен отправки.
  1. Если ваши данные абсолютно не показывают кластеризацию, связанную с временем отправки, у вас есть два варианта:

    1. Попытайтесь определить и собрать данные, которые помогут определить предпочтение или

    2. Примите поражение с достоинством; иногда нулевая гипотеза побеждает.

  2. Если какие-либо из ваших наборов данных показывают кластеры, связанные с временем отправки, вы выиграли золотой билет!

  3. Затем вы должны вывести центроиды кластеров (найти реальный или синтетический вектор в центре каждого кластера времени отправки).

  4. Соберите набор данных новых пользователей, которые не выражали предпочтение времени отправки. Для каждого из новых пользователей вычислите их векторы с использованием того же метода, который использовался для создания векторов кластеров.

  5. Измерьте разницу (косинусную схожесть или евклидово расстояние) между вектором каждого пользователя с пункта №7 и каждым центроидом кластера, и центроид с наименьшей разницей – ваше новое оптимальное время отправки.

  6. В течение следующих нескольких недель проверяйте этот набор новых пользователей, чтобы увидеть, соответствует ли их предпочтительное время отправки предсказанному времени.

  7. Вы также можете протестировать этот метод на наборе существующих данных пользователей с предпочтительными временами отправки.

  8. Если, чудом, все это происходит очень хорошо, значит, вы выиграли золотой билет!

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

Заключение

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

Помимо экономической выгоды, которую вы потенциально можете принести вашей организации, вы сможете добавить новый и важный раздел в свое резюме: создали и провели эксперименты науки о данных в области оптимизации времени отправки сообщений, приведшие к увеличению кэфа конверсии на 27% и увеличению ARR на 4%.

Теперь это стоит приложить усилия. Удачи!