В настоящее время я работаю с данными временных рядов, я знаю, что могу использовать модель LOESS / ARIMA.
Данные записываются в вектор, длина которого равна 1000, что является очередью, обновляемой каждые 15 минут,
Таким образом, старые данные будут появляться, а новые - в векторе.
Я могу перезапустить всю модель в планировщике, например, переучивать модель каждые 15 минут, то есть использовать целое значение 1000 для обучения модели LOESS, однако это очень неэффективно, поскольку каждый раз вставляется только одно значение, а другое 999 значений все так же, как в прошлый раз.
Итак, как я могу добиться лучшей производительности?
Большое спасибо
Ответы:
Позвольте мне переформулировать это в нечто более знакомое мне. ARIMA является аналогом приближения PID. Я цельный. MA - это P. AR можно выразить в виде разностных уравнений, которые являются D-членом. LOESS - это аналог установки наименьших квадратов (на самом деле, высокотехнологичный старший брат).
Так что, если я хочу улучшить модель второго порядка (PID), что можно сделать?
Один из вопросов, которые я не смог задать, это «что означает производительность?». Если у нас нет четко заявленной меры благости, тогда невозможно определить, «улучшается» ли метод кандидата. Кажется, вам нужно лучшее моделирование, более короткое время вычислений и более эффективное использование информации. Наличие эфемерид о фактических данных также может сообщить об этом. Если вы моделируете ветер, тогда вы можете знать, где искать дополнения к моделям или найти полезные преобразования для ваших данных.
источник
Это другой вопрос в зависимости от того, используете ли вы лесс или модель ARIMA. Сейчас я отвечу только на вопрос о лёссе, так как подозреваю, что в случае ARIMA возможна небольшая эффективность, кроме, возможно, наличия хорошего набора начальных значений.
Модель Лесса работает путем подбора взвешенной регрессии к различным подмножествам данных. Только часть данных используется для каждого соответствия. Таким образом, каждый раз, когда вы перестраиваете модель, отбрасывая одну точку данных на одном конце и добавляя другую на противоположном конце, вам технически нужно соответствовать только локальным регрессиям, которые используют первую и последнюю точку. Все локальные регрессии между ними будут одинаковыми. Сколько именно этих не затронутых локальных регрессий будет зависеть от вашего параметра сглаживания в лессе.
Вы можете взломать любой пакет, который вы используете, чтобы соответствовать вашей модели, чтобы он мог взять большинство локальных регрессий из предыдущего соответствия и соответствовать только тем, которые необходимы в начале и в конце данных.
Тем не менее, мне кажется, это стоило бы делать только в том случае, если затраты на дополнительное время программирования были существенно меньше, чем затраты на компьютерное время для подгонки модели с нуля каждые 15 минут. Только с 1000 точками данных, конечно, не такая уж большая вещь, чтобы соответствовать модели с нуля каждый раз.
источник