Я хотел бы построить алгоритм, который мог бы анализировать любые временные ряды и «автоматически» выбирать лучший традиционный / статистический метод прогнозирования (и его параметры) для анализируемых данных временных рядов.
Было бы возможно сделать что-то подобное? Если да, можете ли вы дать мне несколько советов о том, как это можно сделать?
time-series
forecasting
python
StatsNewbie123
источник
источник
Ответы:
Во-первых, вы должны отметить, что подход, описанный IrishStat, специфичен для моделей ARIMA, а не для какого-либо общего набора моделей.
Чтобы ответить на ваш главный вопрос «Можно ли автоматизировать прогнозирование временных рядов?»:
Да, это так. В моей области прогнозирования спроса большинство коммерческих пакетов прогнозирования делают это. Несколько пакетов с открытым исходным кодом также делают это, в частности функции auto.arima () (автоматизированное прогнозирование ARIMA) Роба Хиндмана и ETS () (прогнозирование с автоматическим экспоненциальным сглаживанием) из пакета прогнозирования с открытым исходным кодом в R. Подробную информацию об этих двух функциях см. Здесь. , Также есть реализация auto.arima на Python, которая называется Pyramid , хотя, по моему опыту, она не настолько зрелая, как пакеты R.
Как коммерческие продукты, о которых я упоминал, так и пакеты с открытым исходным кодом, о которых я говорил, работают на основе идеи использования информационных критериев для выбора наилучшего прогноза: вы выбираете несколько моделей, а затем выбираете модель с самым низким AIC, BIC, AICc, и т. д .... (обычно это делается вместо проверки образца).
Однако существует серьезное предостережение: все эти методы работают в рамках одного семейства моделей. Они выбирают наилучшую возможную модель из набора моделей ARIMA или наилучшую возможную модель из набора моделей экспоненциального сглаживания.
Это гораздо сложнее сделать, если вы хотите выбирать из разных семейств моделей, например, если вы хотите выбрать лучшую модель из ARIMA, экспоненциального сглаживания и метода Theta. Теоретически, вы можете сделать это так же, как в рамках одного семейства моделей, то есть с помощью информационных критериев. Однако на практике вам необходимо точно рассчитать AIC или BIC для всех рассматриваемых моделей, и это является серьезной проблемой. Возможно, было бы лучше использовать перекрестную проверку временных рядов или выборочную проверку вместо информационных критериев, но это потребует гораздо больших вычислительных затрат (и утомителен для кода).
Пакет пророка Facebook также автоматизирует генерацию прогноза на основе общих аддитивных моделей. Подробнее см. Здесь . Однако Пророк подходит только для одной модели, хотя и очень гибкой модели с множеством параметров. Подразумеваемое предположение Пророка заключается в том, что GAM - это «единственная модель, которая управляет ими всеми», что не может быть теоретически обоснованным, но очень прагматичным и полезным для сценариев реального мира.
Еще одна оговорка, которая применима ко всем вышеупомянутым методам: по-видимому, вы хотите сделать автоматическое прогнозирование временных рядов, потому что вы хотите прогнозировать несколько временных рядов, слишком много для анализа вручную. В противном случае вы можете просто провести свои собственные эксперименты и найти лучшую модель самостоятельно. Вы должны помнить, что подход автоматического прогнозирования никогда не найдет наилучшую модель для каждого временного ряда - он даст достаточно хорошую модель в среднем по всем временным рядам, но все же возможно, что некоторые из этих временных рядов будут иметь лучшие модели, чем те, которые были выбраны автоматическим методом. Смотрите этот постдля примера этого. Проще говоря, если вы собираетесь использовать автоматическое прогнозирование - вам придется терпеть «достаточно хорошие» прогнозы вместо наилучших возможных прогнозов для каждого временного ряда.
источник
Мой предложенный подход охватывает модели, которые являются гораздо более общими, чем ARIMA, поскольку они включают в себя потенциал для сезонных манекенов, которые могут изменяться со временем, несколько уровней, множество трендов, параметры, которые могут изменяться со временем, и даже отклонения ошибок, которые могут изменяться со временем. Это семейство более точно называется моделями ARMAX, но для полной прозрачности исключается (редкий) вариант, имеющий мультипликативную структуру.
Вы просили советы, и я считаю, что это может быть хорошим для начала.
Я бы посоветовал вам написать код для отслеживания / эмуляции этой потоковой диаграммы / рабочего процесса. «Лучшая модель» может быть найдена путем оценки заданного вами критерия ... это может быть MSE / AIC для подобранных данных или MAPE / SMAPE для скрытых данных или любой другой критерий по вашему выбору.
Помните, что детализация каждого из этих этапов может быть довольно простой, если вы не знаете о некоторых конкретных требованиях / целях / ограничениях анализа временных рядов, НО это может быть (должно быть!) Более сложным, если у вас есть более глубокое понимание / изучение / оценка сложностей / возможностей, присутствующих в тщательном анализе временных рядов.
Меня попросили дать дальнейшие указания относительно того, как следует автоматизировать моделирование временных рядов (или моделирование в целом). Https://stats.stackexchange.com/search?q=peeling+an+onion содержит некоторые из моих рекомендаций по «Пилинг лука» и связанные с ним задачи.
AUTOBOX фактически детализирует и показывает промежуточные шаги, поскольку он формирует полезную модель и может быть полезным учителем в этом отношении. Вся научная идея состоит в том, чтобы «добавить то, что кажется необходимым» и «удалить то, что кажется менее чем полезным». Это итеративный процесс, предложенный Боксом и Бэконом в более ранние времена.
Модели должны быть достаточно сложными (достаточно причудливыми), но не слишком сложными (причудливыми). Предположение, что простые методы работают со сложными проблемами, не согласуется с научным методом, следующим за Роджером Бэконом и множеством последователей Бэкона. Как однажды сказал Роджер Бэкон, и я часто перефразировал: «Наука - это поиск повторяющихся паттернов. Обнаружение аномалий означает выявление значений, которые не повторяют повторяющиеся закономерности. Для тех, кто знает пути Природы, легче заметить ее отклонения, и, с другой стороны, тот, кто знает ее отклонения, будет более точно описывать ее пути. Каждый изучает правила, наблюдая, когда текущие правила терпят неудачу. В духе Бэкона, определяя, когда идентифицированная в настоящее время «лучшая модель / теория» неадекватна, можно затем перейти к «лучшему представлению».
По моим словам, «Тьюки предложил Исследовательский анализ данных (EDA), который предложил схемы уточнения модели на основе доказанного недостатка модели, предложенного данными». Это сердце AUTOBOX и науки. EDA предназначена для того, чтобы увидеть, что данные могут сказать нам, помимо формальной задачи моделирования или проверки гипотез.
Лакмусовый тест программы автоматического моделирования довольно прост. Разделяет ли он сигнал и шум без чрезмерной подгонки? Эмпирические данные свидетельствуют о том, что это можно и было сделано. Точность прогнозирования часто вводит в заблуждение, потому что будущее не несет ответственности за прошлое и в зависимости от того, какое происхождение вы выбираете, результаты могут и действительно различаться.
источник