ВЕСЬ ССЫЛОЧНЫЙ КОД МОЖНО НАЙТИ НА GITHUB: https://github.com/JordanEvan77/Amazon-Sales-Forecast

Это статья, которую я написал после изучения данных о продажах на Amazon:

Введение:

Когда был предоставлен скользящий набор наборов данных о продажах временных рядов Amazon за 12 месяцев, обе возможности — классификация и регрессионное моделирование — оказались полезными. Я хотел ответить на вопросы о том, что покупатели собираются покупать? Когда они его купят? Сколько они купят? Как мы можем увеличить размер и частоту покупок? В своем процессе я создал несколько регрессионных моделей, наиболее точной из которых была простая рекуррентная нейронная сеть, которая была полезна для непрерывной подачи данных. С данными, предоставляемыми этой модели, она может делать скользящие прогнозы для руководства, например, на 30, 60 или 90 дней для заданных мест и времени года. С точки зрения классификации я создал модель, которая может классифицировать, в какой день года вероятнее всего будет совершена покупка. Это представляет собой четкую связь между временем покупки (день, месяц, сезон, праздник и т. д.) и самими покупками. Это позволит руководству определить, какие дни лучше всего подходят для конкретных продуктов. Вооружившись этими знаниями, руководство могло значительно увеличить продажи.

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

Обзор литературы:

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

Самое интересное исследование, которое я рассмотрел, включало данные временных рядов розничной торговли, очень похожее на то, над которым я работал, но из Китая. Он также совершил удивительный подвиг, объединив в анализе настроений данные из поиска по сайту и обзоров. Затем он использовал PCA и оптимизацию плодовых мух для создания сильно сокращенного набора данных, который будет проходить через нейронную сеть обратного распространения. Это исследование, по сравнению с другими, имело особую силу не только в том, что данные временных рядов были отделены от других данных с помощью различных моделей. Кроме того, в этом исследовании были гораздо лучшие показатели измерения производительности (точность, MAPE, RMSE и WAPE), а также отличное сравнение более 10 моделей (рисунок 1 в индексе), что позволяет сделать вывод о том, насколько полезны комбинированные нейронные сети и анализ настроений для исследования временных рядов. Из всего обзора литературы, который я сделал, стало ясно, что классические модели (простая регрессия, дерево решений, k-средних и т. д.) были относительно полезны в качестве базовой линии производительности на данных, но что нейронные сети, в частности специализированные рекуррентные сети были самыми эффективными и богатыми в предоставлении информации о поведении клиентов и данных временных рядов, на которых они обучались.

Объяснение метода:

Я нашел данные на Kaggle, отличной общедоступной платформе машинного обучения, и использовал данные за 12 месяцев, отражающие продажи продуктов на Amazon. В нем была информация о месте покупки, времени и дате, покупке продукта, а также цене. Я экстраполировал эти данные с помощью разработки некоторых функций, чтобы также выделить факторы даты в соответствующие часы, дни, недели, месяцы и т. д. Я также работал над созданием индикатора крупных покупок для заказов со средней покупкой в ​​185 долларов. Я проверил отсутствие дубликатов, отсутствующих данных и наблюдал диапазон выбросов. Для своих моделей я начал с простого, с линейной регрессии и ненастроенного случайного леса для регрессии, k-средних и дерева решений для классификации.

С этими классическими моделями, которые дали мне основу для обеих моих задач, я сосредоточился на сложных нейронных сетях, которые распространены в этом типе исследований. Для задач, основанных на регрессии, я использовал простой многослойный персептрон и был довольно не впечатлен, когда его R-квадрат и MSE были хуже, чем модель регрессии случайного леса, рис. 12 (r2 = 0,9999855176120136, MSE 1,5908456209892834). Для классификации я обнаружил, что MLP работает более разумно, и поэтому решил настроить его с помощью Grid Search, чтобы повысить производительность.

Объяснение реализации:

Планирование каждого процесса для реализации модели, начиная с классификации крупных покупок, я начал с дерева решений и модели K-ближайшего соседа, которые обе работали плохо, с ошибкой более 10%. Затем я перешел на многослойный персептрон (MLP). У меня улучшилась производительность, особенно когда я реализовал Grid Search. Поиск по сетке проверял форму/размер слоя (15,20,20), (30,30,30), (50,50,50), (100), а также тестировал функции активации RELU, SELU и Tangent. Я также искал эти условия со стандартным сеточным спуском и решателем Адама для скорости обучения 0,05 и 0,001. Эти поиски по сетке выполнялись очень долго, но давали отличные результаты настройки (индексный рисунок № 2). Для классификации дня года я также создал MLP с тем же методом поиска по сетке, который оптимизирован для модели 2 (индексный рисунок № 3). Для моей регрессионной модели случайного леса поиск по сетке был не нужен, так как модель хорошо работала сама по себе, со 100 оценщиками, и ее выполнение не заняло много времени.

