Вопрос или проблема
Я работаю над задачей классификации человеческой активности на основе данных о позах. Из-за качества изображений при применении модели оценивания поз, в данных есть множество пропущенных значений. Мой конвейер преобразования данных для этого обучающего набора включает интерполяцию пропущенных значений и заполнение их назад/вперед с предопределённым лимитом.
Мой вопрос: когда и где следует применять этот конвейер к обучающим данным: на всем наборе данных или на каждом фрагменте, который будет получен с помощью скользящего окна?
Поскольку в процессе вывода я буду получать данные о позах по кадрам в реальном времени до тех пор, пока не соберу фрагмент длиной window_size, следует ли применить конвейер к этому окну?
Ответ или решение
Для применения трансформационного пайплайна данных на неведомых данных в задаче классификации временных рядов необходимо учитывать несколько факторов, касающихся как предобработки данных во время обучения, так и во время инференса.
1. Применение трансформационного пайплайна к тренировочным данным
Ваш пайплайн для тренировочного набора данных включает интерполяцию пропущенных значений и методы импутации с использованием backfill/forwardfill. Теперь давайте рассмотрим, как и когда применять его:
-
При обработке тренировочных данных: В общем случае, вы должны применять ваш пайплайн на всем тренировочном наборе данных. Это позволит модели учесть все потенциальные пропуски и аномалии в данных, которые могут возникнуть в процессе сбора данных о движении.
-
При использовании слайдов (sliding window): С точки зрения алгоритмов обработки временных рядов, при использовании метода слайдового окна, каждая срезка данных – это подмножество полной последовательности данных. Таким образом, вам нужно применять свой пайплайн к каждому срезу данных (каждому окну) индивидуально, чтобы гарантировать, что интерполяция и импутация выполняются правильно, особенно если ваши данные имеют временные зависимости.
2. Применение пайплайна на неведомых данных (инференс)
На этапе инференса, когда вы получаете новые данные в реальном времени по одному кадру:
-
Обработка окна: Вам следует применять тот же трансформационный пайплайн к каждому новому срезу (окну) данных, когда вы накапливаете его до достижения длины размером окна (window_size). Это важно, так как на этапе инференса ваши данные могут содержать пропуски, аналогично тому, что вы видели в тренировочных данных.
- Сбор данных в окно: Организуйте поступающие данные в массив или структуру, которая будет вместить ваш размер окна.
- Применение пайплайна: После достижения необходимого размера окна примените вашу предобработку: сначала интерполяцию, затем backfill/forwardfill. Это гарантирует, что ваша модель будет иметь корректные данные для предсказания классов активности.
Заключение
Таким образом, ваша трансформационная обработка должна применяться как к тренировочному набору данных в целом, так и к каждому окну данных на этапе инференса. Это позволит вашей модели наиболее точно учитывать пропуски и поддерживать качество предсказаний на основе входных данных. Удачи в вашей работе по классификации активности человека!