Подтвердить что ты не робот

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

  • Какие существуют алгоритмы для прогнозирования/регрессии временных рядов?
    • Как насчет использования нейронных сетей? (лучшие документы об этой теме?)
    • Есть ли библиотеки python/фрагменты кода, которые могут помочь?
4b9b3361

Ответ 1

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

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

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

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

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

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

  • NumPy и SciPy - это для научного программирования в Python
  • Существует интерфейс Python для R, называемый RPy
  • statsmodel содержит классические методы статистической модели, включая авторегрессионные модели; он хорошо работает с Pandas, популярным пакетом анализа данных
  • scikits.learn, MDP, MLPy, Orange - это сборники алгоритмов машинного обучения
  • PyMC Модуль python, который реализует байесовские статистические модели и алгоритмы подгонки, включая цепь Маркова Монте-Карло.
  • PyBrain содержит (помимо всего прочего) реализации корневой и рекуррентной нейронных сетей
  • на сайте Gaussian Process имеется список программного обеспечения GP, включая две реализации Python
  • mloss - это каталог программного обеспечения для обучения с открытым исходным кодом.

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

Два подхода

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

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

tsfresh вычисляет огромное количество функций

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

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

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