Извлечение классификационных функций из физиологических сигналов

В этом примере показано, как использовать функции midcross и dtw для извлечения функций из данных о сигнале походки. Сигналы походки используются для изучения шаблонов ходьбы пациентов с нейродегенеративным заболеванием. Сообщалось, что время между шагами отличается между здоровыми и больными индивидуумами. midcross предлагает удобный способ вычислить эти времена. Люди также изменяют скорость ходьбы с течением времени. dtw обеспечивает удобный способ количественного сравнения формы сигналов походки путем деформации, чтобы выровнять их во времени. Этот пример использует midcross для определения местоположения каждого шага в сигнале походки и dtw для вычисления расстояний между сегментами сигнала походки. Эти результаты исследуются как потенциальные признаки для классификации сигналов. Хотя этот пример характерен для сигналов походки, другие физиологические сигналы, такие как электрокардиограмма (ЭКГ) или фотоплетизмограмма (PPG), также могут быть проанализированы с помощью этих функций.

Измерение временных интервалов между шагами

Анализируемый набор данных содержит данные о силе, собранные во время ходьбы для пациентов с амиотрофическим латеральным склерозом (ALS) и контрольной группой. ALS - это болезнь, прославленная Лу Геригом, Стивеном Хокингом и 2014 годом 'Ice Bucket Challenge'.

Загрузите и постройте график первых 30 секунд данных сигнала походки для одного пациента.

helperGaitPlot('als1m');
xlim([0 30])

Figure contains an axes. The axes with title Gait Signal Data contains 2 objects of type line. These objects represent Left foot, Right foot.

Этот набор данных представляет силу, приложенную ногой к чувствительному к силе резистору. Сила измеряется в милливольтах. Каждая запись имеет длину в одну минуту и содержит отдельные каналы для левой и правой ноги субъекта. Каждый шаг в наборе данных характеризуется резким изменением силы, когда стопа ударяется и покидает землю. Использование midcross чтобы найти эти резкие изменения для пациента с БАС.

Использование midcross найти и построить график расположения каждого пересечения для левой ноги пациента с БАС. Выберите допуск 25%, чтобы убедиться, что каждый переход обнаружен.

Fs = 300;
gaitSignal = helperGaitImport('als1m');
midcross(gaitSignal(1,:),Fs,'tolerance',25);
xlim([0 30])
xlabel('Sample Number')
ylabel('mV')

Figure Mid Cross Plot contains an axes. The axes contains 9 objects of type line. These objects represent signal, mid cross, upper boundary, upper state, lower boundary, mid reference, lower state.

midcross правильно определяет пересечения. Теперь используйте его, чтобы вычислить время между шагами для группы из десяти пациентов. Пять пациентов являются контрольными субъектами, а пять пациентов имеют БАС. Используйте запись левой ноги для каждого пациента и исключить первые восемь переходов, чтобы удалить переходные процессы.

pnames = helperGaitImport();
for i = 1:10
  gaitSignal = helperGaitImport(pnames{i});
  IND2 = midcross(gaitSignal(1,:),Fs,'Tolerance',25);
  IST{i} = diff(IND2(9:2:end));   
  varIST(i) = var(IST{i});
end

Постройте график времени между шагами.

figure
hold on
for i = 1:5
  plot(1:length(IST{i}),IST{i},'.-r')
  plot(1:length(IST{i+5}),IST{i+5},'.-b')
end
xlabel('Stride Number')
ylabel('Time Between Strides (sec)')
legend('ALS','Control')

Figure contains an axes. The axes contains 10 objects of type line. These objects represent ALS, Control.

Отклонение времени между шагами выше в целом для пациентов с БАС.

Измерение подобия шаблонов ходьбы

Определив количество расстояния между шагами, продолжите анализировать форму данных сигнала походки независимо от этих межэтапных изменений. Сравните два сегмента сигнала, используя dtw. В идеале можно сравнить форму сигнала походки с течением времени по мере прогрессов лечения или заболевания. Здесь мы сравниваем два сегмента одной и той же записи, один сегмент, взятый в начале записи (sigsInitialLeft), а второй ближе к концу (sigsFinalLeft). Каждый сегмент содержит шесть шагов.

Загрузите сегменты данных сигнала походки.

load PNGaitSegments.mat

Пациент не ходит с одинаковой скоростью на протяжении всей записи. dtw обеспечивает меру расстояния между сегментами путем их деформации, чтобы выровнять их во времени. Сравнение двух сегментов с помощью dtw.

figure
dtw(sigsInitialLeft{1},sigsFinalLeft{1});
legend('Early segment','Later segment','location','southeast')

Figure contains 2 axes. Axes 1 with title Original Signals contains 2 objects of type line. Axes 2 with title Aligned Signals (Euclidean Distance: 11.834667) contains 2 objects of type line. These objects represent Early segment, Later segment.

Эти два сегмента выровнены по времени. Хотя скорость шага пациента, по-видимому, изменяется с течением времени, как видно на смещении исходных сигналов, dtw соответствует этим двум сегментам, позволяя выборкам каждого сегмента повторяться. Расстояние через dtw, наряду с отклонением времени между шагами, будут исследованы как функции для классификатора сигнала походки.

Создайте вектор функции для классификации сигналов

Предположим, что вы создаете классификатор, чтобы решить, является ли пациент здоровым, на основе сигналов походки. Исследуйте отклонение времени между шагами, feature1и расстояние через dtw между начальным и конечным сегментами сигнала, feature2, как классификационные функции.

Функция 1 ранее вычислялась с помощью midcross.

feature1 = varIST;

Функция 2 извлечения для пациентов с БАС и контрольной группы.

feature2 = zeros(10,1);
for i = 1:length(sigsInitialLeft)
  feature2(i) = dtw(sigsInitialLeft{i},sigsFinalLeft{i});
end

Постройте график функций для субъектов ALS и субъектов управления.

figure
plot(feature1(1:5),feature2(1:5),'r*',...
    feature1(6:10),feature2(6:10),'b+',...
    'MarkerSize',10,'LineWidth',1)
xlabel('Variance of Inter-Stride Times')
ylabel('Distance Between Segments')
legend('ALS','Control')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent ALS, Control.

Пациенты с ALS, по-видимому, имеют большое отклонение во времени между шагами, но меньшее расстояние через dtw между сегментами. Эти признаки дополняют друг друга и могут быть исследованы для использования в классификаторе, таком как Нейронная Сеть или Машина опорных векторов.

Заключения

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

Ссылки

[1] Гольдбергер, А. Л., Л. А. Н. Амарал, Л. Гласс, Ж. М. Хаусдорф, П. Ч. Иванов, Р. Г. Марк, Р. Г. Миетус, Г. Б. Муди, К.-К. Пэн и Х. Э. Стэнли. PhysioBank, PhysioToolkit и PhysioNet: компоненты нового исследовательского ресурса комплексных физиологических сигналов. Циркуляция. Том 101, № 23, 2000, pp. e215-e200.

См. также

|