Проиллюстрировано данными Starbucks

Введение

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

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

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

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

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

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

О данных

Раз в несколько дней Starbucks рассылает предложение пользователям мобильного приложения. Предложение может быть просто рекламой напитка или реальным предложением, таким как скидка или BOGO (купи один напиток и получи один бесплатно). Данные содержат три набора данных, включая данные портфолио, профиля и стенограммы. Эти данные имитируют поведение клиентов в мобильном приложении Starbucks Rewards.

портфолио: информация о предложениях

  • id (string) — id оффера
  • offer_type (string) — тип предложения т.е. BOGO, скидка, информационное
  • трудность (целое число) — минимальные затраты, необходимые для выполнения предложения.
  • вознаграждение (int) — вознаграждение за выполнение предложения
  • duration (int) — время открытия оффера, в днях
  • каналы (список строк)

профиль: демографическая информация о клиентах

  • age (int) — возраст клиента
  • стал_member_on (целое число) — дата, когда клиент создал учетную запись приложения.
  • гендер (str) — пол клиента (обратите внимание, что некоторые записи содержат «O» вместо M или F)
  • id (str) — идентификатор клиента
  • доход (float) — доход клиента

расшифровка: данные транзакции

  • event (str) — описание записи (т. е. транзакция, полученное предложение, просмотренное предложение и т. д.)
  • person (str) — идентификатор клиента
  • time (int) — время в часах с момента начала теста. Данные начинаются в момент времени t=0
  • value — (dict of strings) — либо идентификатор предложения, либо сумма транзакции в зависимости от записи

Подготовка данных

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

Прежде всего, давайте посмотрим, как выглядят данные.

Данные портфеля:

Данные профиля:

Данные транскрипта:

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

  1. Столбец «became_member_on» в данных профиля необходимо преобразовать в более читаемый формат времени. В этом случае я бы сохранил данные только за год, поскольку подробные данные о дате и месяце не дают мне много интерпретируемой информации.
  2. Столбец «значение» в данных стенограммы содержит словари, поэтому я бы сначала преобразовал содержимое словарей в строковые данные, а затем разделил ключи и значения словарей на два разных столбца.
  3. Столбцы идентификаторов в трех наборах данных («человек» в случае стенограммы) необходимо преобразовать в более читаемый формат. В частности, я сопоставлю столбец «id» в данных портфолио со столбцом «offer_id», столбец «id» в данных профиля и столбец «человек» в данных стенограммы со столбцом «customer_id» соответственно.
  4. Столбец «каналы» в данных портфолио нужно почистить, преобразовав списки каналов в отдельные столбцы. Я создам четыре столбца для каждого канала, и значения для каждого канала будут равны 1, если канал находится в столбце «каналы», и 0 в противном случае.
  5. Точно так же столбец «событие» в данных расшифровки необходимо разделить на разные столбцы, содержащие каждое из событий, включая «предложение получено», «предложение просмотрено», «предложение завершено» и «транзакция». Я бы создал фиктивные переменные из каждого столбца «событие».
  6. Поскольку только те клиенты, которые завершили весь процесс offer_received -> offer_viewed -> transaction -> offer_completed, считаются ответившими клиентами, я бы создал новый столбец «ответил», содержащий 0, если клиент не ответил, и 1, если клиент ответил .
  7. После очистки данных я объединю данные стенограммы с данными профиля по ключу «customer_id» и объединим полученные данные с данными профиля по ключу «offer_id».
  8. Отбросьте строки с возрастом 118 лет, но без записи о поле или доходе, потому что возраст может быть фальшивым, а пол, а также доход являются важными демографическими показателями для нашего анализа.
  9. Наконец, я удаляю все повторяющиеся строки и экспортирую очищенные данные на свой локальный диск для использования в будущем. Очищенные данные выглядят так:

Исследование данных и результаты

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

Отсутствуют данные

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

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

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

Распределение некоторых демографических характеристик клиентов

