Или как Starbuck и я можем стать хорошими друзьями?

Для меня Starbucks является синонимом питья кофе, поедания кексов, работы с ноутбуком и поиска решений для науки о данных в Интернете. Я провел много времени в Starbuck. Среди прочего, за то, что написал об этом мою завершающую диссертацию. Содержание работы представляет собой анализ данных о клиентах и ​​предложениях Starbucks, чтобы дать соответствующую рекомендацию типа предложения. Мои программы для этого можно посмотреть на Github.

Диссертация о предложениях Starbucks

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

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

Каждое предложение действительно до истечения срока действия предложения. Например, предложение BOGO может быть действительно только в течение 5 дней. Запись данных показывает, что информационные предложения действительны, даже если эти объявления содержат информацию только об одном продукте. Например, если информационное предложение действует 7 дней, можно предположить, что покупатель почувствует влияние предложения через 7 дней после получения рекламы.

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

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

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

Прежде всего необходимо уточнить, кто такой Starbucks

Starbuck была основана в 1971 году тремя друзьями по колледжу в Сиэтле. С 1982 года концепция кофе-бара была разработана под руководством Говарда Шульца на основе первоначальной идеи «Кофе, чай и специи Starbucks» и торговли кофе, чаем и специями. Все началось с романтики и зрелища приготовления кофе. Это должно быть более качественное представление кофейного наслаждения. Чтобы подчеркнуть это, были придуманы новые термины, такие как бариста или кофейные сливки. К 2018 году в 50 странах мира насчитывалось 29 000 кофеен Starbucks. Каждую неделю каждый день совершается около 90 миллионов транзакций. Иногда я думаю, откуда берется весь этот кофе. Невероятное количество обжаренных кофейных зерен требует невероятного логического подвига. Из-за огромного объема есть и различные критики. Но я не хочу ныть, мне просто нравится.

Какой набор данных сейчас доступен?

Данные представлены в 3 файлах:
1. "Профиль" дает простое представление о данных о клиентах, когда существует членство, возраст, пол и доход?
2. В разделе Портфолио представлены различные рекламные предложения. В этом случае неструктурированные данные показывают только 10 предложений.
3. «Расшифровка» – это коллекция, содержащая историю покупок и связанную с ней информацию о том, когда клиент получил, просмотрел и завершил свою рекламную кампанию. предложения.

Данные портфолио

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

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

В файле профиля доступны данные о 17 000 клиентов. Для некоторых столбцов, таких как переменные пола и дохода, информация отсутствует. Их необходимо решить.
Похоже, у клиента есть необычная запись. Это возраст 118 лет. Поскольку это мешает дальнейшей оценке, позже он удаляется из файла с помощью функции очистки.
Таким образом, похоже, что ожидаются следующие задачи:
a. Убедитесь, что никаких дубликатов
b. made_member_on должен быть преобразован в date должен быть разделен на год, месяц, день
c. Заполните значения NULL для значений пола и дохода пол — это категориальная переменная, поэтому вы можете заполнить пол буквой «O», чтобы другие доходы были заполнены значением, соответствующим распределению доходов
d. Удалить необычную строку с возрастом 118 лет.

Транскрипт данных

Файл транскрипции содержит 306 534 записи. Здесь переменное время кажется ключевым сообщением. Он определяет время ожидания для события или каждой транзакции для предложения. Здесь эта колонка должна учитываться в функции очистки. Кроме того, столбец значений содержит больше информации. Они должны быть разделены.
Некоторые обновления, которые необходимо сделать:
Необходимость в столбце значений состоит из двух разных элементов, и их необходимо разделить на тип_значения и значение.

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

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

  1. Кто эти клиенты Starbuck?
  2. Какой у них доход для каждой возрастной группы?
  3. Как распределяются предложения или типы предложений среди клиентов?
  4. Какое предложение наиболее принято?

Итак, давайте начнем смотреть на это.

Поведение клиентов

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

