【发布时间】:2011-11-27 04:00:57
【问题描述】:
我正在使用 PCA 来找出我的数据集中的哪些变量是冗余的,因为它们与其他变量高度相关。我正在对先前使用 zscore 标准化的数据使用 princomp matlab 函数:
[coeff, PC, eigenvalues] = princomp(zscore(x))
我知道 eigenvalues 告诉我数据集有多少变化覆盖了每个主成分,而 coeff 告诉我第 i 个原始变量在第 j 个主成分(其中 i - 行,j - 列)。
所以我假设要找出原始数据集中哪些变量最重要,哪些变量最少,我应该将 coeff 矩阵乘以 eigenvalues - coeff 值表示每个组件有多少每个变量,eigenvalues 表示该组件的重要性。 所以这是我的完整代码:
[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 重要。 我的哪个假设是错误的?
【问题讨论】: