Прогнозирование расходов клиентов в интернет-магазине Google

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

Вступление:

Электронная коммерция становится все большей и большей частью нашей жизни. В США в 2019 году в Интернете было потрачено 602 миллиарда долларов. Около 75% тех, кто делает покупки в Интернете, делают это как минимум раз в месяц. Интернет-магазины составили 16% всей розничной выручки в 2019 году, и эта цифра только растет.

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

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

  • Персонализированный маркетинг для стимулирования расходов
    Знание того, сколько клиент, вероятно, потратит, может помочь убедить его потратить немного больше. Например, если мы прогнозируем, что покупатель потратит 150 долларов на посещение магазина, мы можем предложить ему бесплатную доставку или бонусные баллы за любую покупку на сумму более 200 долларов. Вдобавок, если покупатель вряд ли что-то купит, ему может быть отправлен купон, который дает скидку 10% на следующую покупку.
  • Выявление узких мест и средств, блокирующих расходы
    Модели регрессии, такие как случайные леса, позволяют нам увидеть, какие функции наиболее важны при определении расходов. Например, если мы видим, что мобильные пользователи или клиенты, просматривающие сайт с помощью Firefox, тратят меньше, мы могли бы продолжить расследование, чтобы выяснить, виноваты ли медленная загрузка или другие ошибки.
  • Более точное прогнозирование доходов
    Повышение качества этой модели до уровня производства может дать более детальное представление о том, сколько компания может рассчитывать заработать в интернет-магазине.

Данные:

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

Очистка и предварительная обработка данных:

  • Распаковка вложенной структуры исходных данных:
    Набор данных из Kaggle заполнен несколькими столбцами, которые имеют несколько функций во вложенном формате. Для правильного моделирования эти вложенные данные были разделены на отдельные столбцы.
  • Выбор функций.
    С рядом вложенных столбцов с пометкой "обращения" было сложно разобраться. Столбцы включали длинные списки информации о страницах и продуктах, которые покупатель просматривал во время посещения магазина. Длинные списки продуктов плохо подходят для алгоритмов регрессии, поэтому я решил взять несколько ключевых значений из этих вложенных столбцов. В первую очередь, категория продукта, который просматривался последним, и цена этого товара.
  • Работа с категориальными значениями:
    Набор данных включает категориальные переменные, многие из которых имеют сотни или тысячи уникальных значений. Для моделирования этих данных значения с
  • Работа с отсутствующими значениями
    . Некоторые функции были недоступны Google. Эти столбцы были удалены из набора данных. Значения «(не задано)», «(не применимо)» или аналогичные были стандартизированы до одного значения «Нет». Недостающие значения для непрерывных переменных были рассчитаны на основе средних значений.

Функциональная инженерия:

  • Кластеризация K-средних
    Кластеризация - это распространенный метод обучения без учителя, который может добавить немного дополнительных преимуществ модели обучения с учителем. В этом случае я использовал алгоритм кластеризации K-средних со значением «k» 60. И метки кластера, и оценки силуэтов для каждой точки были добавлены в набор данных в качестве дополнительных столбцов. Выбранный код из процесса кластеризации показан ниже. Из-за ограничений по времени и вычислительной мощности для процесса кластеризации использовалась сокращенная (с использованием PCA) версия набора данных. Полный код можно найти в репозитории проекта на Github.
def add_clustering(data, reduced_data, clusters):
    #Create best model
    best_cluster = KMeans(n_clusters=clusters, random_state=70, algorithm='full')

    #Fit model.
    best_cluster_fit = best_cluster.fit(reduced_data)
    print('Done Fitting Model')
    
    #Get labels for use in silhouette score calculations
    best_cluster_labels = best_cluster_fit.predict(reduced_data)
    print('Done Predicting')
    
    sil_scores = silhouette_samples(reduced_data, best_cluster_labels)
    print('Done with Silhouette Scores')
    
    #Turn into series objects
    sil_scores = pd.Series(sil_scores, name='sil_score')
    best_cluster_labels = pd.Series(best_cluster_labels, name='cluster_label')
    
    #Merge with original data
    data_merged = data.reset_index()
    data_merged.drop('index', axis=1, inplace=True)
    to_concat = [data_merged, sil_scores, best_cluster_labels]
    data_merged = pd.concat(to_concat, axis=1)
    
    return data_merged
  • Преобразование функций
    Прогнозируемая нами переменная (расходы / доход за посещение) была преобразована таким образом, что мы прогнозируем естественный логарифм расходов, а не саму стоимость в долларах США.
  • Дополнительные данные
    Чтобы учесть тенденции общих потребительских расходов за период сбора данных, я включил в набор данных различные экономические показатели. К ним относятся дневные значения для S&P 500, Индекса доллара США и Индекса уверенности потребителей. Чтобы улучшить результаты моделирования, в будущих итерациях этого проекта к данным также может быть добавлена ​​переменная с задержкой по времени.

Исследовательский анализ данных:

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

  • Счетчик покупок

Большинство посещений магазина Google не приводили к покупке любого размера. Фактически, только 2,46% посещений завершились покупкой. Средний размер покупки для этих 2,46% посещений составил 124 доллара США.

  • Размер покупки

Большинство покупок имеют небольшой размер (до ~ 100 долларов). На графике ниже мы видим, что количество покупок резко уменьшается с увеличением общей суммы покупки. Этот график обрезан по оси x, но было ограниченное количество очень дорогих покупок - до 24 000 долларов.

  • Просмотры страниц и результат посещения

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

  • Просмотры страниц и% посещений, завершившихся покупкой

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

  • Просмотры страниц и размер покупки

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

  • Количество посещений сайта по сравнению с результатом посещения

Если покупатель вернется в магазин после предыдущего посещения, у него может быть больше шансов совершить покупку.

Выводы EDA:

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

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

Источники: