www.sibac.info
ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИИ BIG DATA ДЛЯ ПРОГНОЗИРОВАНИЯ ПРОДАЖ
Сирант Ольга Васильевна
доц. кафедры «Информатика и вычислительная техника» ФГБОУ ВО «Поволжский государственный университет телекоммуникаций и информатики» (ПГУТИ),
РФ г. Самара E-mail: sirant@aport.ru
USE BIG DATA TECHNOLOGY FOR SALES FORECASTING
Sirant Olga
assistant professor of "Povolzhskiy State University of Telecommunications And Informatics" (PSUTI),
Russia, Samara
АННОТАЦИЯ
В работе рассмотрены некоторые особенности прогнозирования при большой зашумленности исходных данных на примере прогнозирования продаж с использованием технологии big data.
ABSTRACT
The paper discusses some features of forecasting at a large noise source data on sales forecasting example using big data technologies.
Ключевые слова: алгоритмы машинного обучения, технология big data «большие данные», метод анализа данных.
Keywords: Machine learning algorithms, big data "big data" technology, data analysis method.
Сегодня с помощью машины человек может справляться с задачами, которые раньше считались практически неразрешимыми. Одновременно с этим мы начинаем захлебываться в количестве получаемой информации. За последние два года было создано больше данных, чем за предыдущие тринадцать лет. В настоящее время появилась проблема в быстрой обработке большого количества информации. Поэтому появились технологии big data - «Большие данные», позволяющие работать с огромным массивом данных одновременно, ориентированные на применение теории нейронных сетей.
Говоря о «Больших данных» используют наиболее популярное определение трех "V" [1]:
• Volume - объем данных
• Velocity - необходимость обрабатывать данные с большой скоростью;
• Variety - многообразие и недостаточную структурированность данных.
Места хранения информации разнообразны, поэтому нужны более четкие и структурированные требования к параметрам анализа.
На сегодняшний день Big Data активно внедряются в зарубежных компаниях. Такие компании, как Nasdaq, Facebook, Google, IBM, VISA, Master Card, Bank of America, HSBC, AT&T, Coca Cola, Starbucks и Netflix уже используют ресурсы Больших Данных.
Сферы применения обработанной информации разнообразны и варьируются в зависимости от отрасли и задач, которые необходимо выполнить.
HSBC использует технологии Больших Данных для противодействия мошеннических операций с пластиковыми картами. С помощью Big Data компания увеличила эффективность службы безопасности в 3 раза, распознавание мошеннических инцидентов - в 10 раз [4].
Ритейлер офисных принадлежностей OfficeMax с помощью технологий Больших Данных анализируют поведение клиентов.
По сути, большие данные предназначены для прогнозирования. Обычно их описывают как часть компьютерной науки под названием «искусственный интеллект» (точнее, ее раздел «машинное обучение»). Под обучением рассматривается применение математических приемов к большому количеству данных для прогноза вероятностей
При изучении информации о машинном бучении можно заметить, что прикладная статистика является общим полем среди специалистов машинного обучения. Невозможно придумать один прямой алгоритм для всех данных. Придется испробовать различные версии исходных данных на различных наборах алгоритмов. Именно эта особенность прекрасно реализуется при программировании на языке Python. Python является отличным инструментом специалиста по анализу данных. Язык программирования Python на глазах превращается в инструмент специалистов по анализу данных (data scientists) [3].
Машинное обучение - это в целом способ обработки большого количества данных с получением в конечном итоге математической модели, которая потом может быть применена к другим данным, с целью прогнозирования данных, зависящих от них.
С
СибАК
www.sibac.info
Была поставлена задача: найти реальную модель работы магазина среди зашумленных данных и после этого использовать модель для экстраполяции продаж в дальнейшем.
Для технологии big data задача прогнозирования может быть поставлена таким образом: найти наилучшее приближение данных, заданных конечным набором входных значений (обучающих примеров).
Для анализа были взяты данные с платформы Kaggle (kaggle.com). Kaggle является крупнейшим в мире сообществом аналитиков данных, где многие компании, заинтересованные в анализе данных, выкладывают их. Эти данные выкладываются под свободной лицензией, т. е. их нельзя использовать для получения своей прибыли, но их можно использовать в академических целях.
Был построен график продаж за 2 года и простейшим решением для прогноза, было бы просто продлить график еще на какое-то время вперед. Для этого нужно найти форму линии графика, чем и займется алгоритм линейной регрессии. Для линейной регрессии найдем оптимальное количество степеней и потом применим регуляризацию.
Был выбран алгоритм случайного леса [2]. После анализа получаем последовательность задействования алгоритмов, представленную на рис. 1.
Рисунок 1. Последовательность использования алгоритмов
• Алгоритм dimensional Reduction.
• Алгоритмы регрессий.
• Алгоритмы регуляризации.
• Алгоритмы деревьев решений.
• Алгоритма ансамбля.
Для удобства анализа сначала была построена сводная таблица продаж магазинов в зависимости от дня недели и на её основе построена гистограмма.
www.sibac.info
Рисунок 2. Диаграмма продаж по номерам дней недели
Как видно на рисунке средние продажи, да и сами продажи по дням сильно различаются.
Дополнительно был построен график продаж 150 магазинов за 50 дней. Анализ графика выявляет скачки продаж для магазинов, работающих по воскресеньям, также повторяется поведение магазинов, закрытых в воскресенье: в понедельник продажи всегда выше. Можно сделать вывод, что надо точно обучать отдельно магазины, работающие и не работающие в выходные.
Затем производится анализ по другим параметрам, например, по ассортименту магазинов: базовый, обычный и расширенный и т. д.
На рисунке 3 представлен график трендов по типу магазина
Рисунок 3. Тренды продаж магазинов с разделением по ассортименту
www.sibac.info
Как видно из рисунка 3 тренды сильно различаются и от них есть прямая зависимость величины прибыли. Сразу можно посоветовать менеджерам магазина - расширять ассортимент. Как бы то ни было исходя из этого графика точно известно, что для каждого ассортимента нужно взять свою переменную для будущей модели.
Часто заманчивая простота корреляционного исследования подталкивает исследователя делать ложные интуитивные выводы о наличии причинно-следственной связи между парами признаков, в то время как коэффициенты корреляции устанавливают лишь статистические взаимосвязи. Некоторые виды коэффициентов корреляции могут быть положительными или отрицательными. В первом случае предполагается, что мы можем определить только наличие или отсутствие связи, а во втором - также и её направление.
Мы обучаем модель на 70 % данных и на остальных 30 % проверяем.
После того как все зависимости были выявлены можно приступать к написанию кода для обучения машины.
Таким образом был составлен следующий алгоритм написания
кода:
1. Разбиваем данные на тестовую выборку и на обучающую.
В нашем случае тестовая выборка должна быть следующими 6 неделями, а не случайными датами, как обычно советуют делать, т. к. в данном случае идет речь не о проверке графика, а о проверке тренда на будущее время. В тестовой выборке должны быть данные о продажах каждого магазина за 6 недель его работы. При этом учитываем, что некоторые магазины работают без выходных, а некоторые были закрыты в эти даты вообще на реконструкцию.
Далее в цикле для всех взятых для анализа магазинов:
2. Выбрать из данных дни одного магазина, когда он был открыт
3. Срезать месяцы до открытия конкурента.
Это будет полезно только если их количество составляет меньше 60 % от данных. Лучше начинать тренировочную таблицу через месяц после открытия магазина конкурента
4. Необходимо заменить даты в полученной таблице одного магазина на целые числа, идущие по порядку с точки отсчета (первого дня продаж, занесенного в таблицу).
Это необходимо для корректной работы алгоритма. Библиотека scikit-leam, из который была использована линейная регрессия не поддерживает автоматически распознавание дат, как последовательность. Да и как правило такая обработка чисто индивидуальна для данных и редко учитывается в библиотеках.
5. Отсеять выбросы, используя 2 величины среднего отклонения от среднего значения продаж.
6. Разделить и преобразовать таблицу с обучающей выборкой для дальнейшего использования ее алгоритмом.
Обучающая выборка разбивается на те столбцы, которые будут использоваться как независимые переменные, и на столбец зависимой переменной. В данном случае зависимая переменная - это продажи (Sales). Все независимые переменные были найдены ранее.
7. Используем алгоритм из библиотеки для построения регрессии на подготовленных данных.
8. Записываем в таблицу полученные данные продаж - конец цикла.
9. Считаем ошибку.
Исполнение этого кода занимает примерно 5 минут или меньше на обычном компьютере. Для экономии памяти на компьютере были использованы генераторы чисел. Генераторы не создают массив последовательных чисел, для использования в циклах.
Данный алгоритм был исследован с помощью программного кода, созданного на языке Python. Самые основные и используемы в этой работе пакеты для анализа данных на Python: NumPy /SciPy (научные вычисления) и pandas (манипуляции с данными), matplotlib для создания графики и scikit-learn для машинного обучения.
Продуктивность полученного в данной работе алгоритма можно оценить по следующим рисункам. На рисунке 4 представлен график точек исторических данных, на которых был проведен предварительный тест, т. е. эти данные были вырезаны из данных и обучение проходило без них. Потом полученные данные сверялись с уже имевшимися данными. На рисунке черными точками обозначены исторические данные, синий линией - график линейной регрессии, красными -прогнозируемые данные с учетом регуляризации. Если данные совпадают, то красные точки накладываются на черные. Как видно, черных точек немного и это значит, что данные практически совпадают. Но это только тестовая выборка и самую серьезную проверку данные проходят на прогнозе данных.
www.sibac.info
12000
10000
2000
4000
8000
6000
О
-2000
Рисунок 4. Сравнение полученных данных с имевшимися
Была проведена сверка с прогнозируемыми шестью неделями, которых не было в данных изначально. Ошибка составила 18 %
В качестве основного алгоритма машинного обучения была использована линейная регрессия. Для лучшего прогноза была произведена тщательная выборка независимых переменных. Разработан код на языке программирования Python.
В алгоритме была составлена индивидуальная модель для каждого магазина и теперь, изменяя независимые переменные, можно смотреть как может измениться доход каждого отдельного магазина. Как минимум можно будет посмотреть тренд изменения. Можно найти при каком наборе данных каждый магазин будет получать максимальную прибыль, но это не будет значить, что все магазины в целом обязательно повысят свои продажи до максимума, т. к. увеличив приток покупателей во всех магазинах они просто равномерно распределятся и вернутся к изначальному состоянию.
Алгоритм и код достаточно универсальны и могут использоваться для прогнозирования продаж любых магазинов вне зависимости от их количества, типа, размера, местонахождения при условии оформления статистических данных с именами, соответствующими заданными в коде.
Список литературы:
1. Коваленко О.П., Салмин А.А. «Большие данные» - необходимость использования накопленных знаний и проблемы реализации данной технологии // Современные научные исследования и инновации. 2016. № 7 -[Электронный ресурс] - URL: http://web.snauka.ru/ issues/2016/07/70079 (Дата обращения: 14.11.2016).
2. Майер-Шенбергер, Большие данные. Революция, которая изменит то, как мы живем, работаем и мыслим / [текст] Виктор Майер-Шенбергер, Кеннет Кукьер; пер. с англ. Инны Гайдюк. - М.: Манн, Иванов и Фербер, 2014. - 240 с.
3. Тихонов К. Как Python превратился в инструмент специалиста по анализу данных - [Электронный ресурс] - URL: http://www.computerra.ru/88791/ python-bigdata/ - (Дата обращения: 21.11.2016).
4. A Tour of Machine Learning Algorithms - [Электронный ресурс] - URL: http://machinelearningmastery.com/a-tour-of-machine-learning-algorithms/.