Примирение в 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.