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. Какое из моих предположений неверно?