Обзор

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

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

Понимание бизнеса

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

Понимание данных

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

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

Данные предоставлены Starbucks. Вот краткий обзор того, как выглядят данные:

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

Вот схема и объяснение каждой переменной в файлах: e

portfolio.json10 строк, 6 столбцов.

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

profile.json17 000 строк, 5 столбцов.

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

transcript.json306534 строки, 4 столбца.

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

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

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

Для фрейма данных profile.json столбцы пола и дохода имеют значения NaN. Для пола NaN были преобразованы в NA. Для дохода NaN были заменены средним значением.

Для третьей расшифровки кадра данных NaN отсутствует:

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

Теперь мы перейдем к части анализа и моделирования после очистки и понимания данных.

Анализ данных:

И. Одномерное исследование:

Каков средний доход клиентов Starbucks?

Average income is 65404.991568296799

Каков средний возраст клиентов Starbucks?

The average age  is 62.531411764705879

Какая акция самая распространенная?

Только топ-3 акции и показывать только завершенные акции, поскольку они более важны.

Идентификатор предложения «fafdcd668e3743c1bb461111dcafc2a4» является наиболее распространенным с числом завершений, равным 5317. Наименее распространенным является предложение «4d5c57ea9a6940dd891ad53e9dbe8da0» с общим количеством завершений 3331

Наиболее часто используется BOGO(купи один — второй бесплатно), за ним следует скидка с небольшой разницей. Хотя информация заняла третье место с разницей примерно в 40 000, это огромный разрыв.

Каковы наиболее распространенные значения для каждого столбца в каждом кадре данных?

Возраст 58 лет, взрослые и мужчины наиболее распространены.

Кто самый лояльный клиент, другими словами больше всего стенограмм?

Список самых лояльных клиентов (клиенты тратят много денег на предложения/транзакции).

Каких событий больше всего в наших стенограммах?

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

Перейдем к многовариантному исследованию.

II. Многовариантное исследование

Какая акция чаще всего проводится для детей, подростков, молодежи, взрослых и пожилых клиентов?

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

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

кто получает больше дохода, мужчины или женщины?

На приведенном выше графике показано, что средний доход (белая точка) для женщин (около 70 тысяч) выше, чем для мужчин (около 60 тысяч), мы можем видеть, что для женщин доход варьируется от 40 тысяч до 100 тысяч. Для мужчин большинство из них составляет от 40 до 70 тысяч, что близко к медиане.

Какой тип продвижения нравится каждому полу?

Кажется, что все разделяют одинаковые интересы и предпочитают BOGO. Однако разница между discount и BOGO невелика.

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

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

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

Нашими особенностями будут:

  • Событие. (Будет заменено с категориального на числовое)
  • Время. (нормализованный)
  • Offer_id. (Будет заменено с категориального на числовое)
  • Количество. (нормализованный)
  • Награда. (нормализованный)
  • Возрастная группа. (Будет заменено с категориального на числовое)
  • Пол. (Будет заменено с категориального на числовое).
  • Доход. (нормализованный)

Пока нашей целью будет тип предложения.

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

Сравнение производительности различных моделей:

Оценка их эффективности на основе точности.

Мы видим 100% точность в наборах данных для обучения и тестирования на 4 моделях. Чтобы избежать переобучения, я выберу логистическую регрессию, так как она дает хорошие результаты 80,5% при обучении и 92,8% при тестировании наборов данных. Здесь лучше использовать логистическую регрессию, так как у нас мало биномиальных результатов. Здесь также хорошо, потому что у нас есть приличный объем данных для работы. Теперь давайте улучшим нашу модель, чтобы получить лучшие результаты.

Улучшение модели:

После использования поиска по сетке с логистической регрессией нам удалось улучшить результаты.

Увеличение примерно на 2,21%, что здорово. Я не думаю, что он нуждается в дальнейших улучшениях. Но чтобы сделать наши результаты еще лучше, попробуйте улучшить сбор данных и исправить проблемы, которые у меня возникают со значениями NaN. Я также постараюсь получить еще больше данных, таких как местоположение и время завершения транзакции, в каком отделении и в какое время суток. Все эти данные могут помочь нам узнать, когда и где предоставлять наши предложения.

Вывод :

В этом проекте я попытался проанализировать и построить модель, чтобы предсказать лучшее предложение для клиента Starbucks. Сначала я изучил данные и посмотрел, что мне нужно изменить, прежде чем начать анализ. Затем я провел предварительный анализ данных после очистки. После этого я обучил данные, затем выбрал одну модель и улучшил ее, чтобы получить лучшие результаты. В заключение я думаю, что Starbucks нужно больше ориентироваться на взрослых и мужчин. Кроме того, предлагайте больше BOGO и скидки своим клиентам.