Новый взгляд анализа

НЕВОЗМУТИМЫЙ АЛГОРИТМ ПОЛНОТЫ

 

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


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


Ширина ассортимента составляет более 5000 позиций. Для его обновления постоянно запускают новые товары и снимают с реализации устаревшие (ежегодно около 9%). Их комплектность составляет от одной штуки до нескольких сотен в наборе.

Производителями являются предприятия России, Восточной Европы, Китая. Длительность поставок партий товара может составлять от 2 недель до 9 месяцев. Достаточно большой объём продаж проходит через сетевые гипермаркеты, остальное продаётся через филиалы.

Особенностями продаж товаров являются предпочтения покупателей, ширина представленного ассортимента, удалённость от центрального склада, климатические характеристики и другое. Наибольшую часть занимает сезонная продукция. Количество всплесков динамики достигает 4, их продолжительность меняется в пределах 3-7 месяцев. По некоторым товарам в течение нескольких месяцев полностью отсутствовали продажи ввиду давления сезонного фактора. Отклонение последующего значения продаж за месяц от предыдущего может достигать 400%.

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

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


Значения по каждой группе товаров определялись следующим образом. Сначала составлялся первый прогноз, смещённый от последнего периода продаж на 2-3 месяца. Потом формировался следующий, исходя из предсказанных значений, и так далее. В итоге увеличивались промежуточные ошибки, и снижалась конечная точность до очень низкого уровня. Особенностью прогноза является продолжительность его горизонта в 9 месяцев.


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

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

Потом для каждой территории была выделена своя динамика продаж. Внутри неё были сформированы ещё два направления. Это собственные потребности филиалов, которые во многом соответствуют запросам покупателей. И закупочные требования сетей, опережающие потребность рынка на 2-3 месяца. В результате такого разложения получилось, что должно быть обработано около 5 тысяч временных рядов.

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

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

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

 

Сначала нужно придумать саму идею, кстати, слово “сглаживание” очень похоже на “глажение”. Если Вы настоящий мужчина, значит, умеете стирать свои вещи руками и обращаться с утюгом. Например, попробуйте удалить на шерстяных брюках складки. Здесь следует предварительно нанести небольшое количество воды. Потом со всех сторон постепенно приглаживать неровность горячим утюгом. Но, несмотря на хороший результат, напряжения в ткани всё же останутся.

А теперь попробуйте применить весь этот “процесс” к числовым данным. Странно, что у Вас не получается с первого раза? Вода, то есть добавление того, что легко впитывается. Конкретно, это некий числовой объём, взятый от близких значений. Остаточные напряжения, которые остаются и можно назвать составляющими кривой разных порядков. А складка на брюках - лишь возмущение поверхности.

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

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

В результате точность изначально не нулевых и в последующем скорректированных значений находится в пределах 92-98%. Он правдоподобно восполняет пропущенные на коротких диапазонах величины. Особенностью является то, что в нём не заложены какие-то формулы или методика, представляющие чужой накопленный опыт. Он опирается на существующие рядом значения. Итоговая величина сглаженного ряда крайне близка к сумме исходного.

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

Компания смогла предоставить данные по продажам только за последние 30 месяцев, этого вполне хватило. Этот период был жёстко зафиксирован в реализации алгоритма. Использовались стоимостные величины групп товаров. В итоге, сравнительные результаты можно увидеть ниже.

 

Графики сравнения исходных и сглаженных данных с помощью нового алгоритма. Его особенность в том, что он “старается” сохранить суммарную величину по ряду. Период значений составляет 30 месяцев, что показано по оси абсцисс. Сиреневым цветом показаны фактические значения продаж, салатовым цветом – сглаженные величины.

График гладкости

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

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