Примирение в Fable исчерпывает оперативную память

Я пытаюсь использовать forecast reconciliationв басне, чтобы улучшить прогнозы на низких, прерывистых уровнях иерархии. Однако моему компьютеру не хватает памяти для чего угодно, кроме тривиальных примеров.

Я основываю свой анализ на примере кода из презентации "Tidy Time Series & Forecasting in R: 10. Forecast Reconciliation" (bit.ly/fable2020, представленный на rstudio::conf 2020):

tourism %>%
  aggregate_key(Purpose * (State / Region), Trips = sum(Trips)) %>%
  model(ets = ETS(Tripsl)) %>%
  reconcile(ets_adjusted = min_trace(ets)) %>%
  forecast(h = 2)

Это нормально работает даже на моем ноутбуке с 8 ГБ оперативной памяти.

Однако в наших данных гораздо больше уровней иерархии и группировок, чем в этом примере, и код никогда не может быть завершен. В качестве воспроизводимого примера я добавил еще три фиктивных уровня в набор данных "tsibble:: tourism" и включил их вaggregate_key. Не хватает памяти даже на моем сервере RAM 50 ГБ!

tourism %>% mutate(Region1 = Region, Region2 = Region, Region3 = Region) %>% 
  aggregate_key(Purpose * (State / Region/ Region1 / Region2 / Region3), Trips = sum(Trips)) %>%
  model(ets = ETS(Trips)) %>%
  reconcile(ets_adjusted = min_trace(ets)) %>%
  forecast(h = 2)

Ошибка: не удается выделить вектор размером 929 КБ

Вопрос: Есть ли способ запустить это без уменьшения уровней иерархии и без нехватки памяти? Спасибо!

1 ответ

Решение

Спасибо за интерес к басне. В текущей версии fabletools (0.1.2) CRAN согласование является экспериментальным, и в рамках этого проекта мы сделали дизайн интерфейса / эксперименты выше производительности.

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

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

Обновление: это изменение теперь опубликовано в версии 0.1.3 fabletools.

Другие вопросы по тегам