Алгоритм создания данных, которых изначально не было.

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

Кратко о предварительной обработке данных.

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

The data has 541909 rows and 8 columns.

Визуализация данных.

Обращаясь к натуральному логарифму продаж для каждого продукта (далее именуемого «логарифм продаж»), мы можем увидеть некоторые ключевые закономерности.

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

мы видим, что журнал продаж имеет некоторые редкие выбросы или искажения (например, продукт 15036 в начале октября 2010 г.).

Вывод спроса с помощью надежного завершения матрицы.

Пусть 𝛺 будет набором индексов (𝑖, 𝑗), соответствующих наблюдаемому спросу на продукт 𝑗 на дату 𝑖. Чтобы сделать вывод о том, каким был бы спрос для дат, в которые он не наблюдался (возможно, из-за нехватки запасов), мы решим следующую задачу.

где 𝛸 — матрица, содержащая логарифм продаж и

если (𝑖, 𝑗) находится в 𝛺 и равно нулю в противном случае. Другими словами, мы устанавливаем 𝛸 равным 𝑳 + 𝑺 по индексам, соответствующим наблюдаемому спросу. Таким образом, ненаблюдаемые записи являются свободными параметрами модели.

Затем эта модель возвращает две части, 𝑳 и 𝑺, которые разлагают 𝛸. Разреженная матрица 𝑺 извлекает выбросы и экстремальные события из 𝛸. Компонент 𝑳 будет считаться дешумированной копией 𝛸 с предполагаемым ненаблюдаемым спросом, позволяющим 𝑳 иметь минимальную ядерную норму. Цель 𝑺 состоит в том, чтобы обеспечить точную реконструкцию 𝛸 без искажения параметров из-за нечастых или необычных экстремальных событий. Следовательно, это известно как надежное завершение матрицы.

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

Визуализация предполагаемого спроса.

Возвращаясь теперь к тепловой карте данных журнала продаж 𝛸 (вверху), мы визуально сравниваем ее разложение на разреженный компонент 𝑺 (в центре) и компонент без шума 𝑳 (внизу).

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

Интуиция.

Этот метод работает, фиксируя взаимосвязь между продажами различных товаров и используя ее для интерполяции ненаблюдаемых значений. Например, если продукты A, B и C связаны между собой (например, имеют одинаковые сезонные закономерности) и мы можем ежедневно наблюдать за их совместным движением, то мы должны быть в состоянии предположить, сколько продукта B будет продано, если мы мы можем наблюдать только А и С. Другими словами, мы можем сделать вывод о спросе на продукт В, исходя из А и С.

Однако существует уникальное различие между этим подходом и простым выполнением множественных регрессий для наблюдаемых элементов: в структуре регрессии нам нужно знать A и C, чтобы предсказать B. Но что, если и B, и A отсутствуют в конкретный день? Как мы будем использовать модель для B, если одна из ее функций отсутствует? А на следующий день предположим, что наблюдается только B. Как бы мы сделали это для A и C?

Ядерная норма — это выпуклая релаксация оператора ранга, а норма 𝓁₁ — соответственно оператора мощности. Таким образом, разложение 𝛸 на компоненты 𝑳 и 𝑺 аналогично выполнению линейной регрессии со штрафом 𝓁₁ для сингулярных значений 𝛸. Ненаблюдаемый спрос — это свободные параметры модели, аналогичные весам регрессии. Штраф на 𝑺 также позволяет нам обрезать необычные наблюдения, если он допускает 𝑳, который использует больше структуры в 𝛸, подобно изменению весов выборки в регрессии.

Таким образом, нам не нужно фиксированное количество признаков, чтобы сделать вывод о спросе в каждый период — оно может меняться каждый день.

Насколько успешен этот метод?

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

Упрощенный пример.

Мы начнем с упрощенного примера, чтобы получить концептуальное представление о том, что происходит. В частности, мы будем подвергать цензуре продукт 47566 в течение двух недель где-то в конце 2011 года.

Теперь мы восстанавливаем спрос, используя надежное завершение матрицы (желтый), визуализируя его вместе с истинной реальностью (синяя пунктирная линия) и границами ошибки ± 15% (синяя заштрихованная область).

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

Реалистичный пример.

Теперь мы рассмотрим более реалистичную схему цензурирования, в которой мы случайным образом выбираем 500 индексов из 𝛺 (без замены) и подвергаем их цензуре. Пусть это новое множество будет обозначаться 𝛺₀⊂𝛺. Затем мы выведем спрос и проанализируем ошибку реконструкции. Обратите внимание, что мы будем пытаться восстановить не только спрос, который мы подвергли цензуре в 𝛺₀, но и спрос, который уже отсутствует в наборе данных (т. е. {1,…,𝑚} × {1,…,𝑛}∖ 𝛺).

Визуализация исходных данных о продажах в журналах 𝛸 (вверху), дополнительных данных о продажах в журналах (посередине) и реконструированного компонента 𝑳 (внизу):

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

Остаточное распределение примерно симметрично, хотя и несколько с тяжелыми хвостами. При соответствующем преобразовании его, вероятно, можно было бы преобразовать в нормальное состояние. Это позволило бы нам определить предполагаемый спрос не только по прогнозу модели, но и по полному распределению (в данном случае логарифмически нормальному, поскольку мы использовали данные логарифмических продаж). Мы также можем видеть из следующего вывода

Residuals of Log-Sales:
Mean Error: 0.1038 
Sqrt Mean Squared Error: 0.4107
Standard Error: 0.3974
Excess Skew: -0.0840
Excess Kurtosis: 0.8728
Percent Error on Raw Sales:
Mean Error: -0.0037
Sqrt. Mean Squared Error: 0.1486
Standard Error: 0.1486
Excess Skew: -2.5220
Excess Kurtosis: 8.5739

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

Заключение.

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

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