Для Python есть более крутые библиотеки временных рядов, чем вы можете пока что представить. Возможно, вы слышали о некоторых из них:

Каждая из этих библиотек имеет разные методы для решения различных задач обучения временных рядов - регрессии, классификации и прогнозирования. Они имеют тенденцию различаться в выборе методов, которые они используют, от традиционных статистических методов (например, ARIMA) до динамического деформирования временных рядов, символьных аппроксимаций временных рядов и т. Д.

Для тех, кто интересуется классификацией временных рядов (TSC) - давайте поговорим о двух типах методов машинного обучения, популярных в наши дни. Один из них - РАКЕТА, а другой - глубокое обучение. Для обзора методов TSC и ROCKET в частности, вам следует прочитать следующие сообщения Alexandra Amidon:

РАКЕТА против глубокого обучения

Принцип таков: ROCKET - один из лучших готовых универсальных алгоритмов классификации временных рядов. И еще есть Mini-ROCKET, который быстрее тренируется без больших потерь (если таковые имеются) в производительности. Оба довольно быстрые. Как ни странно, я бы сказал, что MiniROCKET, в частности, быстрее, чем многие алгоритмы типа дерева решений с градиентным усилением, такие как XGBoost или LightGBM, или, по крайней мере, на одном уровне. По моему набору данных дело в том, что они быстрее И точнее.

То же самое нельзя сказать о методах глубокого обучения - те, которые имеют дело с временными рядами, обычно заимствуют или адаптируют архитектуры, обычно связанные с компьютерным зрением и НЛП. Итак, у вас есть люди, экспериментирующие с ResNets, Transformers, LSTM, CNN, Temporal Convolutional Networks, методами на основе вейвлетов и различными другими гибридами всего этого. На их обучение может уйти намного больше времени, и тогда вы можете потратить все время на настройку гиперпараметров. Тем не менее, возможно, стоит хотя бы изучить, как модели глубокого обучения работают с вашими данными. На всякий случай.

sktime vs tsai

Многие из вас, без сомнения, слышали о sktime - как следует из названия, он черпает вдохновение из scikit-learn с аналогичным API. Думайте об этом как о модуле временных рядов расширенного scikit-learn. Эта библиотека имеет множество алгоритмов и методов, включая реализацию интервальных классификаторов, таких как контролируемый лес временных рядов, а также ROCKET и MiniRocket - все они считаются одними из лучших с точки зрения задач TSC.

Но как насчет глубокого обучения? В sktime нет методов глубокого обучения, но есть сопутствующий пакет для sktime под названием sktime-dl, который включает в себя все крутые архитектуры глубокого обучения, упомянутые выше. Проблема, согласно ссылке на GitHub, в том, что он постоянно меняется. На их странице написано, что они работают над этим летом, чтобы он был совместим с текущим, последним стабильным выпуском sktime. А пока, возможно, стоит изучить некоторые альтернативы - отсюда и цай.

tsai - ИИ временных рядов

Цель этого поста - познакомить с цай. Так что же цай приносит на стол?

  • множество архитектур глубокого обучения, реализованных с библиотеками PyTorch и fastai.
  • Классификация и регрессионные модели ROCKET и MiniROCKET.

Вот изображение, на котором показаны некоторые модели, которые есть в вашем распоряжении:

Внутри каждой из этих категорий есть еще больше вариантов архитектур. Например, вот изображение архитектуры RNN_FCN - Ячейка RNN некоторого разнообразия + полностью подключенная сеть в конце. Вы можете выбрать ванильный RNN, GRU или LSTM для повторяющегося сетевого заголовка - независимо от того, в конце есть блок классификации.

Если вы поклонник сверточных нейронных сетей (CNN) для компьютерного зрения или последовательных данных, как вы можете найти в обработке естественного языка (NLP), вот список моделей, которые используют сверточные блоки тем или иным образом, формой или форма:

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