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

ЭКГ пациента могут исследовать как врачи, так и техники. Заметив скорость и вариабельность сердечного ритма, а также индивидуальную морфологию формы волны сердечного ритма, они могут поставить диагноз.

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

P-волна: деполяризация предсердий, верхних камер сердца. Теперь кровь начинает течь из предсердий в желудочки, нижние камеры сердца.

Сегмент PR: представляет собой время задержки, необходимое для наполнения желудочков.

Комплекс QRS. Главное сокращение сердца, при котором желудочки деполяризуются.

Сегмент ST: время задержки между деполяризацией и реполяризацией желудочков.

T-волна: реполяризация желудочков.

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

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

В следующем разделе я опишу популярный алгоритм машинного обучения под названием «Анализ главных компонентов» и, кроме того, использую его для извлечения более четкого сигнала.

Анализ главных компонентов

Анализ главных компонентов или PCA - это метод линейного преобразования. Обычно используется для уменьшения размерности и сжатия, он имеет приложения в анализе данных, финансах и биоинформатике.

PCA определяет закономерности в данных, используя возможную корреляцию между функциями. Он находит вектор с максимальной дисперсией в наборе данных большой размерности и с его помощью формирует группу ортогональных векторов, каждый со следующей по величине дисперсией. Это новое подпространство имеет такие же или меньшие размеры, чем исходное. Алгоритм позволяет пользователю выбирать количество векторов k для использования. Мы можем думать о первом векторе в подпространстве как о самом «главном» компоненте, а следующие векторы - как о следующем по «главному».

Алгоритм PCA можно резюмировать в следующих этапах:

  1. Постройте ковариационную матрицу своего n -мерного набора данных X.
  2. Найдите собственное разложение ковариационной матрицы.
  3. Выберите k собственных векторов, которые соответствуют k наибольшим собственным значениям, k теперь будет новой размерностью преобразованного набора данных (k n).
  4. Постройте матрицу проекции W из верхних k собственных векторов.
  5. Преобразуйте n -мерный входной набор данных X, используя матрицу проекции W, чтобы получить новое преобразование.

В приведенном выше примере я сгенерировал набор данных сигналов PQRST из 30-минутной записи ЭКГ и запустил алгоритм PCA с 1, 20 и 100 компонентами. В примере показан исходный сигнал вместе с несколькими расширенными сигналами, где исходный сигнал был уменьшен до меньшего количества компонентов, а затем повторно спроецирован обратно в исходное сигнальное пространство. Несколько ключевых моментов:

  1. Каждый из этих сигналов представляет собой сумму векторов или направлений максимальной дисперсии, в которых формируется новое подпространство. В особом случае k = 1 сигнал представляет собой вектор, который имеет наибольшую дисперсию по отношению к набору данных. Визуально мы можем легко подтвердить это, сравнив его с исходным сигналом.
  2. В случае k = 100, когда в исходном наборе данных n = 200, сигнал очень хорошо сохраняется, почти идентичный даже с половиной размеров. Это прекрасно иллюстрирует применение PCA для сжатия информации.
  3. Мы можем использовать этот метод для извлечения основных форм волны нашей ЭКГ и устранения «нечеткости», мешающей базовой линии сигнала. Морфология волн и сегментов сигнала сохраняется, что позволяет технику или врачу правильно оценить состояние пациента.

Удаление шума с помощью PCA

Я использовал Python для сбора, предварительной обработки и удаления шума из сигнала. Для числовой предварительной обработки я использовал пакеты NumPy и SciPy, Sci-kit Learn для алгоритма PCA, а для извлечения и обработки сигналов ЭКГ я использовал пакеты WFDB-python и BioSPPy. Построение проводилось с использованием пакетов Matplotlib и Seaborn.

Для начала я взял 1-минутную ЭКГ из базы данных аритмий MIT-BIH вместе с местоположением каждого сердцебиения.

Набор данных создается путем взятия интервала между каждым комплексом QRS (называемого интервалом RR) и повторной выборки его до общего размера, который я выбрал в качестве общего среднего.

Затем я применил алгоритм PCA. После преобразования данных для удаления неглавных компонентов и обратного преобразования данных у нас остается приближенный сигнал. Заключительный этап обработки - это повторная выборка интервалов до их исходного размера и повторное объединение каждого интервала вместе.

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

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