Есть 14825 данных профиля. Теперь я знаю о клиентах, что их средний возраст 54 года. Средний доход 65000. С 8484 больше всего в рейтинге участвовали клиенты-мужчины. Однако было удивительно, что женщины в возрасте от 50 до 90 лет имели значительно более высокий доход, чем их конкуренты-мужчины. Имеющиеся данные также свидетельствуют о колебаниях доходов в возрасте от 90 до 100 лет. Однако это выглядит довольно необычно. С точки зрения времени, бизнес сократился в 2018 году до 3669 записей, то есть на 24,75%. Большинство данных было доступно в 2017 году: 5599 записей, или 37,77%.

Согласно расшифровке, клиенты совершили в общей сложности 123 957 транзакций. Только 32 444 действительно приняли предложение здесь. Это всего 11,8 % от всех предложений.

Статистика по предложениям

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

Кажется, что в приложении Starbucks есть равное распределение предложений. BOGO и Discount считаются одинаково важными как для женщин, так и для мужчин. Напротив, информационных предложений значительно меньше.

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

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

Скидка с 62 095 предложений является самой часто просматриваемой с 91% и самой успешной с 63% заполненных ответов.
Результаты BOGO тоже неплохие. Здесь 63 676 данных были, в конце концов, показателем успеха 65%.
22 660 данных по 4 каналам предложения, Интернету, электронной почте, мобильным и социальным сетям просматриваются с 70%.

Какие модели можно использовать?

Настройте метрику. В моем случае я хочу использовать Матрицу путаницы. Хорошее описание я нашел здесь https://medium.com/thalus-ai/performance-metrics-for-classification-problems-in-machine-learning-part-i-b085d432082b.

Чтобы решить, какая модель и, следовательно, классификация могут, мне нужен метод. Я нашел это в матрице путаницы. При этом можно определить правильность и точность модели. Теперь я должен заранее определить, что я подразумеваю под правильностью и точностью. Мне помогает вопрос, сколько клиентов Starbucks используют ровно одно конкретное предложение. Это можно представить с помощью этой формулы:

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

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

Создайте конвейер, чтобы найти лучшую модель

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

SVC — классификация опорных векторов — это набор контролируемых методов обучения, используемых для классификации, регрессии и обнаружения выбросов. Реализация основана на libsvm.
Логистическая регрессия — это метод перехода к задачам бинарной классификации (проблемы с двумя значениями класса)
DecisionTreeClassifier — с деревьями решений, комплексное решение границы могут быть реализованы путем разделения характеристического пространства на области
RandomForestClassifier представляет собой ансамблевый алгоритм. Он создает набор деревьев решений из случайно выбранного подмножества обучающего набора. Затем он объединяет голоса из разных деревьев решений, чтобы определить окончательный класс тестового объекта.
GaussianNB — наивный байесовский метод Gaussian Naive может выполнять онлайн-обновления параметров модели с помощью partial_fit. Это простой, но удивительно мощный алгоритм прогнозного моделирования.
AdaBoostClassifier — сокращение от Adaptive Boosting — метаалгоритм машинного обучения. Его можно использовать в сочетании со многими другими типами алгоритмов обучения для повышения производительности. Выходные данные других алгоритмов обучения («слабые ученики») объединяются во взвешенную сумму, которая представляет окончательный результат усиленного классификатора.

Набор данных нельзя использовать для того, чтобы заранее решить, какая модель является лучшей. Таким образом, методы могут конкурировать друг с другом в конвейере. Для каждой модели требуется оценка F1 и точность. Мы уже обсуждали подсчет очков выше. Значения сравниваются друг с другом. По моим оценкам, все модели были одинаково сильны. Это может быть связано с данными.

Так что решение взять RandomForestClassifier далось мне нелегко. Для уточнения классификации можно использовать метод оптимизации GridSearch. Это предлагает лучшие параметры для этого классификатора.
Найдите лучшие функции.

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

Мне было интересно работать с PCA — анализом основных компонентов дисперсии данных. В зависимости от размерности предложения сравниваются. С наибольшей дисперсией предложение скидки intersanterweiße значительно выше в гонке, чем два других предложения BOGO и Informational.

Вывод

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

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

Возможное улучшение в будущем

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

(Ссылки: https://github.com/mattilyra/LSH/blob/master/examples/Introduction.ipynb или
https://towardsdatascience.com/understanding-locality-sensitive-hashing-49f6d1f6134 )