Для модели Simple Recursive Neural Network мне пришлось выполнить большое количество преобразований данных, чтобы получить правильную форму для пакета кода. Я выделил Полную сумму покупки, а также дату дня. Затем я сгруппировал данные по дням года, а Min-Max масштабировал данные. Отсюда я снова разделил данные 80/20 для обучения/теста и ступенчатых матриц, которые имели 3 измерения (см. Набор кода v3). Окончательная модель RNN показана на рисунке № 4 с набором простых слоев, использующих метод «SimpleRNN» от Keras. Все эти модели были построены с целью делать хорошие прогнозы, а также быть полезными в качестве деконструкций. Если бы руководство запустило эти модели в производство, запустило их, а затем отслеживало силу воздействия различных функций, было бы собрано много информации о том, как улучшить качество маркетинга/продаж Amazon для клиента, чтобы увеличить размер заказа.

Объяснение настройки эксперимента:

Я разделил набор данных на целевые наборы и наборы функций для каждого эксперимента с разделением 80/20 для обучения/тестирования. Для классификации крупных покупок я поставил фиктивную переменную 0 или 1 в качестве цели. Это значение указывает, был ли размер покупки больше 185 долларов США (среднее значение) или нет. Для Train по классификации крупных покупок я включил все данные и переменные местоположения, а также номер продукта и заказанное количество. Для предсказания классификации дня года я включил, из какого дня недели и месяца года был заказ (чтобы дать модели диапазон), а также географическую информацию и размер покупки, снова с разделением 80/20 между обучением/тестированием с числом 1–365 в качестве целевого значения.

Для моей задачи регрессии по прогнозированию полной суммы покупки (цены заказа) я включил всю дату и географическую информацию, а также номера продуктов и количество заказанного в соотношении 80/20. Я чувствовал, что разделение функций между целью и поездом было разумным и предотвращало ненужную утечку данных. Я также внедрил перекрестную проверку для двух последних моделей задач классификации, используя полный набор данных для каждой, с 10-кратной перекрестной проверкой (рис. 13), чтобы иметь большой набор попыток для модели. Затем я посмотрел на результаты разделения теста/обучения как среднеквадратичную ошибку (используя пакет «mean_squared_error») и значение r-квадрата того, насколько хорошо модели соответствуют данным.

Презентация и обсуждение результатов:

Начав с базового исследовательского анализа данных, я обнаружил, что штаты с наивысшим порядком заказов были Калифорния, Нью-Йорк и Техас (рис. 5), а также то, как заказы достигали пика в течение дня и недели (рис. 6 и 7). Тем не менее, наиболее осмысленным изображением, которое я создал, было изображение, показывающее распределенную сумму доходов от мелких и крупных заказов в течение 24-часового рабочего дня (рис. 8). Этот визуальный элемент убедительно показывает, сколько миллионов долларов ежедневного дохода Amazon поступает от крупных покупок, что привело к моему анализу индикаторов крупных покупок в моих моделях. Переходя от EDA к производительности модели, моей последней модели для задачи классификации крупных покупок (рис. 2), я проверил ошибку после оптимизации Grid Search и выполнил перекрестную проверку. Для среднеквадратичной ошибки он был равен 0, с идеальной подгонкой R-квадрата 1,0 и средним значением перекрестной проверки 0,00177, что указывает на высокую производительность и точность модели. Эту модель следует использовать для прогнозирования крупных покупок, а также для деконструкции, чтобы определить, какие факторы в наибольшей степени способствуют крупнейшим покупкам Amazon.

Для задачи классификации дня года для конкретной покупки (рис. 3) я также использовал поиск по сетке и измерял ошибку с помощью MSE, перекрестной проверки и проверки производительности R-Squared. Для среднеквадратичной ошибки это было 147,26, а для R-квадрата было 0,987 со средним значением перекрестной проверки 12,34. Это указывает на то, что для задачи точного прогнозирования каждого отдельного дня модель работает плохо, но эта модель все же может быть полезна для деконструкции для прогнозирования покупок в праздничные дни и того, что влияет на эти покупки, поскольку Amazon делает самые большие покупки в году ( Рисунок №5). В качестве консолидации также был создан MLP для прогнозирования дня недели продаж, который показал лучшую производительность (рис. 11). Наконец, для регрессионной задачи прогнозирования суммы ежедневных покупок модель RNN показала хорошие результаты. Среднеквадратическая ошибка составила 0,0082, а проекции ступенчатого прогноза показаны на рисунке № 9. Оценка ошибок и производительности, а также потерь в модели (рис. 10) очень удовлетворительна, что указывает на то, что эта модель может быть реализована как инструмент ежедневного/еженедельного/ежемесячного прогнозирования, а также полезна для деконструкции, чтобы помочь Amazon понять, какие факторы прогнозировать самые высокие дни продаж.

