exponenta event banner

Многомасштабный анализ основных компонентов

Цель этого примера - показать особенности многомасштабного анализа главных компонентов (PCA), представленные в вейвлет- Toolbox™.

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

Загрузить многомерный сигнал

Load the multivariate signal by typing the following at the MATLAB(R) prompt:

 load ex4mwden
 whos
  Name           Size            Bytes  Class     Attributes

  covar          4x4               128  double              
  x           1024x4             32768  double              
  x_orig      1024x4             32768  double              

Как правило, только матрица данных x доступен. Здесь мы также имеем истинную матрицу ковариации шума covar и исходные сигналы x_orig. Эти сигналы являются шумными вариантами простых комбинаций двух исходных сигналов. Первый сигнал является «Blocks», который является нерегулярным, а второй - «Sine», который является регулярным, за исключением приблизительно времени 750. Два других сигнала представляют собой сумму и разность двух исходных сигналов соответственно. Многомерный гауссовский белый шум, демонстрирующий сильную пространственную корреляцию, добавляется к результирующим четырем сигналам, которые производят наблюдаемые данные, хранящиеся в x.

Выполнение простого многомасштабного PCA

Multiscale PCA объединяет нецентрированную PCA на приближениях и деталях в вейвлет-области и конечной PCA. На каждом уровне выбираются наиболее важные основные компоненты.

Сначала задайте вейвлет-параметры:

level = 5;
wname = 'sym4';

Затем автоматически выберите количество сохраненных главных компонентов с помощью правила Кайзера, которое сохраняет компоненты, связанные с собственными значениями, превышающими среднее значение всех собственных значений, путем ввода:

npc = 'kais';

Наконец, выполните многомасштабное PCA:

[x_sim, qual, npc] = wmspca(x ,level, wname, npc);

Отображение исходных и упрощенных сигналов

Для отображения исходного и упрощенного типа сигналов:

kp = 0;
for i = 1:4 
    subplot(4,2,kp+1), plot(x (:,i)); axis tight; 
    title(['Original signal ',num2str(i)])
    subplot(4,2,kp+2), plot(x_sim(:,i)); axis tight;
    title(['Simplified signal ',num2str(i)])
    kp = kp + 2;
end

Figure contains 8 axes. Axes 1 with title Original signal 1 contains an object of type line. Axes 2 with title Simplified signal 1 contains an object of type line. Axes 3 with title Original signal 2 contains an object of type line. Axes 4 with title Simplified signal 2 contains an object of type line. Axes 5 with title Original signal 3 contains an object of type line. Axes 6 with title Simplified signal 3 contains an object of type line. Axes 7 with title Original signal 4 contains an object of type line. Axes 8 with title Simplified signal 4 contains an object of type line.

Мы видим, что результаты с точки зрения сжатия хорошие. Проценты, отражающие качество реконструкции столбцов, задаваемые относительными среднеквадратическими ошибками, близки к 100%.

qual
qual = 1×4

   98.0545   93.2807   97.1172   98.8603

Улучшение первого результата за счет сохранения меньшего количества основных компонентов

Мы можем улучшить результаты, подавляя шум, потому что детали на уровнях 1-3 состоят по существу из шума с небольшими вкладами сигнала. Удаление шума приводит к грубому, но эффективному, денезирующему эффекту.

Выходной аргумент npc - количество сохраненных главных компонентов, выбранных по правилу Кайзера:

npc
npc = 1×7

     1     1     1     1     1     2     2

Для d от 1 до 5, npc(d) - количество сохраненных нецентрированных основных компонентов (ПК) для получения подробной информации на уровне d. npc(6) - количество сохраненных нецентрированных ПК для аппроксимаций на уровне 5, и npc (7) - количество удерживаемых ПК для окончательного PCA после вейвлет-реконструкции. Как и ожидалось, правило сохраняет два основных компонента, как для аппроксимаций PCA, так и для конечного PCA, но один главный компонент сохраняется для подробной информации на каждом уровне.

Чтобы подавить сведения на уровнях 1-3, обновите npc аргумент следующим образом:

npc(1:3) = zeros(1,3);
npc
npc = 1×7

     0     0     0     1     1     2     2

Затем снова выполните многомасштабный PCA, набрав:

[x_sim, qual, npc] = wmspca(x, level, wname, npc);

Отображение исходных и окончательных упрощенных сигналов

Для отображения исходного и окончательного упрощенного типа сигналов:

kp = 0;
for i = 1:4 
    subplot(4,2,kp+1), plot(x (:,i)); axis tight;
    title(['Original signal ',num2str(i)])
    subplot(4,2,kp+2), plot(x_sim(:,i)); axis tight; 
    title(['Simplified signal ',num2str(i)])
    kp = kp + 2;
end

Figure contains 8 axes. Axes 1 with title Original signal 1 contains an object of type line. Axes 2 with title Simplified signal 1 contains an object of type line. Axes 3 with title Original signal 2 contains an object of type line. Axes 4 with title Simplified signal 2 contains an object of type line. Axes 5 with title Original signal 3 contains an object of type line. Axes 6 with title Simplified signal 3 contains an object of type line. Axes 7 with title Original signal 4 contains an object of type line. Axes 8 with title Simplified signal 4 contains an object of type line.

Как мы можем видеть выше, результаты улучшаются.

Дополнительные сведения об анализе многомасштабных основных компонентов

Подробнее о многомасштабном PCA, включая некоторые теории, симуляции и реальные примеры, можно найти в следующей ссылке:

Амингхафари, М.; Чезе, Н.; Погги, Дж-М. (2006), «Многофакторное деноизирование с использованием вейвлетов и анализа основных компонентов», Computational Statistics & Data Analysis, 50, pp. 2381-2398.