Классификация множественных временных рядов с использованием непрерывного вейвлет-преобразования

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

1 Введение: важность непрерывного вейвлет-преобразования

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

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

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

Кармен Херли и Джейден Маклин: вейвлет, анализ и методы (2018). Стр.73

Пс. В дополнение к CWT существует также Discrete Wavelet Transformation (DWT), который я не буду подробно объяснять в этом посте.

Непонятно, CWT не очень популярен в науке о данных. По этой причине в следующем посте я хотел бы показать, насколько легко CWT можно использовать для машинного и глубокого обучения (раздел 3). Во-первых, я хотел бы изложить некоторые основные теории относительно CWT (раздел 2).

2 Обработка сигнала с использованием непрерывного вейвлет-преобразования

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

2.1 Ограничение преобразования Фурье

Преобразование Фурье (FT) разлагает сигнал на частоты с помощью серии синусоидальных волн. Это помогает переключаться между временной и частотной областями. Для лучшего понимания FT рекомендую это полезное видео.

Чтобы проиллюстрировать ограничение FT, нам нужен очень простой стационарный и нестационарный сигнал. Стационарный сигнал не меняет своего среднего значения, дисперсии и ковариации с течением времени, вместо динамически нестационарного сигнала. В FT мы должны учитывать временную и частотную области. Во временной области показана амплитуда / сила сигнала как функция времени, которые могут быть представлены как отдельные изолированные частоты в частотной области после FT (рисунок 1).

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

2.2 Функциональность непрерывного вейвлет-преобразования (CWT)

Вейвлеты - это математические функции, которые часто называют мини-вейвлетами. В отличие от бесконечности (от-бесконечности до + бесконечности) синусовых функций, которые используются для FT, WT содержит:

  1. Различные семейства и типы вейвлетов с разной компактностью и плавностью.
  2. Которые имеют нулевое среднее и ограниченные (конечные) во времени

Различные формы вейвлетов позволяют нам выбрать тот, который лучше всего соответствует характеристикам, которые мы ищем в нашем сигнале. Наиболее распространенными вейвлетами для CWT являются вейвлеты «мексиканский, морле-гауссовский» (рис. 2). Их также называют «материнскими волнами».

Ps: Используемый пакет Python PyWavelets предоставляет дополнительные материнские вейвлеты, совместимые с CWT. Поэтому, пожалуйста, прочтите справочную информацию по API PyWavelets.

На рисунке 2 также показаны нулевое среднее и временное ограничение материнских вейвлетов. Оба эти условия позволяют локализовать одновременно и по времени, и по частоте. Кроме того, они обеспечивают необходимое интегрируемое и обратное вейвлет-преобразование. CWT можно описать следующим уравнением:

Следовательно, вейвлет-преобразование использует материнские вейвлеты для разделения временного ряда или изображения от 1D до ND на масштабированные компоненты. В связи с этим преобразование основано на концепциях масштабирования и смещения.

  • Масштабирование: растяжение или сжатие сигнала во времени на коэффициент масштабирования.
  • Сдвиг: перемещение вейвлетов с различным масштабом от начала до конца сигнала.

Масштабный коэффициент соответствует тому, насколько сигнал масштабируется во времени, и обратно пропорционален частоте. Это означает, что чем выше масштаб, тем точнее дискретность шкалы (Рисунок 3).

Соответственно, это помогает:

  • растянутые вейвлеты для улавливания медленных изменений; а также
  • сжимайте вейвлеты, чтобы зафиксировать резкие изменения сигнала.

Различные вейвлеты по масштабам и времени сдвигаются по всему сигналу и умножаются на его интервал выборки для получения физических значений, в результате чего получаются коэффициенты, которые являются функцией масштабов вейвлетов и параметров сдвига. Например, сигнал со 100 временными шагами, умноженный на 32 (в диапазоне от 1 до 33) масштабирует, дает 3200 коэффициентов. Это позволяет лучше охарактеризовать колебательное поведение сигналов с CWT.

Если мы применим CWT к нашему примеру нестационарного сигнала и визуализируем полученные коэффициенты в скалограмме, мы получим следующий результат.

Скалограмма на рисунке 4 показывает, где большая часть энергии (см. Цветную полосу справа от скалограммы) исходного сигнала содержится во времени и частоте. Кроме того, мы видим, что характеристики сигнала теперь отображаются с высоким разрешением. Таким образом, вы можете видеть резкие изменения всплеска, которые обнаруживаются сжатым вейвлетом с масштабом 1 и 2, и медленные изменения синусовой волны с помощью растянутых вейвлетов с масштабом от 15 до 25.

Ps: Резкие изменения часто являются самой важной частью данных как в восприятии, так и с точки зрения информации, которую они предоставляют.