Внедрение выводов и заключение: обсуждение

После настройки этих моделей я считаю, что есть несколько ключевых вариантов реализации. Модели регрессии полезны (случайный Форрест и простой RNN) для прогнозирования ожидаемого дохода. В частности, RNN можно обновлять и запускать на непрерывной основе с ожидаемыми шагами вперед. Если больше данных будет собираться на почасовом уровне (в течение нескольких лет), то можно будет построить и развернуть почасовую оценку с учетом 12-часового окна. Или, если необходимо делать ежеквартальные прогнозы, обе модели можно развернуть таким образом, чтобы они обе могли предоставлять многодневные прогнозы.

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

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

Справочные ссылки:

1) Данные найдены. Распространяется Knight Bear, ноябрь 2021 г., Набор данных о продуктах продаж. https://www.kaggle.com/datasets/knightbearr/sales-product-data. По состоянию на октябрь 2022 г.

2) Энсафи, Ю., Амин, С.Х., Чжан, Г., и Шах, Б. (2022). Прогнозирование временных рядов продаж сезонных товаров с использованием машинного обучения — сравнительный анализ. International Journal of Information Management Data Insights, 2(1), 100058. https://doi.org/10.1016/j.jjimei.2022.100058

3) Рамос П., Сантос Н. и Ребело Р. (2015). Эффективность моделей пространства состояний и Арима для прогнозирования потребительских розничных продаж. Робототехника и компьютеризированное производство, 34, 151–163. https://doi.org/10.1016/j.rcim.2014.12.015

4) Чжан С., Тянь Ю.-Х. и Фань З.-П. (2022). Прогнозирование продаж с использованием онлайн-обзоров и данных поисковых систем: метод, основанный на PCA–DSFOA–BPNN. Международный журнал прогнозирования, 38(3), 1005–1024. https://doi.org/10.1016/j.ijforecast.2021.07.010

5) Чжан М., Хуанг С.-нан и Ян С.-бин. (2020). Модель прогнозирования продаж потребительских товаров с эффектом праздника. Journal of Risk Analysis and Crisis Response, 10(2), 69. https://doi.org/10.2991/jracr.k.200709.001

6) Абдуллахи, М.И., Аймуфуа, Г.И.О., и Мухаммад, У.А. (2021). Применение модели прогнозирования продаж на основе алгоритмов машинного обучения. Материалы 28-й междисциплинарной и межтретичной исследовательской конференции ISTEAMS. https://doi.org/10.22624/aims/isteams-2021/v28p17

7) Чен Ф.Л. и Оу Т.Ю. (2011). Система прогнозирования продаж на основе Grey Extreme Learning Machine с методом Тагучи в розничной торговле. Экспертные системы с приложениями, 38(3), 1336–1345. https://doi.org/10.1016/j.eswa.2010.07.014

8) Справочник по учебнику по построению моделей, Жерон, А. (2020). Практическое машинное обучение с помощью scikit-learn, Keras и tensorflow: концепции, инструменты и методы создания интеллектуальных систем (2-е изд.). О’Райли.

ВЕСЬ ССЫЛОЧНЫЙ КОД МОЖНО НАЙТИ НА GITHUB: https://github.com/JordanEvan77/Amazon-Sales-Forecast

Приложение с изображениями:

Рис. 1. Изображение окончательных результатов теста «Прогнозирование продаж с использованием онлайн-обзоров и данных поисковых систем: метод, основанный на PCA–DSFOA–BPNN».

Рисунок 2. Многоуровневая модель персептрона для классификации крупных покупок:

Рисунок 3: Модель многослойного персептрона для классификации дней года:

Рисунок 4: Полностью построенная рекуррентная нейронная сеть со слоями:

Рисунок 5. Три основных состояния заказов за 12 месяцев в году.

Рисунок 6. Ежедневный пик заказов (24 часа):

Рисунок 7. Еженедельный пик заказов (1–7 дни недели):

Рисунок 8. Суммирование крупных и мелких покупок по часам дня:

Рисунок 9. Пошаговый прогноз (зеленый) для данных временных рядов (синий):

Рисунок 10. Измерение потерь на итерацию:

Рисунок 11. Утешительная модель для предсказания дня недели заказа (MLP):

Рисунок 12. Базовая модель регрессии случайного леса для сравнения:

Рисунок 13. Процедура перекрестной проверки: