我有一个由35个功能组成的矩阵,我需要减少这些功能 功能,因为我认为许多变量是依赖的。我承诺PCA 可以帮我做到这一点,所以使用matlab,我计算:
[coeff,score,latent] = pca(list_of_features)
我注意到“coeff”包含我理解的矩阵(如果我错了,请纠正我)左边有重要的列,第二列重要性较低等等。但是,我不清楚“ coeff ”上的哪一列与我原来的“ list_of_features ”中的哪一列相关,这样我才能知道哪个变量更重要。
答案 0 :(得分:1)
PCA没有给你原始特征的顺序关系(哪个特征比其他特征更“重要”),而是它给出了特征空间中的方向,根据方差排序,从高方差(第一方向,或主要成分)低方差。方向通常是原始要素的线性组合,因此您无法获得有关单个要素的信息。
您可以做的是抛弃方向(一个或多个),或者换句话说,将数据投射到由主要组件的子集跨越的子空间中。通常你想抛出低方差的方向,但这真的是一个选择,取决于你的应用程序。
假设您只想留下第一个k原则组件:
x = score(:,1:k) * coeff(:,1:k)';
但请注意,pca
使数据居中,因此您实际上可以获得数据中心版本的投影。