Большинству клиентов было от 35 до 75 лет, основной диапазон доходов клиентов находился в пределах 40-75 тысяч долларов, и большинство клиентов в этом эксперименте стали участниками после 2015 года.

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

Кто чаще отвечал?

Пол клиентов, год присоединения (стал_членом_на), доход и возраст, по-видимому, влияли на уровень ответов, хотя примечательно, что разница в среднем возрасте между ответившими и не ответившими группами составляла всего три года.

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

Кроме того, социальные сети и веб-сайты показали более высокий уровень ответов (73% и 70% соответственно), чем мобильные каналы и каналы электронной почты (66% и 65% соответственно).

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

Какие типы предложений вызвали наибольший отклик в каждой группе клиентов?

  • Пол

Покупатели-женщины и клиенты категории «О» чаще реагировали, чем клиенты-мужчины, как на предложения BOGO, так и на предложения скидок, и эта тенденция сильнее проявляется в предложениях BOGO.

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

Информационные предложения, похоже, не были связаны с какими-либо ответами, что более или менее неожиданно, но все же отчасти понятно.

  • Год вступления

Предложения Bogo, по-видимому, имели более высокий процент ответов от клиентов, которые стали участниками в 2015–2017 годах, чем те, кто стал участником в другие годы.

С другой стороны, предложения скидок имели относительно схожий процент ответов от клиентов, которые стали участниками в течение 2013–2017 годов, при этом клиенты из 2018 года имели гораздо более низкий уровень ответов по сравнению с клиентами из других лет.

  • Возраст и доход

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

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

Какие каналы получили наибольший отклик в каждой группе клиентов?

  • Пол

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

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

  • Год вступления

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

  • Возраст и доход

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

Кто с большей вероятностью потратит больше?

В целом, клиенты, которые ответили на предложения, в среднем тратили больше денег (около 17 долларов), чем те, кто не ответил (около 11 долларов), что говорит о том, что действительно важно принимать меры для повышения доли откликов.

  • Пол

Больше всего тратили клиенты-женщины, за ними следовали клиенты с буквой «О» и клиенты-мужчины.

  • Год вступления

Клиенты, которые стали участниками в 2015–2018 годах, по-видимому, тратили больше, чем те, кто стал участниками до 2015 года.

  • Типы предложений

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

  • Каналы

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

  • Возраст и доход

Возраст, похоже, не имел сильной корреляции с суммой потраченных денег, хотя клиенты в возрасте от 55 до 65 лет тратили больше всего, а те, кто моложе 40 лет, тратили меньше остальных. Что касается доходов, то тенденция к тому, что люди старшего возраста тратят больше, чем более молодые клиенты, кажется достаточно сильной.

Моделирование и оценка данных

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

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

Чтобы улучшить производительность модели, я также буду использовать GridSearchCV в процессе.

Конвейер, связывающий PCA и SGDClassifier

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

Использование поиска по сетке немного увеличило средневзвешенную точность модели с 0,58 до 0,59, что на самом деле ненамного лучше.

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

Конвейер, объединяющий PCA и LogisticRegression

Благодаря использованию LogisticRegression производительность модели увеличилась, а средневзвешенная точность увеличилась с 0,59 до 0,84. Я буду использовать GridSearchCV, чтобы попытаться еще больше улучшить производительность модели.

При использовании LogisticRegression в сочетании с GridSearchCV точность модели увеличилась с 0,58 до 0,86, что является значительным улучшением. Это показывает, насколько важно правильно выбирать алгоритмы моделирования.

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

Выводы

Для увеличения выручки компании имеет смысл повышать уровень отклика, потому что люди, откликнувшиеся на предложения, действительно тратили больше, чем те, кто не ответил.

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

Демографические характеристики

Компания может захотеть в первую очередь сосредоточиться на женщинах-клиентах и ​​людях с более высоким доходом. Они более отзывчивы на предложения, а также тратят больше, чем другие.

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

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

Предлагайте стратегии

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

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

Исходный код для анализа данных доступен на моем GitHub здесь.