Matlab: как найти, какие переменные из набора данных могут быть отброшены с использованием PCA в matlab?

Я использую PCA, чтобы выяснить, какие переменные в моем наборе данных являются избыточными и из-за их высокой корреляции с другими переменными. Я использую функцию princomp matlab для данных, ранее нормализованных с помощью zscore:

[coeff, PC, eigenvalues] = princomp(zscore(x))

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

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

[coeff, PC, eigenvalues] = princomp(zscore(x));
e = eigenvalues./sum(eigenvalues);
abs(coeff)/e

Но это на самом деле ничего не показывает - я попробовал это на следующем наборе, где переменная 1 полностью коррелирует с переменной 2 (v2 = v1 + 2):

     v1    v2    v3
     1     3     4
     2     4    -1
     4     6     9
     3     5    -2

но результаты моих расчетов были следующими:

v1 0.5525
v2 0.5525
v3 0.5264

и это на самом деле ничего не показывает. Я ожидаю, что результат для переменной 2 покажет, что он гораздо менее важен, чем v1 или v3. Какое из моих предположений неверно?

Ответы на вопрос(1)

Ваш ответ на вопрос