Примирение в Fable заканчивается ОЗУ - PullRequest
0 голосов
/ 24 февраля 2020

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

Я основываю свой анализ на примере кода из презентации "Tidy Time Series & Forecasting in R: 10. Согласование прогнозов" (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. Это исчерпывает память даже на моем сервере ОЗУ 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 Ответ

1 голос
/ 26 февраля 2020

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

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

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

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

...