Инкрементальное обучение для модели временных рядов LOESS

9

В настоящее время я работаю с данными временных рядов, я знаю, что могу использовать модель LOESS / ARIMA.

Данные записываются в вектор, длина которого равна 1000, что является очередью, обновляемой каждые 15 минут,

Таким образом, старые данные будут появляться, а новые - в векторе.

Я могу перезапустить всю модель в планировщике, например, переучивать модель каждые 15 минут, то есть использовать целое значение 1000 для обучения модели LOESS, однако это очень неэффективно, поскольку каждый раз вставляется только одно значение, а другое 999 значений все так же, как в прошлый раз.

Итак, как я могу добиться лучшей производительности?

Большое спасибо

чжан
источник
3
Что такое «модель LOESS / ARIMA»? Вы имели в виду нелинейный временной тренд с ошибками ARIMA, где нелинейный тренд оценивается с использованием LOESS?
Роб Хиндман
извините, я имею в виду модель LESS или ARIMA. Например, я использую LOESS, чтобы найти остатки как: остатки (loess (x ~ время)). потому что данные x - это вектор с 1000 значениями, который обновляется каждые 15 минут. Как я могу эффективно получить остатки, но не перезапускать весь набор данных как ввод каждый раз? поскольку только 1 значение обновляется каждый раз, остальные 999 значений остаются такими же, как в прошлый раз.
Чжан
один из возможных методов, возможно, использовать первые 1000 значений для прогнозирования следующих 1000 значений (хотя LOESS поддерживает только 4 значения прогнозирования), а затем вычислять остаток как разницу между фактическим значением и соответствующим значением прогнозирования. Затем переучивать модель каждые 1000 значений. Однако, это не оригинальная модель LOESS, которую я хочу вообще :-(
zhang

Ответы:

1

Позвольте мне переформулировать это в нечто более знакомое мне. ARIMA является аналогом приближения PID. Я цельный. MA - это P. AR можно выразить в виде разностных уравнений, которые являются D-членом. LOESS - это аналог установки наименьших квадратов (на самом деле, высокотехнологичный старший брат).

Так что, если я хочу улучшить модель второго порядка (PID), что можно сделать?

  • Во-первых, я мог бы использовать Фильтр Калмана, чтобы обновить модель одним фрагментом новой информации.
  • Я также мог бы взглянуть на то, что называется «деревья с градиентным усилением». Используя их аналог, я бы сделал вторую модель ARIMA, чьи входы представляют собой необработанные входные данные, подаваемые на первый, дополненные ошибками первого.
  • Я хотел бы рассмотреть в PDF-файл ошибок для нескольких режимов. Если бы я мог кластеризовать ошибки, то я мог бы хотеть разделить модели или использовать модель Mixture для разделения входных данных на подмодели. Субмодели могут лучше справляться с локальной феноменологией, чем одна крупномасштабная модель.

Один из вопросов, которые я не смог задать, это «что означает производительность?». Если у нас нет четко заявленной меры благости, тогда невозможно определить, «улучшается» ли метод кандидата. Кажется, вам нужно лучшее моделирование, более короткое время вычислений и более эффективное использование информации. Наличие эфемерид о фактических данных также может сообщить об этом. Если вы моделируете ветер, тогда вы можете знать, где искать дополнения к моделям или найти полезные преобразования для ваших данных.

EngrStudent
источник
1

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

Модель Лесса работает путем подбора взвешенной регрессии к различным подмножествам данных. Только часть данных используется для каждого соответствия. Таким образом, каждый раз, когда вы перестраиваете модель, отбрасывая одну точку данных на одном конце и добавляя другую на противоположном конце, вам технически нужно соответствовать только локальным регрессиям, которые используют первую и последнюю точку. Все локальные регрессии между ними будут одинаковыми. Сколько именно этих не затронутых локальных регрессий будет зависеть от вашего параметра сглаживания в лессе.

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

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

Питер Эллис
источник