Прогнозирование временных рядов (в конечном итоге с помощью python)

  • What algorithms exist for time series forecasting/regression ?
    • What about using neural networks ? (best docs about this topic ?)
    • Существуют ли библиотеки/фрагменты кода Python, которые могут помочь?

person gpilotino    schedule 27.08.2010    source источник
comment
Было бы полезно, если бы вы могли объяснить свое приложение (с какими временными рядами вы работаете), потому что лучший метод — это функция безумия. Ответов на вопрос о существовании вашего алгоритма много.   -  person Pete    schedule 02.09.2010
comment
я работаю с финансовыми данными (временные ряды форекс)   -  person gpilotino    schedule 05.09.2010
comment
Мое любимое! Самое главное — сначала охарактеризовать случайность в вашем временном ряду; если вы обнаружите, что это случайно, то любая детерминированная методология может работать только по счастливой случайности. На рынках вы можете обнаружить оттенки неслучайного поведения то здесь, то там, и они будут появляться и исчезать. Таким образом, успех детерминированных методов во многом зависит от вашей способности адаптироваться.   -  person Pete    schedule 06.09.2010


Ответы (7)


Классические подходы к регрессии временных рядов:

Другие менее распространенные подходы, о которых я знаю, это

  • Анализ медленных признаков, алгоритм, извлекающий движущие силы временного ряда, например, параметры хаотического сигнала

  • Подходы нейронной сети (НС) либо с использованием рекуррентных НС (т. е. построенных для обработки временных сигналов), либо с классическими НС с прямой связью, которые получают в качестве входной части прошлые данные и пытаются предсказать момент в будущем; преимущество последнего в том, что рекуррентные НС, как известно, имеют проблему с учетом далекого прошлого

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

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

  • NumPy и SciPy необходимы для научного программирования на Python.
  • Существует интерфейс Python для R, который называется RPy.
  • statsmodel содержит методы классического статистического моделирования, включая авторегрессионные модели; он хорошо работает с Pandas, популярным пакетом анализа данных.
  • scikits.learn, MDP, MLPy, Orange — это наборы алгоритмов машинного обучения.
  • PyMC Модуль Python, который реализует байесовские статистические модели и алгоритмы подбора, включая цепь Маркова Монте-Карло.
  • PyBrain содержит (среди прочего) реализации нейронных сетей с прямой и рекуррентной связью.
  • на сайте Gaussian Process есть список программного обеспечения GP, включая две реализации Python.
  • mloss — это каталог программного обеспечения для машинного обучения с открытым исходным кодом.
person pberkes    schedule 05.09.2010
comment
pandas является более активным проектом: pandas.pydata.org - person Taha Jahangir; 30.09.2012
comment
Да, pandas — отличный проект для управления последовательностями данных, особенно когда важны даты. Однако, насколько я знаю, он не содержит многих алгоритмов прогнозирования и регрессии, кроме базовых статистических инструментов. См., например, pandas.pydata.org/pandas-docs/dev/computation.html. - person pberkes; 12.12.2012
comment
Спасибо ! Я искал идеи о том, как построить общую внутреннюю модель для датчика (например, IMU или гидролокатора), работающего в шумной среде, и это дает хорошие идеи в дополнение к традиционному моделированию шума. - person kert; 29.11.2013

Я понятия не имею о библиотеках Python, но в R есть хорошие алгоритмы прогнозирования с открытым исходным кодом. См. пакет forecast для кода и ссылок для прогнозирования временных рядов.

person Rob Hyndman    schedule 28.08.2010

Два подхода

Существует два способа обработки временных структурированных входных данных для классификации, регрессии, кластеризации, прогнозирования и связанных с ними задач:

  1. Специальная модель временных рядов. Алгоритм машинного обучения напрямую включает такие временные ряды. Такая модель подобна черному ящику, и поведение модели может быть трудно объяснить. Примером являются авторегрессионные модели.
  2. Подход, основанный на признаках: здесь временные ряды сопоставляются с другим представлением, возможно, с меньшим размером. Это означает, что алгоритм выделения признаков вычисляет такие характеристики, как среднее или максимальное значение временного ряда. Затем функции передаются в виде матрицы функций в «обычное» машинное обучение, такое как нейронная сеть, случайный лес или машина опорных векторов. Этот подход имеет преимущество в лучшей объяснимости результатов. Кроме того, это позволяет нам использовать хорошо разработанную теорию контролируемого машинного обучения.

tsfresh просчитывает огромное количество признаков

Пакет python tsfresh вычисляет огромное количество таких функций из pandas.DataFrame содержащие временной ряд. Вы можете найти его документацию по адресу http://tsfresh.readthedocs.io/en/latest/. .

введите описание изображения здесь

Отказ от ответственности: я являюсь одним из авторов tsfresh.

person MaxBenChrist    schedule 27.10.2016
comment
Ребята, как использовать эту библиотеку, если у нас есть метки Regression/Multiclass? Ваш 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
comment
Вы используете случайную цель. Для случайной цели никакая функция не имеет значения. Следовательно, алгоритм удалит все функции. - person MaxBenChrist; 23.12.2016
comment
Я бы сказал, что некоторые функции имеют очень небольшую ценность для статистического теста, но не имеют отношения ко всему. Как я могу вместо этого добавить свой собственный feature_selector на основе Boruta? - person SpanishBoy; 23.12.2016
comment
на снимке экрана, который вы разместили выше, вы устанавливаете целевой вектор y для случайных переменных. Каждая функция временного ряда, о которой вы только можете подумать, бесполезна для случайной цели. - person MaxBenChrist; 23.12.2016

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

Реализация довольно тривиальна, но, возможно, алгоритм недостаточно проработан для вашего случая.

person GaretJax    schedule 30.08.2010

Пробовали ли вы использовать автокорреляцию для поиска периодических закономерностей во временных рядах? Вы можете сделать это с помощью функции numpy.correlate.

person Agnius Vasiliauskas    schedule 02.09.2010
comment
звучит интересно, у вас есть пример или ссылка с некоторыми фрагментами? - person gpilotino; 04.09.2010
comment
Я не знаю, поможет ли это, но вы можете попробовать проверить здесь - dr-adorio-adventures.blogspot.com/2010/04/ Также проверьте очень хорошую систему компьютерной алгебры Python SAGE- sagemath.org/doc/reference/sage/finance/time_series.html - person Agnius Vasiliauskas; 06.09.2010

Групповой метод обработки данных широко используется для прогнозирования финансовых данных.

person BrutForce    schedule 07.05.2012

Если вы хотите понять прогнозирование временных рядов с использованием Python, ссылка ниже очень полезна.

https://github.com/ManojKumarMaruthi/Time-Series-Forecasting

person Satya    schedule 09.08.2019