Такая визуализация коэффициентов CWT, такая как 2D-скалограмма, может использоваться для улучшения различия между различными типами сигнала. В промышленном контексте это позволяет различать различные производственные процессы в машине (мониторинг процесса), выявлять такие компоненты, как подшипники, а также неисправности станков или инструментов (мониторинг состояния), просто как проблемы качества (мониторинг качества) на основе, например, не -стационарный датчик вибрации сигналов. Я надеюсь, что это поможет вам лучше понять, насколько мощным может быть CWT для анализа данных. Теперь уместно посмотреть, как можно использовать эту технику в машинном и глубоком обучении.

3 Классификация через CWT

В разделе 2.2 мы видели, что CWT преобразует одномерный временной ряд в двухмерные коэффициенты. Таким образом, коэффициенты представляют время, частоту и характеристики сигнала и, следовательно, гораздо больше информации, чем только временной ряд или FT (рисунок 4). Цель этого раздела - использовать полученную информацию в качестве основы для классификации с помощью распознавания образов (раздел 3.3) или выделения признаков (раздел 3.4). Ранее я представил краткий обзор выбранного примера набора данных (раздел 3.1) и того, как применить CWT к этим данным (раздел 3.2).

3.1 Используемый набор данных распознавания человеческой деятельности (HAR)

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

Имеется 7 532 серии и 2 947 тестовых образцов (измерений) с 50% перекрытием между каждым образцом. Каждая выборка состоит из девяти сигналов фиксированного размера со 128 показаниями и временными шагами.

Вы можете скачать и узнать больше о наборе данных по этой ссылке.

Мы загружаем почти необработанные инерционные сигналы, из которых отфильтрован только эффект гравитации.

полезная информация: формы (n_samples, n_steps, n_signals) X_train: (7352, 128, 9) и X_test: (2947, 128, 9) все X имеют среднее значение: 0,10 и стандартный вывод: 0,40

Как видите, сигналы практически нормализованы.

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

Судя по динамическому поведению сигналов (рисунок 5), этот набор данных кажется идеальным для применения вейвлет-преобразования.

3.2 Применение CWT в Python

Как уже упоминалось (раздел 2.2), мы можем различать разные события посредством визуализации коэффициента CWT вручную. Возможно ли это также для набора данных HAR?

Чтобы выяснить это, мы должны сначала установить пакет Python PyWavelets с помощью pip install PyWavelets или conda install pywavelets, которые мы можем использовать для применения вейвлет-преобразования к нашему набору данных.

Во-вторых, мы должны определить удобный материнский вейвлет и размер шкалы для непрерывной вейвлет-функции pywt.cwt. Что касается этого типа сигнала (рисунок 5), мы выбираем материнский вейвлет Morlet (рисунок 2) на основе его наиболее подходящей формы. Чтобы выбрать подходящий диапазон масштабов, давайте рассмотрим коэффициенты CWT трех различных диапазонов 32, 64 и 128, представленные в виде скалограммы (рисунок 6).

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

Для следующей иллюстрации шкала 64 кажется полезным компромиссом для достижения хорошей точности прогноза.

Как вы можете видеть (рисунок 7), вручную можно различать различные действия посредством визуализации коэффициентов CWT с помощью скалограммы. Не стесняйтесь выбирать другие сигналы или образцы, тогда вы увидите, что каждый сигнал более или менее удобен для различения шести действий. Например, вы не сможете достичь хорошей точности классификации неподвижных видов деятельности, таких как сидение, стояние и лежание, используя только общие данные датчика ускорения в координатах x, y и z.

Я уверен, что вы не захотите рассматривать и сравнивать тысячи скалограмм вручную для определения активности каждого образца. По этой причине мы сначала используем обычную нейронную сеть (раздел 3.3), а затем метод извлечения признаков плюс классификатор (раздел 3.4) для автоматической классификации различных действий набора данных HAR.

3.3 Обнаружение образов с использованием обычных нейронных сетей (CNN)

CNN очень эффективна для изучения характерных шаблонов меток на изображениях. Этот вид нейронной сети также может обрабатывать коэффициенты 2D CWT, такие как пиксели изображения, для прогнозирования соответствующей активности. Посмотрим, как работает эта комбинация.

Однако, прежде чем мы сможем начать кормить CNN, мы должны:

  1. преобразовать сигналы набора данных HAR с помощью функции pywt.cwt; а также
  2. приведите полученные коэффициенты в подходящий формат.

В этом случае мы также выберем Morlet Mother Wavelet и масштаб 64 для функции pywt.cwt, как в разделе 3.2. Кроме того, мы изменяем размер всех матриц коэффициентов (64x128) на квадратную форму (64x64). Этот шаг не является абсолютно необходимым, но сохраняет многие параметры и вычислительные ресурсы, и в то же время мы не должны терять слишком много деталей изображений (рисунок 8).

