Вопрос или проблема
Отказ от ответственности: Математики, пожалуйста, не сердитесь на меня за использование некоторых терминов в этом посте. Я инженер. 🙂
Предыстория:
Итак, я в настоящее время работаю над задачей, где мне нужно сгенерировать последовательность временного ряда процесса, в котором n участников движутся в 2D-пространстве. Но я не знаю, возможно ли это вообще. Процесс изучается некоторой моделью машинного обучения M.
Кстати! Я никогда не работал с данными временных рядов, но у меня есть хороший опыт обучения моделей на изображениях и сигналах, без последовательностей, поэтому я читаю об этом на ходу.
Итак, чтобы начать с чего-то очень простого, я взял набор данных о позициях футболистов отсюда: Here. И я пытаюсь смоделировать это как задачу с обучением под присмотром, где я пытаюсь предсказать позиции n игроков в момент времени T, учитывая их позиции в момент времени T-1. Но я очень быстро понял, что это не сработает, потому что позиции игроков также зависят от позиции мяча и игроков команды соперника.
Итак, мои вопросы следующие:
1. Как мне смоделировать набор данных? Будет ли это просто (Nx2xNo.Timestamps) как 3D-тензорный набор данных (N соответствует игрокам. 2 для x-позиции и y-позиции, и количество временных меток как последнее измерение)?
-
Правильно ли я моделирую проблему генерации временного ряда как задачу с обучением под присмотром?
-
Какими предобработками данных мне следует заниматься? Как мне справляться с пропусками в данных?
-
Причина, по которой я отказался от идеи использования футбольного набора данных: Вот снова, потому что он включает только позиции одной команды. Другая команда не носила датчики :-(. Я читал кое-что об экзогенных переменных, также влияющих на процесс, читая о модели ARIMA.
-
Если все это возможно, и я надеюсь, что это так (ведь невозможно ничего!), какими моделями мне нужно заинтересоваться? Потому что в конечном итоге мне придется работать над этой проблемой с совершенно другим набором данных. У меня есть прошлый опыт обучения моделей нейронных сетей, таких как CNN и ANN, и я чувствую себя очень комфортно, работая с нейронными сетями, и, в идеале, хотел бы продолжать делать это здесь. До сих пор мои исследования указывали мне на LSTM, RNN и модель ARIMA.
Пожалуйста, направьте меня в этом, поскольку я очень новичок в анализе временных рядов.
Данные временных рядов должны содержать все ваши наблюдения с некоторой стандартной временной зависимостью (здесь это довольно очевидно). Если я хочу проверить теорию на какой-то модели и мне нужен какой-то набор данных, параметры будут такими: временные метки * количество признаков (включает положение игрока относительно источника). Двумерного тензора будет достаточно. Моя причина не делать трехмерный тензор заключается в том, что это приведет к более сложному сценарию, где мне придется соотносить третье измерение (количество игроков [N]) с первыми двумя измерениями для предсказания. Лучше упростить позиции и в одной строке иметь несколько меток, так как каждая позиция будет иметь значение для моей модели.
Генерация временных рядов обычно попадает под непрерывное прогнозирование с использованием предыдущих наблюдений. Я бы предпочел отнести это к версиям обучения с подкреплением. Да, вы можете работать с учетом обучения с учителем, но также попробуйте подход RL.
По поводу пропусков в данных, я бы сказал, что удалите их, если они составляют не более 10-15% данных. Нет фиксированных стандартов на указанный процент. Если он больше, заполните интерполяцией или скользящим средним (оба метода мне принесли пользу). Остальная предобработка зависит от типа данных, нормализации данных, удаления выбросов и т. д.
Да, это будет влиять на данные, но вы можете сгенерировать данные, используя различные колебания синусоидальной волны для ваших тестов или использовать любые другие функции для генерации сигнала (предпочтительно scipy).
В настоящее время я тестирую комбинацию двунаправленной LSTM – CNN для своего временного ряда, да, ARIMA хорош, но небольшой эксперимент не повредит. Я бы сказал, выбрать комбинацию CNN и любой из RNN для временных рядов.
Надеюсь, это поможет.
Ответ или решение
Конечно, давайте разберем ваш вопрос подробно.
Генерация временных рядов – многомерные временные ряды
Контекст задачи
Вы хотите моделировать движение футболистов на игровом поле как временной ряд, чтобы предсказывать будущие позиции игроков в зависимости от их предыдущего состояния. Однако, чтобы более точно моделировать движения, необходимо учитывать и другие факторы, такие как положение мяча и игроков другой команды.
Ответ на вопросы
-
Как моделировать набор данных?
Ваша идея использовать 3-мерный тензор формата (N x 2 x Количество меток времени) вполне подходит для вашей задачи. Здесь:- N – это количество игроков,
- 2 – это количество координат (X и Y),
- Количество меток времени – это временной промежуток, в котором вы наблюдаете за перемещениями.
Такой подход позволит вам отслеживать позицию каждого игрока во времени, однако желательно еще включить дополнительные параметры, такие как позиции мяча и противников, что сделает модель более реалистичной.
-
Правильна ли ваша модель задачи как задача обучения с учителем?
Да, подход через обучение с учителем применим здесь, так как справиться с задачей предсказания будущих позиций можно, обучившись на исторических данных. Тем не менее, стоит также рассмотреть подход с подкреплением (Reinforcement Learning), особенно для моделирования адаптивных стратегических решений, которые игроки могут принимать в зависимости от игровой ситуации. -
Какие шаги предобработки данных необходимы и как работать с отсутствующими значениями?
- Предобработка: Нормализация данных, удаление выбросов и масштабирование могут существенно улучшить качество моделирования.
- Отсутствующие значения: Если их количество невелико (до 10-15% от общих данных), удалите их. В противном случае используйте методы интерполяции или скользящее среднее для заполнения пропусков.
-
Краткое размышление о влиянии внешних переменных и выборе датасета
Понимание влияния экзогенных переменных, таких как позиции противников и мяча, может улучшить модель. Если текущий датасет не учитывает эти данные, попробуйте создавать или симулировать ансамбли данных с учетом таких факторов. -
Какие модели использовать?
Вы уже верно заметили, что рекуррентные нейронные сети (RNN), особенно LSTM (Long Short-Term Memory), являются отличными кандидатами для анализа временных рядов. Попробуйте также комбинации с CNN (сверточными нейронными сетями) для извлечения пространственных закономерностей. Помимо этого, метод ARIMA может быть хорош для традиционного подхода в анализе временных рядов.
Рекомендация
Расширьте опыт работы с моделями глубокого обучения на более сложных временных последовательностях и рассмотрите возможность использования архитектур гибридных нейронных сетей, сочетающих пространственные и временные аспекты данных. Переход на такой уровень одновременно углубит ваши навыки в анализе временных рядов и повысит точность моделей в долгосрочном прогнозировании.
Надеюсь, это поможет вам лучше ориентироваться в вашей задаче и продолжить успешное изучение области анализа временных рядов.