www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home
Занимательная история, выдающиеся люди, малоизвестные факты, находки, открытия, фальсификации. Присоединяйся!

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

Дата публикации Oct 3, 2019

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

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

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

Настройка проблемы

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

Мы будем использовать набор данных «Acquire Valued Shoppers Challenge», который предоставляется Kaggle и может быть свободно загруженВот, Этот набор данных содержит подробную информацию о почти350 миллионовсделки свыше300000уникальные клиенты более14 месяцев, что делает его идеальной основой для построения многомерной задачи прогнозирования покупок.

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

  • Цель 1: ‘Клиент совершает покупку впервыйнеделя.'
  • Задача 2: ‘Покупатель совершает покупку впервыйдванедель «.
  • Задача 3: ‘Покупатель совершает покупку впервыйтринедель «.
  • Задача 4: ‘Клиент совершает покупку впервые четыренедель «.

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

Покупки клиентов C1, C2 и C3 используются для создания их соответствующих целевых меток.

В качестве функций мы используем доступные демографические данные и извлекаем дополнительные функции из прошлых транзакций. Они включают в себя простую статистику, такую ​​как общее количество покупок и предпочтительную категорию продукта клиента, а также более сложные функции, такие как соотношения и тенденции. Всего мы используем комбинацию около30числовой и80категориальные и булевы функции. Если вам нужно вдохновение для разработки функций, обязательно прочитайтеэтоотличная статья.

Базовый подход

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

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

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

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

Здравый смысл

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

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

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

Люди понимают эти связи естественным путем, но базовый уровень - нет.

Модели работают независимо и не могут общаться друг с другом, и в результате они могут выдавать противоречивые прогнозы.

Итак, как мы можем включить этот «здравый смысл» в наши прогнозы?

Это момент, когда мы переключаемся наИскусственные нейронные сетии начать строить единый многомерный классификатор.

Зачем использовать нейронные сети?

В последние годыГлубокое обучениеи, в частности, нейронные сети (NN) добились огромного успеха в решении различных проблем машинного обучения, и, возможно, дажепревосходящиепроизводительность человеческого уровня в некоторых из них

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

Архитектура нейронной сети

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

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

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

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

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

Обучение нейронной сети

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

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

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

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

оценка

Послеописание проблемывыше, мы используем подмножество данных, чтобы построить поезд(~ 13.000 образцов)и тестовый набор данных(~ 5.500 образцов), Мы должны помнить, что учет нескольких недель для одной цели вносит дисбаланс в распределение целевых переменных: уже на первой неделе80%клиентов совершают покупку, но в течение четырех недель для цели 4 она заканчивается98%, Поскольку у нас очень мало образцов из недопредставленного целевого класса, из которых сложно извлечь уроки, их будет сложно предсказать правильно.

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

Полученные результаты

В качестве основы мы тренировалисьДеревья решений,Случайные Лесаа такжеГрадиентные деревья(Реализация XGBoost) и использовали методы оптимизации гиперпараметров от sklearn. Эти алгоритмы не только широко используются и хорошо изучены, но также оказались успешными в завоевании многихВызовы,

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

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

Вне5,500прогнозы, сделанные на тестовых данных,несколько сотенпротиворечивы для дерева решений и случайного леса, и до сих пор10для классификатора XGB, в то время как нейронная сеть не допускает ни одной из этих ошибок.

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

Вывод

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

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

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

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

Также не забудьте подписаться на нашуНовостная рассылкаи следуйте за намищебет,facebook,LinkedIn, а такжеXING,

[Изображения могут использовать значки, сделанныеДэйв Гандиотwww.flaticon.com]


Первоначально опубликовано наhttps://blog.goedle.io,

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map