Starbucks Corporation — американская кофейная компания и сети кофеен. Starbucks была основана в Сиэтле, штат Вашингтон, в 1971 году. По состоянию на начало 2019 года компания управляет более чем 30 000 точек по всему миру. Starbucks называют главным представителем кофе второй волны — ретроспективно названного движения, которое популяризировало кофе кустарного производства, особенно кофе темной обжарки.

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

В этом посте мы обсудим различные предложения, которые Starbucks использует для целевых клиентов, а также подробно обсудим их эффективность. Этот пост служит окончательным представлением программы Udacity Data Science Nano Degree Program с предоставленным набором данных, который имитирует поведение клиентов в мобильном приложении Starbucks Rewards. Раз в несколько дней Starbucks рассылает предложение пользователям мобильного приложения. Предложение может быть просто рекламой напитка или реальным предложением, таким как скидка или BOGO (купите один, получите второй бесплатно). Некоторые пользователи могут не получать никаких предложений в течение определенных недель.

Набор данных Предоставляется

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

  • Portugal.json — содержит идентификаторы предложений и метаданные о каждом предложении (длительность, тип и т. д.).
  • profile.json — демографические данные по каждому клиенту
  • расшифровка.json — записи о транзакциях, полученных предложениях, просмотренных предложениях и завершенных предложениях.

Бизнес-понимание и постановка проблемы

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

В этом посте мы постараемся ответить на два основных вопроса:

1) Какое предложение имеет наибольшую прибыль? Какое предложение можно рекомендовать в целом?

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

Упомянутый ниже подход используется для сбора информации / ответов на вышеупомянутые вопросы.

  1. Очистка и обработка данных. Этот шаг помогает обработать любые отсутствующие значения или выбросы, присутствующие в наборе данных. Кроме того, обработка поможет нам преобразовать данные таким образом, чтобы лучше понять данные.
  2. Понимание и исследование данных. Понимание распределения данных и выявление любых отклонений. Это поможет разработать гипотезу и глубже понять данные.
  3. Моделирование и оценка.Для этого анализа я использовал алгоритм Funk SVD, так как он хорошо работает с разреженными матрицами. Соответствующие меры оценки будут использоваться для определения наилучшего набора скрытых переменных.
  4. Аналитика и рекомендации.Определите любые интересные тенденции или закономерности на основе анализа и дайте окончательные рекомендации.

1 . Очистка и обработка данных:

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

Данные профиля требовали некоторой очистки, поскольку они содержали значение NaN. Для всех мест, где пол был NaN, возраст был отмечен как 118. Все записи со значениями NaN были удалены — это означало удаление 2175 пациентов из набора данных профиля. Для набора данных «Предложение» были применены преобразования, чтобы удалить чистые транзакции, оставив только предложения для анализа.

2. Понимание и исследование данных

Для понимания распределения данных было построено несколько графиков.

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

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

Распределение доходов предполагает, что большинство клиентов имеют доход ниже 80 000 долларов США, и показывает тенденцию к снижению к концу распределения. Это также может отражать возрастное распределение, так как большое количество клиентов старше 65 лет. Если мы посмотрим на группу доходов по полу, то увидим, что большинство мужчин имеют доход менее 80 тысяч долларов, тогда как для женщин он более сбалансирован.

3. Моделирование и оценка: для получения информации о рекомендациях использовалась совместная фильтрация с использованием Funk SVD.

Весь процесс состоит из 2 основных этапов.

  1. Подготовка данных для модели:

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

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

Одна из основных причин использования FunkSVD заключается в том, что в матрице много пропущенных значений. Funk SVD разлагает матрицу (с пропущенными значениями) на две компоненты U и V. Сингулярные значения складываются в эти матрицы. Разложение матрицы выполняется с помощью оптимизации стохастического градиентного спуска.

Чтобы проверить наши прогнозы, данные разбиваются на обучающие и тестовые наборы данных. Для этого анализа рассматривается соотношение поезд: тест 70:30. Соответствующие преобразования выполняются для подготовки наборов обучающих и тестовых данных.

2. Показатель оценки:

Среднеквадратическая ошибка здесь является метрикой оценки. MSE в каждой из итераций FunkSVD проверяется на наличие улучшений и вариаций. Алгоритм следующий: для каждой пары пользователь-предложение, если мы отправили предложение, то вычисляем ошибку как фактическое минус скалярное произведение пользователя и предложения скрытых функций, а затем суммируем все квадратные ошибки для матрицы. Для целей этого анализа количество скрытых функций выбрано как (5, 10 и 15) для настройки параметров.

Настройка модели

Сохранение количества итераций до 250, MSE 0,003823 для 15 скрытых функций, 0,006241 для 10 скрытых функций и 0,022370 для 5 скрытых функций.

Проверка на тесте показывает, что MSE для 15 скрытых переменных составляет 0,3359, MSE для 10 скрытых переменных составляет 0,3307, а MSE для 5 скрытых переменных составляет 0,3205.

Несмотря на то, что MSE поезда был самым низким для 15 скрытых переменных / признаков, производительность теста лучше для скрытой переменной 5 в сравнении с тем, что происходит немного меньше переобучения с меньшим количеством признаков.

Конечные параметры:

Скрытые переменные -5; # Итерации: 250, скорость обучения: 0,05

Рекомендации и выводы:

1) Какое предложение имеет наибольшую прибыль? Какое предложение можно рекомендовать в целом?

Глядя на прибыль, связанную с каждым из предложений, мы видим, что предложение «fafdcd668e3743c1bb461111dcafc2a4» имеет наибольшую прибыль, что делает его рекомендуемым предложением, тогда как «0b1e1539f2cc45b7b9fa7c272da2e1d7» имеет наименьшую сумму прибыли, что делает его наименее рекомендуемым предложением.

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

Дальнейшие улучшения

  1. Настройте параметры более эффективным способом, а не методом проб и ошибок — вероятно, для этого можно использовать поиск по сетке или рандомизированный поиск.
  2. Производительность можно сравнить с алгоритмами обучения с учителем, которые будут получать в качестве входных данных данные о покупателе и будут предсказывать, положительно ли потребитель отреагирует на предложение или нет.
  3. В текущей модели мы не можем предсказать лучшие предложения для нового пользователя, поскольку для идентификатора нет исторических данных. В таких ситуациях мы показываем лучшие стратегии предложения, используя все данные.
  4. Учитывая отклик от каждого из различных типов предложений, мы могли бы создать модели уровня предложения и возобновить ответы, а рекомендация могла бы быть той, которая имеет наибольшую рентабельность инвестиций.

Вывод

В разделах EDA мы видели, что:

  1. Пожилые клиенты, доминирующие на рынке Starbucks и с уровнем дохода ниже 80 тысяч долларов, имеют большую клиентскую базу.
  2. Большинство пользователей приложения принадлежат к низшему среднему классу, хотя товары Starbucks недешевы.
  3. Пользователи, которые присоединились в более ранние годы, могли прекратить свое членство, учитывая, что у большинства пользователей есть около 2 лет членства.
  4. Вначале мы использовали среднеквадратичную ошибку в качестве оценочной метрики и обнаружили, что FunkSVD имеет наилучшую производительность с 5 функциями.
  5. Мы также провели некоторый предварительный анализ в более поздних разделах блога, такие интересные вещи, как женщины, лучше реагируют на предложения BOGO, а мужчины предпочитают иметь предложения, в которых есть бухгалтерские скидки.

Подробности анализа доступны в репозитории Gitbub: https://github.com/lihkin26/Udacity---Starbucks-Capstone.