Как правильно использовать in_stock во временных рядах, связанных с прогнозом Amazon - PullRequest
1 голос
/ 18 февраля 2020

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

https://docs.aws.amazon.com/forecast/latest/dg/retail-domain.html#related -time-series-type-retail-domain

Это говорит:

Следующие поля являются необязательными и могут быть полезны для улучшения результатов прогноза:

  • in_stock (integer; 1 = true, 0 = false) - флаг, который указывает, есть ли товар на складе.

Что именно означает это поле? Это должно быть установлено в 0, когда количество продаж равно 0? Другими словами, если количество продаж за данный день равно 0, а in_stock установлено в 0, то система знает, что продажи были 0, потому что продукт был недоступен, а не потому, что не было спроса.

Что делать, если товара нет на складе в середине дня. Может быть, это тот случай, когда у вас может быть in_stock = 0, но продажи в тот день тоже есть?

Меня также смущает, как это поле in_stock вступает в игру, когда в другой части их документации:

https://d1.awsstatic.com/whitepapers/time-series-forecasting-principles-amazon-forecast.pdf?did=wp_card&trk=wp_card

На стр. 10 они говорят:

В исследовании конкретного случая информация о том, что продавец продал ноль единиц доступного товара отличается от информации о том, что нулевые единицы недоступного товара продаются либо в периоды вне его существования, например, до его запуска или после его устаревания, либо в периоды в течение его существования, например, частично нет в наличии, или когда не было данных о продажах записано для этого временного диапазона. Нулевое заполнение по умолчанию применимо в этом первом случае. В последнем, хотя соответствующее целевое значение обычно равно нулю, в значении, помеченном как отсутствующее, передается дополнительная информация. Вы должны сохранить информацию о том, что отсутствовали данные, и не отбрасывать эту информацию (см. Следующий пример для иллюстрации того, почему важно хранить информацию). Чтобы закодировать значение, которое не представляет нулевые продажи доступного продукта как действительно отсутствующие, Amazon Forecast позволяет пользователю указать тип заполнения для средней и обратной заливки в ключе FeaturiizationMethodParameters параметра FeaturiizationConfig API create_predictor. Чтобы пометить значение как действительно отсутствующее, тип заполнения для этих параметров должен быть установлен в NaN. В отличие от нулевого заполнения, значения, закодированные с помощью NaN, обрабатываются как действительно отсутствующие и не используются в компоненте оценки метрик.

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

Полагаю, мои вопросы сводятся к:

  1. Что такое разница между днем ​​с 0 продажами и in_stock = 0 по сравнению с днем ​​с продажами = NaN, который эффективно удаляет этот день из набора данных?

  2. Что вы делаете, когда продукт выходит из запас на полпути через день? Может ли in_stock = 0 и все еще иметь данные о продажах за данный день?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020
  1. Разница в том, что с in_stock ваша модель содержит больше информации, позволяющей вам делать прогнозы на основе in_stock в будущем. Лучше использовать in_stock, а не sales = NaN, если у вас есть исторические данные.

  2. Если вы хотите, чтобы in_stock был представлен как неполный день, ваш временной ряд должен будет быть более гранулированным. Если вы не можете добиться большей детализации, вы должны иметь возможность указать продажи> 0 и in_stock = 0, все, что вам нужно сделать, это обучить модель для этого идентификатора, чтобы при отсутствии товара на складе производился определенный объем продаж. следовательно, лучше иметь более детальный временной ряд.

0 голосов
/ 24 февраля 2020

Для этого варианта использования рекомендуется указывать sales = 'NaN' в TARGET_TIME_SERIES, когда конкретный продукт недоступен / отсутствует на складе. Это в соответствии с подходом, изложенным в: https://d1.awsstatic.com/whitepapers/time-series-forecasting-principles-amazon-forecast.pdf. Пример на рисунке 6 (на стр. 11) более подробно описывает это. Для случаев, когда товара нет на складе в течение дня, следует указать стоимость продажи.

Стоит также отметить, что на момент написания этой статьи для RELATED_TIME_SERIES в Amazon Forecast требуется, чтобы последняя отметка времени для каждого элемента в связанном наборе данных временного ряда была включена или после последней отметки времени в целевом временном ряду плюс определяемое пользователем окно прогноза (называемое горизонтом прогноза). См. https://docs.aws.amazon.com/forecast/latest/dg/related-time-series-datasets.html для получения дополнительной информации.

Надеюсь, это поможет.

...