Признаюсь первым, я заядлый любитель кофе. Но я не привязан к одной цепочке. На мой телефон загружены приложения для Coffee Bean, Starbucks и Dunkin. В большинстве случаев близость определяет, какой магазин я посещу. Однако по мере того, как я получаю все больше и больше очков лояльности с каждой сетью, я вынужден пойти в конкретный магазин из-за полученного мной специального уведомления о предложении.

Как Starbucks узнает, когда мне отправить эти награды? Как они выбирают между предложением «купи один, получи одно бесплатное», или скидкой 2 доллара на следующий заказ, или просто бонусной звездой?

Это был вопрос, на который я стремился ответить в своем краеугольном проекте для Udacity Data Science Nanodegree.

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

TL, DR:

  • В Starbucks женщины в среднем тратят больше денег, чем мужчины.
  • Пользователи, которые не полностью заполняют свой профиль членства, обычно тратят меньше, предполагая, что они также не получат выгоды от предложений, связанных с «крафтовыми напитками» (например, попробуйте наш новый фраппучино Venti Magic Unicorn с дополнительными брызгами и пыльцой пикси и получите 20 дополнительных звезд!) .
  • Предложения, в которых предоставляется скидка, с большей вероятностью будут выполнены, чем предложения по принципу «купи один - получишь один».
  • Чтобы получить максимальную отдачу, включите социальные сети в свой план распространения. Самые успешные и вторые после наименее успешные предложения были почти идентичны во всех отношениях, за исключением того, что наиболее успешное из них распространялось через социальные сети, а другое - нет.
  • С помощью машинного обучения я подтвердил, что социальные сети являются влиятельным фактором в том, будет ли выполнено предложение.
  • К другим важным факторам относятся продолжительность предложения, возраст пользователя и размер вознаграждения. Неважные факторы включали электронную почту, сколько времени пользователь был участником и его пол.

Данные

Для завершения проекта Starbucks предоставил Udacity 3 ключевых набора данных:

  • портфолио: данные обо всех 10 предложениях, представленных в выборке данных
  • профиль: данные обо всех пользователях, у которых были транзакции или уведомления о предложениях
  • расшифровка: данные обо всех произошедших транзакциях, будь то покупки или взаимодействия с предложениями

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

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

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

Постановка задачи

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

Поэтому следует иметь в виду несколько соображений. Если кто-то все равно собирался прийти и купить кофе на 10 долларов, предлагать или нет, мы не обязательно хотим посылать ему скидку на 2 доллара на предложение о покупке на 10 долларов.

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

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

Очистка данных

К счастью, с этими наборами данных особой очистки не было. Однако для облегчения анализа было внесено несколько изменений.

Во-первых, идентификатор предложения представлял собой длинную, казалось бы, случайную строку. Они были заменены простыми двухсимвольными кодами. Первая буква обозначает, является ли предложение информационным, со скидкой или «купи один - получишь один» (I, D и B), а также порядковый номер.

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

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

Исследование данных

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

Во-первых, я изучил сумму, потраченную на транзакцию.

Как и ожидалось от любого, кто часто посещает кофейню, подавляющее большинство транзакций составляет менее 8 долларов. Интересно, что есть большой пик в районе 1-2 долларов, возможно, это те люди, которые просто заходят и получают чашку Pike Place с местом.

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

Это похоже на довольно стандартную базу пользователей, хотя я ожидал более низкого пика для возрастного распределения.

Кроме того, привет 100-летнему Грэмми в Starbucks.

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

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

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

Конечно, это конкретное понимание потребует дополнительных данных для проверки.

Затем меня интересовало, какие предложения будут выполнены с наибольшей вероятностью. Напоминаем, что коды здесь относятся к тому, является ли предложение прямой скидкой (т. Е. 2 ​​доллара на заказ 10 долларов) или предложением «купи один - получишь один». Есть также информационные предложения, но они просто информируют пользователей, например, о новом продукте и не требуют действий. Каждое предложение также распространялось одним из 4 способов: по электронной почте, через мобильный телефон, в социальных сетях или в Интернете.

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

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

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

Машинное обучение

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

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

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

Разделение обучения на 25% было завершено для настройки конвейера машинного обучения.

Таким образом, я был готов реализовать три разных метода:

  • Классификатор дерева решений
  • Логистическая регрессия
  • Классификатор случайного леса

И вот соответствующие оценки для каждой модели:

Используя каждую модель, я также смог определить, какие объясняющие факторы оказали наибольшее влияние на то, будет ли выполнено предложение:

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

Выводы

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

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

Мне интересно услышать ваши мысли! Вы когда-нибудь видели предложение в своем приложении Starbucks (или аналогичное для другого магазина), которое казалось специально созданным для вас? Поскольку для пользователей доступно все больше и больше данных, кажется, что частота персональных предложений будет только увеличиваться.