Во-вторых, мы все еще должны уточнить, как подавать результирующие матрицы коэффициентов CWT в CNN. Здесь лучший подход - разместить двухмерные коэффициенты (изображения) девяти сигналов друг на друге, как три канала - красный, зеленый и синий (RGB) цветного изображения. Соответственно, все зависимости между данными разных датчиков могут учитываться одновременно, что очень важно. Обратите внимание: если вы объедините коэффициенты CWT девяти различных сигналов в один массив (изображение) Numpy, у вас будут резкие изменения между ними. Это может привести к тому, что CNN сосредотачивается на границах из-за резких изменений вместо значимых шаблонов характеристик каждого сигнала. Соответственно, вам понадобится более глубокий CNN, чтобы игнорировать этот вид шума.

Для иллюстрации мы построим простую CNN с архитектурой LeNet-5 (рисунок 9) и внесем два улучшения:

  • Максимальное объединение вместо среднего пула, поскольку максимальное объединение может обеспечить лучшую производительность, когда вы хотите извлечь экстремальные функции (резкие изменения) и когда изображения имеют высокую плотность пикселей (из-за девяти каналов).
  • Функция активации выпрямленного линейного блока (ReLU) вместо гиперболического тангенса (Tanh) для решения проблемы исчезновения градиента, ускорения обучения и достижения лучшей производительности.

Обучим и оценим модель!

обучение…

оценка…

Accuracy: 94.91%

Неплохо! Точность почти 95% очень хороша для этого набора данных, потому что различие между похожими неподвижными (стояние, лежачие и сидящие) и аналогичными движениями (ходьба, ходьба по лестнице и внизу), выполняемыми разными людьми, непросто для простого человека. модель. Этот результат следует рассматривать как свидетельство того, что комбинация CWT и CNN является полезным вариантом для классификации нестационарных множественных временных рядов / сигналов. Я уверен, что за счет улучшений CNN (добавление регуляризации, большего количества нейронов и т.д.), другие архитектуры CNN, настройка гиперпараметров или другие размеры шкалы (с понижающей дискретизацией или без нее) могут быть достигнуты с лучшими результатами. Итак, попробуем другой подход.

3.4 Извлечение признаков с использованием анализа основных компонентов (PCA)

Хотя в предыдущем разделе мы использовали все двухмерные коэффициенты CWT, такие как изображения для CNN, на этот раз мы выберем наиболее важные коэффициенты для каждой шкалы, чтобы передать их классификатору. Поэтому мы применяем PCA для извлечения функций с наибольшим разбросом. Если вы не знакомы с логикой PCA, рекомендую вам этот источник.

Чтобы выбрать коэффициент с наибольшим разбросом по шкале, мы должны:

  1. примените функцию pywt.cwt, как раньше; а также
  2. примените PCA только для одного компонента, чтобы получить наиболее значимый коэффициент по шкале.

Таким образом, мы работаем с 64 характеристиками вместо 64 * 128 для каждого сигнала. Результирующий новый набор классов объектов имеет двумерную форму (n_samples, 576 (= 64 объекта * 9 сигналов).

Для классификации я выбрал XGBoost (e X treme G radient B oosting), который в настоящее время является одним из наиболее успешных классификаторов соревнований Kaggle. . XGBoost - это алгоритм машинного обучения на основе дерева решений с усилением градиента, разработанный для обеспечения скорости и производительности. Чтобы понять, почему XGBosst так хорошо работает, вы можете прочитать этот пост.

В контексте набора данных HAR важно выбрать цель «multi: softmax», чтобы можно было классифицировать более чем двоичные классы. Кроме того, мы применяем подвыборку - также известную как упаковка - для уменьшения дисперсии и, следовательно, переобучения. Таким образом, фракция подвыборки случайным образом выбирает обучающие выборки, которые используются для соответствия каждому дереву.

Accuracy: 92.67%

Точность почти 93% - тоже хороший результат. Очевидно, этот подход немного лучше разделяет неподвижные виды деятельности, такие как сидение и стояние, и, следовательно, хуже между различными видами ходьбы. Как и в случае с любой моделью машинного обучения, вы можете улучшить производительность за счет настройки гиперпараметров и, в этом случае, путем увеличения размера шкалы, чтобы получить больше входных функций. Классификатор XGBoost достаточно мощный, чтобы обрабатывать 576 входных функций. Большинство классификаторов могут независимо определять, какие функции полезны, а какие нет. Однако вам следует подумать о выборе наиболее важных функций при использовании гораздо более высокого масштаба.

4. Вывод

В этом посте вы увидели, почему и как использовать мощный CWT для нестационарных сигналов. Хорошие результаты CWT в сочетании с CNN или PCA плюс классификатор служат доказательством того, что эти подходы являются отличным выбором для классификации нескольких временных рядов для каждого события. Существует так много настраиваемых конфигураций различных алгоритмов и моделей, которые влияют на конечный результат, что невозможно назвать общепринятую процедуру для этой цели. По моему опыту, непрерывное (также дискретное) вейвлет-преобразование в основном превосходит другие методы обработки сигналов для нестационарных сигналов и точность классификации других типов моделей, таких как простые рекуррентные нейронные сети, использующие необработанные данные HAR.

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