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

Введение:

Starbucks — один из крупнейших и известных брендов кофе в мире, и у него есть по крайней мере один магазин в США! Только в США Starbucks удалось привлечь 18,9 миллионов человек, и это число неуклонно растет, и во всем мире у нее 31 256 магазинов!!! Таким образом, Starbucks несет большую ответственность за то, чтобы предоставлять своим клиентам большую ценность с помощью различных предложений, чтобы они могли получить эти услуги. клиенты довольно регулярно, а также новые потенциальные клиенты, ссылаясь и многими способами. В рамках программы Udacity Nano Degree давайте попробуем расслабиться и изучить, как участники реагируют на различные предложения в Starbucks. Я благодарю Udacity и Starbucks за предоставление смоделированных данных для этой завершающей задачи, и теперь пришло время приступить к проекту :)

Наша стратегия:

Я рекомендую всем следовать процессу CRISP-DM при работе над проектами по науке о данных, чтобы вы могли проанализировать и ответить на все вопросы.

CRISP-DM — это распространенный процесс, используемый для поиска многих решений в науке о данных.

Этапы этого процесса CRISP-DM включают:

  • Понимание бизнеса
  • Понимание данных
  • Подготовка данных
  • Моделирование данных
  • Оценка
  • Развертывание

Наборы данных для этого проекта предоставлены Starbucks & Udacity в трех файлах:

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

Чтобы получить представление об этих наборах данных, мы хотели бы объединить их, а затем применить к ним методы анализа данных и моделирования. Давайте посмотрим на файлы JSON ниже:

расшифровка

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

портфолио

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

профиль

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

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

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

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

Моделирование:

Я решил создать матрицу user_item, чтобы применить знаменитый алгоритм FunkSVD для рекомендации новых предложений клиентам аналогичных предложений, а также рекомендовать предложения, которые являются лучшими, потенциальным новым клиентам. FunkSVD использует матричную факторизацию, и у нас есть скрытые факторы, созданные FunkSVD, чтобы найти похожих клиентов и предоставить им аналогичные предложения для существующих клиентов. Netflix использует алгоритмы рекомендаций, такие как FunkSVD, чтобы рекомендовать вам лучшие фильмы / шоу на основе вашего вкуса и интересов, и если вы новый пользователь Netflix, он либо попросит вас понравиться некоторые жанры в соответствии с вашими интересами, либо если вы пропустите это. порекомендует вам суперхиты и самые популярные сериалы/фильмы! Таким образом, мы будем использовать знаменитый алгоритм FunkSVD.

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

Алгоритм:

Мы используем FunkSVD, чтобы разделить матрицу на пользовательскую матрицу, матрицу скрытых функций и матрицу предложений. FunkSVD используется потому, что внутри матрицы отсутствуют значения, а обычный SVD просто не работает. Чтобы проверить наш прогноз на тестовом наборе матрицы user_item, мы разделили записи на обучающий набор (70%) и тестовый набор (30%). Мы хотим использовать предыдущие записи (более раннее время) в качестве обучающего набора для построения нашей модели, а затем использовать ту же модель для проверки более поздних записей.

Метрики:

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

Наша матрица user_item выглядит так:

(пользователь будет настоящим user_id, а товар будет offer_id):

Оценка:

Выполнив FunkSVD на матрице обучения user_item со скрытыми функциями 5,10,15. Затем мы выполняем среднеквадратичную ошибку (MSE) для тестовых данных и для 15 скрытых функций имеем MSE 0,003823; Для 10 скрытых функций у нас есть MSE 0,006241; Для 5 скрытых функций у нас есть MSE 0,022370. Согласно нашим экспериментам, модель с 15 скрытыми функциями эффективнее других, потому что чем больше скрытых функций, тем лучше будет корреляция между пользователями и предложениями.

Какими будут рекомендации предложения для существующего клиента?

Здесь мы получаем user_mat и offer_mat из алгоритма FunkSVD. user_mat равен [user_id(rows) Xlatent_factors(cols)] и offer_mat равен [latent_factors(rows) X offer)id(cols)] и в приведенном ниже представлении для user_id '0610b486422d4921ae7d2bf64640c50b' мы рекомендуем ему больше предложений на основе его текущие предложения, поскольку он является существующим клиентом!

Какими будут новые рекомендации для потенциального нового клиента?

Вы можете видеть, что предложение 7 является лучшим предложением с высокими продажами, что означает, что людям понравилось предложение 7, а также остальные рекомендации предложений!

Какой процент гендерного населения рассматривает предложение «BOGO» («купи один, получай другой») и стандартное предложение скидки?

Мы видим, что для мужского населения «скидка» в основном предпочтительнее, чем «бого», а для женского населения в Starbucks они немного предпочитают «бого», чем предложение «скидка», а для другого населения и людей, которые не хотят для того, чтобы разделить свой пол, немного предпочитают предложение «скидка», чем предложение «bogo».

Какой процент гендерного населения отвечает на определенные платформы такими предложениями, как «веб-источник», «электронная почта», «мобильный», «социальный»?

мы можем ясно видеть, что все предложения, на которые ответило все население, через «Социальные сети». В большинстве женщин они ответили на предложения через «Социальные сети», а затем через «мобильные» SMS, а для мужского населения они ответили на предложения через «Социальные сети», а затем через «мобильные», а затем через 'паутина'!

Улучшение:

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

Вывод:

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

Продвижение через социальные сети — лучшее решение!

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

Чтобы просмотреть код:



Чтобы связаться со мной через Linkedin:

https://www.linkedin.com/in/kaushik-tummalapalli/

Я хотел бы подключиться :) Увидимся в следующем блоге, а пока продолжайте суетиться и берегите себя!

Следующий блог будет основан на FunkSVD!