- What algorithms exist for time series forecasting/regression ?
- What about using neural networks ? (best docs about this topic ?)
- Существуют ли библиотеки/фрагменты кода Python, которые могут помочь?
Прогнозирование временных рядов (в конечном итоге с помощью python)
Ответы (7)
Классические подходы к регрессии временных рядов:
авторегрессионные модели (о них есть целая литература)
Разложение Фурье или подобное для извлечения периодических компонентов сигнала (т. Е. Скрытых колебаний в данных)
Другие менее распространенные подходы, о которых я знаю, это
Анализ медленных признаков, алгоритм, извлекающий движущие силы временного ряда, например, параметры хаотического сигнала
Подходы нейронной сети (НС) либо с использованием рекуррентных НС (т. е. построенных для обработки временных сигналов), либо с классическими НС с прямой связью, которые получают в качестве входной части прошлые данные и пытаются предсказать момент в будущем; преимущество последнего в том, что рекуррентные НС, как известно, имеют проблему с учетом далекого прошлого
На мой взгляд, для анализа финансовых данных важно получить не только наилучшую экстраполяцию временного ряда, но и надежный доверительный интервал, поскольку в зависимости от этого результирующая инвестиционная стратегия может сильно различаться. Вероятностные методы, такие как гауссовские процессы, дают вам это «бесплатно», поскольку они возвращают распределение вероятностей по возможным будущим значениям. При использовании классических статистических методов вам придется полагаться на методы начальной загрузки.
Существует множество библиотек Python, предлагающих статистические инструменты и инструменты машинного обучения, вот те, с которыми я больше всего знаком:
- NumPy и SciPy необходимы для научного программирования на Python.
- Существует интерфейс Python для R, который называется RPy.
- statsmodel содержит методы классического статистического моделирования, включая авторегрессионные модели; он хорошо работает с Pandas, популярным пакетом анализа данных.
- scikits.learn, MDP, MLPy, Orange — это наборы алгоритмов машинного обучения.
- PyMC Модуль Python, который реализует байесовские статистические модели и алгоритмы подбора, включая цепь Маркова Монте-Карло.
- PyBrain содержит (среди прочего) реализации нейронных сетей с прямой и рекуррентной связью.
- на сайте Gaussian Process есть список программного обеспечения GP, включая две реализации Python.
- mloss — это каталог программного обеспечения для машинного обучения с открытым исходным кодом.
pandas
— отличный проект для управления последовательностями данных, особенно когда важны даты. Однако, насколько я знаю, он не содержит многих алгоритмов прогнозирования и регрессии, кроме базовых статистических инструментов. См., например, pandas.pydata.org/pandas-docs/dev/computation.html.
- person pberkes; 12.12.2012
Я понятия не имею о библиотеках Python, но в R есть хорошие алгоритмы прогнозирования с открытым исходным кодом. См. пакет forecast для кода и ссылок для прогнозирования временных рядов.
Два подхода
Существует два способа обработки временных структурированных входных данных для классификации, регрессии, кластеризации, прогнозирования и связанных с ними задач:
- Специальная модель временных рядов. Алгоритм машинного обучения напрямую включает такие временные ряды. Такая модель подобна черному ящику, и поведение модели может быть трудно объяснить. Примером являются авторегрессионные модели.
- Подход, основанный на признаках: здесь временные ряды сопоставляются с другим представлением, возможно, с меньшим размером. Это означает, что алгоритм выделения признаков вычисляет такие характеристики, как среднее или максимальное значение временного ряда. Затем функции передаются в виде матрицы функций в «обычное» машинное обучение, такое как нейронная сеть, случайный лес или машина опорных векторов. Этот подход имеет преимущество в лучшей объяснимости результатов. Кроме того, это позволяет нам использовать хорошо разработанную теорию контролируемого машинного обучения.
tsfresh просчитывает огромное количество признаков
Пакет python tsfresh вычисляет огромное количество таких функций из pandas.DataFrame содержащие временной ряд. Вы можете найти его документацию по адресу http://tsfresh.readthedocs.io/en/latest/. .
Отказ от ответственности: я являюсь одним из авторов tsfresh.
test example
(github.com/blue-yonder/tsfresh/blob /master/notebooks/) работают нормально. Однако same example
, но с tiny changes
вообще работать не будет - content.screencast.com/users/SASH2012/folders/Jing/media/ Пожалуйста, сообщите.
- person SpanishBoy; 23.12.2016
y
для случайных переменных. Каждая функция временного ряда, о которой вы только можете подумать, бесполезна для случайной цели.
- person MaxBenChrist; 23.12.2016
Говоря только об алгоритмах, стоящих за ними, я недавно использовал двойное экспоненциальное сглаживание в проекте и он преуспел, прогнозируя новые значения, когда в данных есть тенденция.
Реализация довольно тривиальна, но, возможно, алгоритм недостаточно проработан для вашего случая.
Пробовали ли вы использовать автокорреляцию для поиска периодических закономерностей во временных рядах? Вы можете сделать это с помощью функции numpy.correlate.
Групповой метод обработки данных широко используется для прогнозирования финансовых данных.
Если вы хотите понять прогнозирование временных рядов с использованием Python, ссылка ниже очень полезна.
https://github.com/ManojKumarMaruthi/Time-Series-Forecasting